2 ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
3 ## by inline-source v2014-01-03.01
5 # libtool (GNU libtool) 2.4.6
6 # Provide generalized library-building support services.
7 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
9 # Copyright (C) 1996-2015 Free Software Foundation, Inc.
10 # This is free software; see the source for copying conditions. There is NO
11 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 # GNU Libtool is free software; you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation; either version 2 of the License, or
16 # (at your option) any later version.
18 # As a special exception to the GNU General Public License,
19 # if you distribute this file as part of a program or library that
20 # is built using GNU Libtool, you may include this file under the
21 # same distribution terms that you use for the rest of that program.
23 # GNU Libtool is distributed in the hope that it will be useful, but
24 # WITHOUT ANY WARRANTY; without even the implied warranty of
25 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 # General Public License for more details.
28 # You should have received a copy of the GNU General Public License
29 # along with this program. If not, see <http://www.gnu.org/licenses/>.
35 package_revision
=2.4.6
42 # Run './libtool --help' for help with using this script from the
46 ## ------------------------------- ##
47 ## User overridable command paths. ##
48 ## ------------------------------- ##
50 # After configure completes, it has a better idea of some of the
51 # shell tools we need than the defaults used by the functions shared
52 # with bootstrap, so set those here where they can still be over-
53 # ridden by the user, but otherwise take precedence.
55 : ${AUTOCONF="autoconf"}
56 : ${AUTOMAKE="automake"}
59 ## -------------------------- ##
60 ## Source external libraries. ##
61 ## -------------------------- ##
63 # Much of our low-level functionality needs to be sourced from external
64 # libraries, which are installed to $pkgauxdir.
66 # Set a version string for this script.
67 scriptversion
=2015-10-04.22
; # UTC
69 # General shell script boiler plate, and helper functions.
70 # Written by Gary V. Vaughan, 2004
72 # Copyright (C) 2004-2015 Free Software Foundation, Inc.
73 # This is free software; see the source for copying conditions. There is NO
74 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
76 # This program is free software; you can redistribute it and/or modify
77 # it under the terms of the GNU General Public License as published by
78 # the Free Software Foundation; either version 3 of the License, or
79 # (at your option) any later version.
81 # As a special exception to the GNU General Public License, if you distribute
82 # this file as part of a program or library that is built using GNU Libtool,
83 # you may include this file under the same distribution terms that you use
84 # for the rest of that program.
86 # This program is distributed in the hope that it will be useful,
87 # but WITHOUT ANY WARRANTY; without even the implied warranty of
88 # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
89 # General Public License for more details.
91 # You should have received a copy of the GNU General Public License
92 # along with this program. If not, see <http://www.gnu.org/licenses/>.
94 # Please report bugs or propose patches to gary@gnu.org.
101 # Evaluate this file near the top of your script to gain access to
102 # the functions and variables defined here:
104 # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
106 # If you need to override any of the default environment variable
107 # settings, do that before evaluating this file.
110 ## -------------------- ##
111 ## Shell normalisation. ##
112 ## -------------------- ##
114 # Some shells need a little help to be as Bourne compatible as possible.
115 # Before doing anything else, make sure all that help has been provided!
117 DUALCASE
=1; export DUALCASE
# for MKS sh
118 if test -n "${ZSH_VERSION+set}" && (emulate sh
) >/dev
/null
2>&1; then :
121 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
122 # is contrary to our usage. Disable this feature.
123 alias -g '${1+"$@"}'='"$@"'
126 case `(set -o) 2>/dev/null` in *posix
*) set -o posix
;; esac
129 # NLS nuisances: We save the old values in case they are required later.
132 for _G_var
in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
134 eval "if test set = \"\${$_G_var+set}\"; then
135 save_$_G_var=\$$_G_var
138 _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
139 _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
144 (unset CDPATH
) >/dev
/null
2>&1 && unset CDPATH
146 # Make sure IFS has a sensible default
152 # There are apparently some retarded systems that use ';' as a PATH separator!
153 if test "${PATH_SEPARATOR+set}" != set; then
155 (PATH
='/bin;/bin'; FPATH
=$PATH; sh
-c :) >/dev
/null
2>&1 && {
156 (PATH
='/bin:/bin'; FPATH
=$PATH; sh
-c :) >/dev
/null
2>&1 ||
163 ## ------------------------- ##
164 ## Locate command utilities. ##
165 ## ------------------------- ##
168 # func_executable_p FILE
169 # ----------------------
170 # Check that FILE is an executable regular file.
173 test -f "$1" && test -x "$1"
177 # func_path_progs PROGS_LIST CHECK_FUNC [PATH]
178 # --------------------------------------------
179 # Search for either a program that responds to --version with output
180 # containing "GNU", or else returned by CHECK_FUNC otherwise, by
181 # trying all the directories in PATH with each of the elements of
184 # CHECK_FUNC should accept the path to a candidate program, and
185 # set $func_check_prog_result if it truncates its output less than
186 # $_G_path_prog_max characters.
194 _G_path_prog_found
=false
195 _G_save_IFS
=$IFS; IFS
=${PATH_SEPARATOR-:}
196 for _G_dir
in $_G_PATH; do
198 test -z "$_G_dir" && _G_dir
=.
199 for _G_prog_name
in $_G_progs_list; do
200 for _exeext
in '' .EXE
; do
201 _G_path_prog
=$_G_dir/$_G_prog_name$_exeext
202 func_executable_p
"$_G_path_prog" ||
continue
203 case `"$_G_path_prog" --version 2>&1` in
204 *GNU
*) func_path_progs_result
=$_G_path_prog _G_path_prog_found
=: ;;
205 *) $_G_check_func $_G_path_prog
206 func_path_progs_result
=$func_check_prog_result
209 $_G_path_prog_found && break 3
214 test -z "$func_path_progs_result" && {
215 echo "no acceptable sed could be found in \$PATH" >&2
221 # We want to be able to use the functions in this file before configure
222 # has figured out where the best binaries are kept, which means we have
223 # to search for them ourselves - except when the results are already set
224 # where we skip the searches.
226 # Unless the user overrides by setting SED, search the path for either GNU
227 # sed, or the sed that truncates its output the least.
229 _G_sed_script
=s
/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
/
230 for _G_i
in 1 2 3 4 5 6 7; do
231 _G_sed_script
=$_G_sed_script$nl$_G_sed_script
233 echo "$_G_sed_script" 2>/dev
/null |
sed 99q
>conftest.
sed
236 func_check_prog_sed
()
241 printf 0123456789 >conftest.
in
244 cat conftest.
in conftest.
in >conftest.tmp
245 mv conftest.tmp conftest.
in
246 cp conftest.
in conftest.
nl
247 echo '' >> conftest.
nl
248 "$_G_path_prog" -f conftest.
sed <conftest.
nl >conftest.out
2>/dev
/null ||
break
249 diff conftest.out conftest.
nl >/dev
/null
2>&1 ||
break
250 _G_count
=`expr $_G_count + 1`
251 if test "$_G_count" -gt "$_G_path_prog_max"; then
252 # Best one so far, save it but keep looking for a better one
253 func_check_prog_result
=$_G_path_prog
254 _G_path_prog_max
=$_G_count
256 # 10*(2^10) chars as input seems more than enough
257 test 10 -lt "$_G_count" && break
259 rm -f conftest.
in conftest.tmp conftest.
nl conftest.out
262 func_path_progs
"sed gsed" func_check_prog_sed
$PATH:/usr
/xpg
4/bin
264 SED
=$func_path_progs_result
268 # Unless the user overrides by setting GREP, search the path for either GNU
269 # grep, or the grep that truncates its output the least.
271 func_check_prog_grep
()
277 printf 0123456789 >conftest.
in
280 cat conftest.
in conftest.
in >conftest.tmp
281 mv conftest.tmp conftest.
in
282 cp conftest.
in conftest.
nl
283 echo 'GREP' >> conftest.
nl
284 "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.
nl >conftest.out
2>/dev
/null ||
break
285 diff conftest.out conftest.
nl >/dev
/null
2>&1 ||
break
286 _G_count
=`expr $_G_count + 1`
287 if test "$_G_count" -gt "$_G_path_prog_max"; then
288 # Best one so far, save it but keep looking for a better one
289 func_check_prog_result
=$_G_path_prog
290 _G_path_prog_max
=$_G_count
292 # 10*(2^10) chars as input seems more than enough
293 test 10 -lt "$_G_count" && break
295 rm -f conftest.
in conftest.tmp conftest.
nl conftest.out
298 func_path_progs
"grep ggrep" func_check_prog_grep
$PATH:/usr
/xpg
4/bin
299 GREP
=$func_path_progs_result
303 ## ------------------------------- ##
304 ## User overridable command paths. ##
305 ## ------------------------------- ##
307 # All uppercase variable names are used for environment variables. These
308 # variables can be overridden by the user before calling a script that
309 # uses them if a suitable command of that name is not already available
310 # in the command search PATH.
313 : ${ECHO="printf %s\n"}
314 : ${EGREP="$GREP -E"}
315 : ${FGREP="$GREP -F"}
321 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
324 ## -------------------- ##
325 ## Useful sed snippets. ##
326 ## -------------------- ##
328 sed_dirname
='s|/[^/]*$||'
329 sed_basename
='s|^.*/||'
331 # Sed substitution that helps us do robust quoting. It backslashifies
332 # metacharacters that are still active within double-quoted strings.
333 sed_quote_subst
='s|\([`"$\\]\)|\\\1|g'
335 # Same as above, but do not quote variable references.
336 sed_double_quote_subst
='s/\(["`\\]\)/\\\1/g'
338 # Sed substitution that turns a string into a regex matching for the
340 sed_make_literal_regex
='s|[].[^$\\*\/]|\\&|g'
342 # Sed substitution that converts a w32 file name or path
343 # that contains forward slashes, into one that contains
344 # (escaped) backslashes. A very naive implementation.
345 sed_naive_backslashify
='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
347 # Re-'\' parameter expansions in output of sed_double_quote_subst that
348 # were '\'-ed in input to the same. If an odd number of '\' preceded a
349 # '$' in input to sed_double_quote_subst, that '$' was protected from
350 # expansion. Since each input '\' is now two '\'s, look for any number
351 # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'.
356 sed_double_backslash
="\
359 s/^$_G_bs2$_G_dollar/$_G_bs&/
360 s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
364 ## ----------------- ##
365 ## Global variables. ##
366 ## ----------------- ##
368 # Except for the global variables explicitly listed below, the following
369 # functions in the '^func_' namespace, and the '^require_' namespace
370 # variables initialised in the 'Resource management' section, sourcing
371 # this file will not pollute your global namespace with anything
372 # else. There's no portable way to scope variables in Bourne shell
373 # though, so actually running these functions will sometimes place
374 # results into a variable named after the function, and often use
375 # temporary variables in the '^_G_' namespace. If you are careful to
376 # avoid using those namespaces casually in your sourcing script, things
377 # should continue to work as you expect. And, of course, you can freely
378 # overwrite any of the functions or variables defined here before
379 # calling anything to customize them.
383 EXIT_MISMATCH
=63 # $? = 63 is used to indicate version mismatch to missing.
384 EXIT_SKIP
=77 # $? = 77 is used to indicate a skipped test to automake.
386 # Allow overriding, eg assuming that you follow the convention of
387 # putting '$debug_cmd' at the start of all your functions, you can get
388 # bash to show function call trace with:
390 # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
391 debug_cmd
=${debug_cmd-":"}
394 # By convention, finish your script with:
398 # so that you can set exit_status to non-zero if you want to indicate
399 # something went wrong during execution without actually bailing out at
400 # the point of failure.
401 exit_status
=$EXIT_SUCCESS
403 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
404 # is ksh but when the shell is invoked as "sh" and the current value of
405 # the _XPG environment variable is not equal to 1 (one), the special
406 # positional parameter $0, within a function call, is the name of the
410 # The name of this program.
411 progname
=`$ECHO "$progpath" |$SED "$sed_basename"`
413 # Make sure we have an absolute progpath for reexecution:
415 [\\/]*|
[A-Za-z
]:\\*) ;;
417 progdir
=`$ECHO "$progpath" |$SED "$sed_dirname"`
418 progdir
=`cd "$progdir" && pwd`
419 progpath
=$progdir/$progname
423 IFS
=${PATH_SEPARATOR-:}
424 for progdir
in $PATH; do
426 test -x "$progdir/$progname" && break
429 test -n "$progdir" || progdir
=`pwd`
430 progpath
=$progdir/$progname
435 ## ----------------- ##
436 ## Standard options. ##
437 ## ----------------- ##
439 # The following options affect the operation of the functions defined
440 # below, and should be set appropriately depending on run-time para-
441 # meters passed on the command line.
447 # Categories 'all' and 'none' are always available. Append any others
448 # you will pass as the first argument to func_warning from your own
452 # By default, display warnings according to 'opt_warning_types'. Set
453 # 'warning_func' to ':' to elide all warnings, or func_fatal_error to
454 # treat the next displayed warning as a fatal error.
455 warning_func
=func_warn_and_continue
457 # Set to 'all' to display all warnings, 'none' to suppress all
458 # warnings, or a space delimited list of some subset of
459 # 'warning_categories' to display only the listed warnings.
460 opt_warning_types
=all
463 ## -------------------- ##
464 ## Resource management. ##
465 ## -------------------- ##
467 # This section contains definitions for functions that each ensure a
468 # particular resource (a file, or a non-empty configuration variable for
469 # example) is available, and if appropriate to extract default values
470 # from pertinent package files. Call them using their associated
471 # 'require_*' variable to ensure that they are executed, at most, once.
473 # It's entirely deliberate that calling these functions can set
474 # variables that don't obey the namespace limitations obeyed by the rest
475 # of this file, in order that that they be as useful as possible to
479 # require_term_colors
480 # -------------------
481 # Allow display of bold text on terminals that support it.
482 require_term_colors
=func_require_term_colors
483 func_require_term_colors
()
488 # COLORTERM and USE_ANSI_COLORS environment variables take
489 # precedence, because most terminfo databases neglect to describe
490 # whether color sequences are supported.
491 test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
493 if test 1 = "$USE_ANSI_COLORS"; then
494 # Standard ANSI escape sequences
496 tc_bold
='\e[1m'; tc_standout
='\e[7m'
497 tc_red
='\e[31m'; tc_green
='\e[32m'
498 tc_blue
='\e[34m'; tc_cyan
='\e[36m'
500 # Otherwise trust the terminfo database after all.
501 test -n "`tput sgr0 2>/dev/null`" && {
503 test -n "`tput bold 2>/dev/null`" && tc_bold
=`tput bold`
505 test -n "`tput smso 2>/dev/null`" && tc_standout
=`tput smso`
506 test -n "`tput setaf 1 2>/dev/null`" && tc_red
=`tput setaf 1`
507 test -n "`tput setaf 2 2>/dev/null`" && tc_green
=`tput setaf 2`
508 test -n "`tput setaf 4 2>/dev/null`" && tc_blue
=`tput setaf 4`
509 test -n "`tput setaf 5 2>/dev/null`" && tc_cyan
=`tput setaf 5`
514 require_term_colors
=:
518 ## ----------------- ##
519 ## Function library. ##
520 ## ----------------- ##
522 # This section contains a variety of useful functions to call in your
523 # scripts. Take note of the portable wrappers for features provided by
524 # some modern shells, which will fall back to slower equivalents on
525 # less featureful shells.
528 # func_append VAR VALUE
529 # ---------------------
530 # Append VALUE onto the existing contents of VAR.
532 # We should try to minimise forks, especially on Windows where they are
533 # unreasonably slow, so skip the feature probes when bash or zsh are
535 if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
536 : ${_G_HAVE_ARITH_OP="yes"}
537 : ${_G_HAVE_XSI_OPS="yes"}
538 # The += operator was introduced in bash 3.1
539 case $BASH_VERSION in
540 [12].
* |
3.0 |
3.0*) ;;
542 : ${_G_HAVE_PLUSEQ_OP="yes"}
548 # Can be empty, in which case the shell is probed, "yes" if += is
549 # useable or anything else if it does not work.
550 test -z "$_G_HAVE_PLUSEQ_OP" \
551 && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev
/null \
552 && _G_HAVE_PLUSEQ_OP
=yes
554 if test yes = "$_G_HAVE_PLUSEQ_OP"
556 # This is an XSI compatible shell, allowing a faster implementation...
564 # ...otherwise fall back to using expr, which is often a shell builtin.
574 # func_append_quoted VAR VALUE
575 # ----------------------------
576 # Quote VALUE and append to the end of shell variable VAR, separated
578 if test yes = "$_G_HAVE_PLUSEQ_OP"; then
579 eval 'func_append_quoted ()
583 func_quote_for_eval "$2"
584 eval "$1+=\\ \$func_quote_for_eval_result"
587 func_append_quoted
()
591 func_quote_for_eval
"$2"
592 eval "$1=\$$1\\ \$func_quote_for_eval_result"
597 # func_append_uniq VAR VALUE
598 # --------------------------
599 # Append unique VALUE onto the existing contents of VAR, assuming
600 # entries are delimited by the first character of VALUE. For example:
602 # func_append_uniq options " --another-option option-argument"
604 # will only append to $options if " --another-option option-argument "
605 # is not already present somewhere in $options already (note spaces at
606 # each end implied by leading space in second argument).
611 eval _G_current_value
='`$ECHO $'$1'`'
612 _G_delim
=`expr "$2" : '\(.\)'`
614 case $_G_delim$_G_current_value$_G_delim in
616 *) func_append
"$@" ;;
623 # Set func_arith_result to the result of evaluating TERMs.
624 test -z "$_G_HAVE_ARITH_OP" \
625 && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev
/null \
626 && _G_HAVE_ARITH_OP
=yes
628 if test yes = "$_G_HAVE_ARITH_OP"; then
633 func_arith_result=$(( $* ))
640 func_arith_result
=`expr "$@"`
647 # Set func_basename_result to FILE with everything up to and including
648 # the last / stripped.
649 if test yes = "$_G_HAVE_XSI_OPS"; then
650 # If this shell supports suffix pattern removal, then use it to avoid
651 # forking. Hide the definitions single quotes in case the shell chokes
652 # on unsupported syntax...
653 _b
='func_basename_result=${1##*/}'
655 */*) func_dirname_result=${1%/*}$2 ;;
656 * ) func_dirname_result=$3 ;;
660 # ...otherwise fall back to using sed.
661 _b
='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
662 _d
='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"`
663 if test "X$func_dirname_result" = "X$1"; then
664 func_dirname_result=$3
666 func_append func_dirname_result "$2"
670 eval 'func_basename ()
678 # func_dirname FILE APPEND NONDIR_REPLACEMENT
679 # -------------------------------------------
680 # Compute the dirname of FILE. If nonempty, add APPEND to the result,
681 # otherwise set result to NONDIR_REPLACEMENT.
682 eval 'func_dirname ()
690 # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
691 # --------------------------------------------------------
692 # Perform func_basename and func_dirname in a single function
694 # dirname: Compute the dirname of FILE. If nonempty,
695 # add APPEND to the result, otherwise set result
696 # to NONDIR_REPLACEMENT.
697 # value returned in "$func_dirname_result"
698 # basename: Compute filename of FILE.
699 # value retuned in "$func_basename_result"
700 # For efficiency, we do not delegate to the functions above but instead
701 # duplicate the functionality here.
702 eval 'func_dirname_and_basename ()
713 # Echo program name prefixed message.
722 for _G_line
in $_G_message; do
724 $ECHO "$progname: $_G_line"
730 # func_echo_all ARG...
731 # --------------------
732 # Invoke $ECHO with all args, space-separated.
739 # func_echo_infix_1 INFIX ARG...
740 # ------------------------------
741 # Echo program name, followed by INFIX on the first line, with any
742 # additional lines not showing INFIX.
751 _G_prefix
="$progname: $_G_infix: "
754 # Strip color escape sequences before counting printable length
755 for _G_tc
in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
757 test -n "$_G_tc" && {
758 _G_esc_tc
=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
759 _G_indent
=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
762 _G_indent
="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes
764 func_echo_infix_1_IFS
=$IFS
766 for _G_line
in $_G_message; do
767 IFS
=$func_echo_infix_1_IFS
768 $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
771 IFS
=$func_echo_infix_1_IFS
777 # Echo program name prefixed message to standard error.
784 func_echo_infix_1
" $tc_standout${tc_red}error$tc_reset" "$*" >&2
788 # func_fatal_error ARG...
789 # -----------------------
790 # Echo program name prefixed message to standard error, and exit.
800 # func_grep EXPRESSION FILENAME
801 # -----------------------------
802 # Check whether EXPRESSION matches any line of FILENAME, without output.
807 $GREP "$1" "$2" >/dev
/null
2>&1
813 # Set func_len_result to the length of STRING. STRING may not
814 # start with a hyphen.
815 test -z "$_G_HAVE_XSI_OPS" \
817 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev
/null \
818 && _G_HAVE_XSI_OPS
=yes
820 if test yes = "$_G_HAVE_XSI_OPS"; then
825 func_len_result=${#1}
832 func_len_result
=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
837 # func_mkdir_p DIRECTORY-PATH
838 # ---------------------------
839 # Make sure the entire path to DIRECTORY-PATH is available.
847 if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
849 # Protect directory names starting with '-'
850 case $_G_directory_path in
851 -*) _G_directory_path
=.
/$_G_directory_path ;;
854 # While some portion of DIR does not yet exist...
855 while test ! -d "$_G_directory_path"; do
856 # ...make a list in topmost first order. Use a colon delimited
857 # list incase some portion of path contains whitespace.
858 _G_dir_list
=$_G_directory_path:$_G_dir_list
860 # If the last portion added has no slash in it, the list is done
861 case $_G_directory_path in */*) ;; *) break ;; esac
863 # ...otherwise throw away the child directory and loop
864 _G_directory_path
=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
866 _G_dir_list
=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
868 func_mkdir_p_IFS
=$IFS; IFS
=:
869 for _G_dir
in $_G_dir_list; do
870 IFS
=$func_mkdir_p_IFS
871 # mkdir can fail with a 'File exist' error if two processes
872 # try to create one of the directories concurrently. Don't
874 $MKDIR "$_G_dir" 2>/dev
/null ||
:
876 IFS
=$func_mkdir_p_IFS
878 # Bail out if we (or some other process) failed to create a directory.
879 test -d "$_G_directory_path" || \
880 func_fatal_error
"Failed to create '$1'"
885 # func_mktempdir [BASENAME]
886 # -------------------------
887 # Make a temporary directory that won't clash with other running
888 # libtool processes, and avoids race conditions if possible. If
889 # given, BASENAME is the basename for that directory.
894 _G_template
=${TMPDIR-/tmp}/${1-$progname}
896 if test : = "$opt_dry_run"; then
897 # Return a directory name, but don't create it in dry-run mode
898 _G_tmpdir
=$_G_template-$$
901 # If mktemp works, use that first and foremost
902 _G_tmpdir
=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
904 if test ! -d "$_G_tmpdir"; then
905 # Failing that, at least try and use $RANDOM to avoid a race
906 _G_tmpdir
=$_G_template-${RANDOM-0}$$
908 func_mktempdir_umask
=`umask`
911 umask $func_mktempdir_umask
914 # If we're not in dry-run mode, bomb out on failure
915 test -d "$_G_tmpdir" || \
916 func_fatal_error
"cannot create temporary directory '$_G_tmpdir'"
923 # func_normal_abspath PATH
924 # ------------------------
925 # Remove doubled-up and trailing slashes, "." path components,
926 # and cancel out any ".." path components in PATH after making
927 # it an absolute path.
928 func_normal_abspath
()
932 # These SED scripts presuppose an absolute path with a trailing slash.
933 _G_pathcar
='s|^/\([^/]*\).*$|\1|'
934 _G_pathcdr
='s|^/[^/]*||'
935 _G_removedotparts
=':dotsl
939 _G_collapseslashes
='s|/\{1,\}|/|g'
940 _G_finalslash
='s|/*$|/|'
942 # Start from root dir and reassemble the path.
943 func_normal_abspath_result
=
944 func_normal_abspath_tpath
=$1
945 func_normal_abspath_altnamespace
=
946 case $func_normal_abspath_tpath in
948 # Empty path, that just means $cwd.
949 func_stripname
'' '/' "`pwd`"
950 func_normal_abspath_result
=$func_stripname_result
953 # The next three entries are used to spot a run of precisely
954 # two leading slashes without using negated character classes;
955 # we take advantage of case's first-match behaviour.
957 # Unusual form of absolute path, do nothing.
960 # Not necessarily an ordinary path; POSIX reserves leading '//'
961 # and for example Cygwin uses it to access remote file shares
962 # over CIFS/SMB, so we conserve a leading double slash if found.
963 func_normal_abspath_altnamespace
=/
966 # Absolute path, do nothing.
969 # Relative path, prepend $cwd.
970 func_normal_abspath_tpath
=`pwd`/$func_normal_abspath_tpath
974 # Cancel out all the simple stuff to save iterations. We also want
975 # the path to end with a slash for ease of parsing, so make sure
976 # there is one (and only one) here.
977 func_normal_abspath_tpath
=`$ECHO "$func_normal_abspath_tpath" | $SED \
978 -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
980 # Processed it all yet?
981 if test / = "$func_normal_abspath_tpath"; then
982 # If we ascended to the root using ".." the result may be empty now.
983 if test -z "$func_normal_abspath_result"; then
984 func_normal_abspath_result
=/
988 func_normal_abspath_tcomponent
=`$ECHO "$func_normal_abspath_tpath" | $SED \
990 func_normal_abspath_tpath
=`$ECHO "$func_normal_abspath_tpath" | $SED \
992 # Figure out what to do with it
993 case $func_normal_abspath_tcomponent in
995 # Trailing empty path component, ignore it.
998 # Parent dir; strip last assembled component from result.
999 func_dirname
"$func_normal_abspath_result"
1000 func_normal_abspath_result
=$func_dirname_result
1003 # Actual path component, append it.
1004 func_append func_normal_abspath_result
"/$func_normal_abspath_tcomponent"
1008 # Restore leading double-slash if one was found on entry.
1009 func_normal_abspath_result
=$func_normal_abspath_altnamespace$func_normal_abspath_result
1013 # func_notquiet ARG...
1014 # --------------------
1015 # Echo program name prefixed message only when not in quiet mode.
1020 $opt_quiet || func_echo
${1+"$@"}
1022 # A bug in bash halts the script if the last line of a function
1023 # fails when set -e is in force, so we need another command to
1029 # func_relative_path SRCDIR DSTDIR
1030 # --------------------------------
1031 # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
1032 func_relative_path
()
1036 func_relative_path_result
=
1037 func_normal_abspath
"$1"
1038 func_relative_path_tlibdir
=$func_normal_abspath_result
1039 func_normal_abspath
"$2"
1040 func_relative_path_tbindir
=$func_normal_abspath_result
1042 # Ascend the tree starting from libdir
1044 # check if we have found a prefix of bindir
1045 case $func_relative_path_tbindir in
1046 $func_relative_path_tlibdir)
1047 # found an exact match
1048 func_relative_path_tcancelled
=
1051 $func_relative_path_tlibdir*)
1052 # found a matching prefix
1053 func_stripname
"$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
1054 func_relative_path_tcancelled
=$func_stripname_result
1055 if test -z "$func_relative_path_result"; then
1056 func_relative_path_result
=.
1061 func_dirname
$func_relative_path_tlibdir
1062 func_relative_path_tlibdir
=$func_dirname_result
1063 if test -z "$func_relative_path_tlibdir"; then
1064 # Have to descend all the way to the root!
1065 func_relative_path_result
=..
/$func_relative_path_result
1066 func_relative_path_tcancelled
=$func_relative_path_tbindir
1069 func_relative_path_result
=..
/$func_relative_path_result
1074 # Now calculate path; take care to avoid doubling-up slashes.
1075 func_stripname
'' '/' "$func_relative_path_result"
1076 func_relative_path_result
=$func_stripname_result
1077 func_stripname
'/' '/' "$func_relative_path_tcancelled"
1078 if test -n "$func_stripname_result"; then
1079 func_append func_relative_path_result
"/$func_stripname_result"
1082 # Normalisation. If bindir is libdir, return '.' else relative path.
1083 if test -n "$func_relative_path_result"; then
1084 func_stripname
'./' '' "$func_relative_path_result"
1085 func_relative_path_result
=$func_stripname_result
1088 test -n "$func_relative_path_result" || func_relative_path_result
=.
1096 # Aesthetically quote one ARG, store the result into $func_quote_result. Note
1097 # that we keep attention to performance here (so far O(N) complexity as long as
1098 # func_append is O(1)).
1103 func_quote_result
=$1
1105 case $func_quote_result in
1107 case $func_quote_result in
1109 func_quote_result=`$ECHO "$func_quote_result" |
$SED "$sed_quote_subst"`
1114 func_quote_old_IFS=$IFS
1115 for _G_char in '\' '`' '"' '$'
1117 # STATE($1) PREV($2) SEPARATOR($3)
1119 func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
1121 for _G_part in $func_quote_result
1125 func_append func_quote_result "$3$2"
1126 set quote "$_G_part" "\\$_G_char"
1133 set quote "$_G_part" ""
1137 IFS=$func_quote_old_IFS
1145 # func_quote_for_eval ARG...
1146 # --------------------------
1147 # Aesthetically quote ARGs to be evaled later.
1148 # This function returns two values:
1149 # i) func_quote_for_eval_result
1150 # double-quoted, suitable for a subsequent eval
1151 # ii) func_quote_for_eval_unquoted_result
1152 # has all characters that are still active within double
1153 # quotes backslashified.
1154 func_quote_for_eval ()
1158 func_quote_for_eval_unquoted_result=
1159 func_quote_for_eval_result=
1160 while test 0 -lt $#; do
1162 _G_unquoted_arg=$func_quote_result
1163 if test -n "$func_quote_for_eval_unquoted_result"; then
1164 func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
1166 func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
1169 case $_G_unquoted_arg in
1170 # Double-quote args containing shell metacharacters to delay
1171 # word splitting, command substitution and variable expansion
1172 # for a subsequent eval.
1173 # Many Bourne shells cannot handle close brackets correctly
1174 # in scan sets, so we specify it separately.
1175 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1176 _G_quoted_arg=\"$_G_unquoted_arg\"
1179 _G_quoted_arg=$_G_unquoted_arg
1183 if test -n "$func_quote_for_eval_result"; then
1184 func_append func_quote_for_eval_result " $_G_quoted_arg"
1186 func_append func_quote_for_eval_result "$_G_quoted_arg"
1193 # func_quote_for_expand ARG
1194 # -------------------------
1195 # Aesthetically quote ARG to be evaled later; same as above,
1196 # but do not quote variable references.
1197 func_quote_for_expand ()
1203 _G_arg=`$ECHO "$1" | $SED \
1204 -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
1210 # Double-quote args containing shell metacharacters to delay
1211 # word splitting and command substitution for a subsequent eval.
1212 # Many Bourne shells cannot handle close brackets correctly
1213 # in scan sets, so we specify it separately.
1214 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1219 func_quote_for_expand_result=$_G_arg
1223 # func_stripname PREFIX SUFFIX NAME
1224 # ---------------------------------
1225 # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
1226 # PREFIX and SUFFIX must not contain globbing or regex special
1227 # characters, hashes, percent signs, but SUFFIX may contain a leading
1228 # dot (in which case that matches only a dot).
1229 if test yes = "$_G_HAVE_XSI_OPS"; then
1230 eval 'func_stripname ()
1234 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
1235 # positional parameters, so assign one to ordinary variable first.
1236 func_stripname_result=$3
1237 func_stripname_result=${func_stripname_result#"$1"}
1238 func_stripname_result=${func_stripname_result%"$2"}
1246 .*) func_stripname_result=`$ECHO "$3" | $SED -e "s
%^
$1%%" -e "s
%\\\\$2\$
%%"`;;
1247 *) func_stripname_result=`$ECHO "$3" | $SED -e "s
%^
$1%%" -e "s
%$2\$
%%"`;;
1253 # func_show_eval CMD [FAIL_EXP]
1254 # -----------------------------
1255 # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
1256 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1257 # is given, then evaluate it.
1263 _G_fail_exp=${2-':'}
1265 func_quote_for_expand "$_G_cmd"
1266 eval "func_notquiet
$func_quote_for_expand_result"
1271 if test 0 -ne "$_G_status"; then
1272 eval "(exit $_G_status); $_G_fail_exp"
1278 # func_show_eval_locale CMD [FAIL_EXP]
1279 # ------------------------------------
1280 # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
1281 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1282 # is given, then evaluate it. Use the saved locale for evaluation.
1283 func_show_eval_locale ()
1288 _G_fail_exp=${2-':'}
1291 func_quote_for_expand "$_G_cmd"
1292 eval "func_echo
$func_quote_for_expand_result"
1296 eval "$_G_user_locale
1299 eval "$_G_safe_locale"
1300 if test 0 -ne "$_G_status"; then
1301 eval "(exit $_G_status); $_G_fail_exp"
1309 # Turn $1 into a string suitable for a shell variable name.
1310 # Result is stored in $func_tr_sh_result. All characters
1311 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1312 # if $1 begins with a digit, a '_' is prepended as well.
1318 [0-9]* | *[!a-zA-Z0-9_]*)
1319 func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
1322 func_tr_sh_result=$1
1328 # func_verbose ARG...
1329 # -------------------
1330 # Echo program name prefixed message in verbose mode only.
1335 $opt_verbose && func_echo "$
*"
1341 # func_warn_and_continue ARG...
1342 # -----------------------------
1343 # Echo program name prefixed warning message to standard error.
1344 func_warn_and_continue ()
1348 $require_term_colors
1350 func_echo_infix_1 "${tc_red}warning
$tc_reset" "$
*" >&2
1354 # func_warning CATEGORY ARG...
1355 # ----------------------------
1356 # Echo program name prefixed warning message to standard error. Warning
1357 # messages can be filtered according to CATEGORY, where this function
1358 # elides messages where CATEGORY is not listed in the global variable
1359 # 'opt_warning_types'.
1364 # CATEGORY must be in the warning_categories list!
1365 case " $warning_categories " in
1367 *) func_internal_error "invalid warning category
'$1'" ;;
1373 case " $opt_warning_types " in
1374 *" $_G_category "*) $warning_func ${1+"$@"} ;;
1379 # func_sort_ver VER1 VER2
1380 # -----------------------
1381 # 'sort -V' is not generally available.
1382 # Note this deviates from the version comparison in automake
1383 # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
1384 # but this should suffice as we won't be specifying old
1385 # version formats or redundant trailing .0 in bootstrap.conf.
1386 # If we did want full compatibility then we should probably
1387 # use m4_version_compare from autoconf.
1392 printf '%s\n%s\n' "$1" "$2" \
1393 | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
1396 # func_lt_ver PREV CURR
1397 # ---------------------
1398 # Return true if PREV and CURR are in the correct order according to
1399 # func_sort_ver, otherwise false. Use it like this:
1401 # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "...
"
1406 test "x
$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
1411 # mode: shell-script
1413 # eval: (add-hook 'before-save-hook 'time-stamp)
1414 # time-stamp-pattern: "10/scriptversion
=%:y-
%02m-
%02d.
%02H
; # UTC"
1415 # time-stamp-time-zone: "UTC"
1419 # Set a version string for this script.
1420 scriptversion
=2014-01-07.03
; # UTC
1422 # A portable, pluggable option parser for Bourne shell.
1423 # Written by Gary V. Vaughan, 2010
1425 # Copyright (C) 2010-2015 Free Software Foundation, Inc.
1426 # This is free software; see the source for copying conditions. There is NO
1427 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1429 # This program is free software: you can redistribute it and/or modify
1430 # it under the terms of the GNU General Public License as published by
1431 # the Free Software Foundation, either version 3 of the License, or
1432 # (at your option) any later version.
1434 # This program is distributed in the hope that it will be useful,
1435 # but WITHOUT ANY WARRANTY; without even the implied warranty of
1436 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1437 # GNU General Public License for more details.
1439 # You should have received a copy of the GNU General Public License
1440 # along with this program. If not, see <http://www.gnu.org/licenses/>.
1442 # Please report bugs or propose patches to gary@gnu.org.
1449 # This file is a library for parsing options in your shell scripts along
1450 # with assorted other useful supporting features that you can make use
1453 # For the simplest scripts you might need only:
1456 # . relative/path/to/funclib.sh
1457 # . relative/path/to/options-parser
1459 # func_options ${1+"$@"}
1460 # eval set dummy "$func_options_result"; shift
1461 # ...rest of your script...
1463 # In order for the '--version' option to work, you will need to have a
1464 # suitably formatted comment like the one at the top of this file
1465 # starting with '# Written by ' and ending with '# warranty; '.
1467 # For '-h' and '--help' to work, you will also need a one line
1468 # description of your script's purpose in a comment directly above the
1469 # '# Written by ' line, like the one at the top of this file.
1471 # The default options also support '--debug', which will turn on shell
1472 # execution tracing (see the comment above debug_cmd below for another
1473 # use), and '--verbose' and the func_verbose function to allow your script
1474 # to display verbose messages only when your user has specified
1477 # After sourcing this file, you can plug processing for additional
1478 # options by amending the variables from the 'Configuration' section
1479 # below, and following the instructions in the 'Option parsing'
1480 # section further down.
1482 ## -------------- ##
1483 ## Configuration. ##
1484 ## -------------- ##
1486 # You should override these variables in your script after sourcing this
1487 # file so that they reflect the customisations you have added to the
1490 # The usage line for option parsing errors and the start of '-h' and
1491 # '--help' output messages. You can embed shell variables for delayed
1492 # expansion at the time the message is displayed, but you will need to
1493 # quote other shell meta-characters carefully to prevent them being
1494 # expanded when the contents are evaled.
1495 usage
='$progpath [OPTION]...'
1497 # Short help message in response to '-h' and '--help'. Add to this or
1498 # override it after sourcing this library to reflect the full set of
1499 # options your script accepts.
1501 --debug enable verbose shell tracing
1502 -W, --warnings=CATEGORY
1503 report the warnings falling in CATEGORY [all]
1504 -v, --verbose verbosely report processing
1505 --version print version information and exit
1506 -h, --help print short or long help message and exit
1509 # Additional text appended to 'usage_message' in response to '--help'.
1511 Warning categories include:
1512 'all' show all warnings
1513 'none' turn off all the warnings
1514 'error' warnings are treated as fatal errors"
1516 # Help message printed before fatal option parsing errors.
1517 fatal_help
="Try '\$progname --help' for more information."
1521 ## ------------------------- ##
1522 ## Hook function management. ##
1523 ## ------------------------- ##
1525 # This section contains functions for adding, removing, and running hooks
1526 # to the main code. A hook is just a named list of of function, that can
1527 # be run in order later on.
1529 # func_hookable FUNC_NAME
1530 # -----------------------
1531 # Declare that FUNC_NAME will run hooks added with
1532 # 'func_add_hook FUNC_NAME ...'.
1537 func_append hookable_fns
" $1"
1541 # func_add_hook FUNC_NAME HOOK_FUNC
1542 # ---------------------------------
1543 # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must
1544 # first have been declared "hookable" by a call to 'func_hookable'.
1549 case " $hookable_fns " in
1551 *) func_fatal_error
"'$1' does not accept hook functions." ;;
1554 eval func_append
${1}_hooks
'" $2"'
1558 # func_remove_hook FUNC_NAME HOOK_FUNC
1559 # ------------------------------------
1560 # Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
1565 eval ${1}_hooks
='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
1569 # func_run_hooks FUNC_NAME [ARG]...
1570 # ---------------------------------
1571 # Run all hook functions registered to FUNC_NAME.
1572 # It is assumed that the list of hook functions contains nothing more
1573 # than a whitespace-delimited list of legal shell function names, and
1574 # no effort is wasted trying to catch shell meta-characters or preserve
1580 case " $hookable_fns " in
1582 *) func_fatal_error
"'$1' does not support hook funcions.n" ;;
1585 eval _G_hook_fns
=\$
$1_hooks; shift
1587 for _G_hook
in $_G_hook_fns; do
1588 eval $_G_hook '"$@"'
1590 # store returned options list back into positional
1591 # parameters for next 'cmd' execution.
1592 eval _G_hook_result
=\$
${_G_hook}_result
1593 eval set dummy
"$_G_hook_result"; shift
1596 func_quote_for_eval
${1+"$@"}
1597 func_run_hooks_result
=$func_quote_for_eval_result
1602 ## --------------- ##
1603 ## Option parsing. ##
1604 ## --------------- ##
1606 # In order to add your own option parsing hooks, you must accept the
1607 # full positional parameter list in your hook function, remove any
1608 # options that you action, and then pass back the remaining unprocessed
1609 # options in '<hooked_function_name>_result', escaped suitably for
1610 # 'eval'. Like this:
1612 # my_options_prep ()
1616 # # Extend the existing usage message.
1617 # usage_message=$usage_message'
1618 # -s, --silent don'\''t print informational messages
1621 # func_quote_for_eval ${1+"$@"}
1622 # my_options_prep_result=$func_quote_for_eval_result
1624 # func_add_hook func_options_prep my_options_prep
1627 # my_silent_option ()
1631 # # Note that for efficiency, we parse as many options as we can
1632 # # recognise in a loop before passing the remainder back to the
1633 # # caller on the first unrecognised argument we encounter.
1634 # while test $# -gt 0; do
1637 # --silent|-s) opt_silent=: ;;
1638 # # Separate non-argument short options:
1639 # -s*) func_split_short_opt "$_G_opt"
1640 # set dummy "$func_split_short_opt_name" \
1641 # "-$func_split_short_opt_arg" ${1+"$@"}
1644 # *) set dummy "$_G_opt" "$*"; shift; break ;;
1648 # func_quote_for_eval ${1+"$@"}
1649 # my_silent_option_result=$func_quote_for_eval_result
1651 # func_add_hook func_parse_options my_silent_option
1654 # my_option_validation ()
1658 # $opt_silent && $opt_verbose && func_fatal_help "\
1659 # '--silent' and '--verbose' options are mutually exclusive."
1661 # func_quote_for_eval ${1+"$@"}
1662 # my_option_validation_result=$func_quote_for_eval_result
1664 # func_add_hook func_validate_options my_option_validation
1666 # You'll alse need to manually amend $usage_message to reflect the extra
1667 # options you parse. It's preferable to append if you can, so that
1668 # multiple option parsing hooks can be added safely.
1671 # func_options [ARG]...
1672 # ---------------------
1673 # All the functions called inside func_options are hookable. See the
1674 # individual implementations for details.
1675 func_hookable func_options
1680 func_options_prep
${1+"$@"}
1681 eval func_parse_options \
1682 ${func_options_prep_result+"$func_options_prep_result"}
1683 eval func_validate_options \
1684 ${func_parse_options_result+"$func_parse_options_result"}
1686 eval func_run_hooks func_options \
1687 ${func_validate_options_result+"$func_validate_options_result"}
1689 # save modified positional parameters for caller
1690 func_options_result
=$func_run_hooks_result
1694 # func_options_prep [ARG]...
1695 # --------------------------
1696 # All initialisations required before starting the option parse loop.
1697 # Note that when calling hook functions, we pass through the list of
1698 # positional parameters. If a hook function modifies that list, and
1699 # needs to propogate that back to rest of this script, then the complete
1700 # modified list must be put in 'func_run_hooks_result' before
1702 func_hookable func_options_prep
1703 func_options_prep
()
1711 func_run_hooks func_options_prep
${1+"$@"}
1713 # save modified positional parameters for caller
1714 func_options_prep_result
=$func_run_hooks_result
1718 # func_parse_options [ARG]...
1719 # ---------------------------
1720 # The main option parsing loop.
1721 func_hookable func_parse_options
1722 func_parse_options
()
1726 func_parse_options_result
=
1728 # this just eases exit handling
1729 while test $# -gt 0; do
1730 # Defer to hook functions for initial option parsing, so they
1731 # get priority in the event of reusing an option name.
1732 func_run_hooks func_parse_options
${1+"$@"}
1734 # Adjust func_parse_options positional parameters to match
1735 eval set dummy
"$func_run_hooks_result"; shift
1737 # Break out of the loop if we already parsed every option.
1738 test $# -gt 0 ||
break
1743 --debug|
-x) debug_cmd
='set -x'
1744 func_echo
"enabling shell trace mode"
1748 --no-warnings|
--no-warning|
--no-warn)
1749 set dummy
--warnings none
${1+"$@"}
1753 --warnings|
--warning|
-W)
1754 test $# = 0 && func_missing_arg
$_G_opt && break
1755 case " $warning_categories $1" in
1757 # trailing space prevents matching last $1 above
1758 func_append_uniq opt_warning_types
" $1"
1761 opt_warning_types
=$warning_categories
1764 opt_warning_types
=none
1768 opt_warning_types
=$warning_categories
1769 warning_func
=func_fatal_error
1773 "unsupported warning category: '$1'"
1779 --verbose|
-v) opt_verbose
=: ;;
1780 --version) func_version
;;
1781 -\?|
-h) func_usage
;;
1782 --help) func_help
;;
1784 # Separate optargs to long options (plugins may need this):
1785 --*=*) func_split_equals
"$_G_opt"
1786 set dummy
"$func_split_equals_lhs" \
1787 "$func_split_equals_rhs" ${1+"$@"}
1791 # Separate optargs to short options:
1793 func_split_short_opt
"$_G_opt"
1794 set dummy
"$func_split_short_opt_name" \
1795 "$func_split_short_opt_arg" ${1+"$@"}
1799 # Separate non-argument short options:
1801 func_split_short_opt
"$_G_opt"
1802 set dummy
"$func_split_short_opt_name" \
1803 "-$func_split_short_opt_arg" ${1+"$@"}
1808 -*) func_fatal_help
"unrecognised option: '$_G_opt'" ;;
1809 *) set dummy
"$_G_opt" ${1+"$@"}; shift; break ;;
1813 # save modified positional parameters for caller
1814 func_quote_for_eval
${1+"$@"}
1815 func_parse_options_result
=$func_quote_for_eval_result
1819 # func_validate_options [ARG]...
1820 # ------------------------------
1821 # Perform any sanity checks on option settings and/or unconsumed
1823 func_hookable func_validate_options
1824 func_validate_options
()
1828 # Display all warnings if -W was not given.
1829 test -n "$opt_warning_types" || opt_warning_types
=" $warning_categories"
1831 func_run_hooks func_validate_options
${1+"$@"}
1833 # Bail if the options were screwed!
1834 $exit_cmd $EXIT_FAILURE
1836 # save modified positional parameters for caller
1837 func_validate_options_result
=$func_run_hooks_result
1842 ## ----------------- ##
1843 ## Helper functions. ##
1844 ## ----------------- ##
1846 # This section contains the helper functions used by the rest of the
1847 # hookable option parser framework in ascii-betical order.
1850 # func_fatal_help ARG...
1851 # ----------------------
1852 # Echo program name prefixed message to standard error, followed by
1853 # a help hint, and exit.
1858 eval \
$ECHO \""Usage: $usage"\"
1859 eval \
$ECHO \""$fatal_help"\"
1860 func_error
${1+"$@"}
1867 # Echo long help message to standard output and exit.
1873 $ECHO "$long_help_message"
1878 # func_missing_arg ARGNAME
1879 # ------------------------
1880 # Echo program name prefixed message to standard error and set global
1886 func_error
"Missing argument for '$1'."
1891 # func_split_equals STRING
1892 # ------------------------
1893 # Set func_split_equals_lhs and func_split_equals_rhs shell variables after
1894 # splitting STRING at the '=' sign.
1895 test -z "$_G_HAVE_XSI_OPS" \
1897 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev
/null \
1898 && _G_HAVE_XSI_OPS
=yes
1900 if test yes = "$_G_HAVE_XSI_OPS"
1902 # This is an XSI compatible shell, allowing a faster implementation...
1903 eval 'func_split_equals ()
1907 func_split_equals_lhs=${1%%=*}
1908 func_split_equals_rhs=${1#*=}
1909 test "x$func_split_equals_lhs" = "x$1" \
1910 && func_split_equals_rhs=
1913 # ...otherwise fall back to using expr, which is often a shell builtin.
1914 func_split_equals
()
1918 func_split_equals_lhs
=`expr "x$1" : 'x\([^=]*\)'`
1919 func_split_equals_rhs
=
1920 test "x$func_split_equals_lhs" = "x$1" \
1921 || func_split_equals_rhs
=`expr "x$1" : 'x[^=]*=\(.*\)$'`
1923 fi #func_split_equals
1926 # func_split_short_opt SHORTOPT
1927 # -----------------------------
1928 # Set func_split_short_opt_name and func_split_short_opt_arg shell
1929 # variables after splitting SHORTOPT after the 2nd character.
1930 if test yes = "$_G_HAVE_XSI_OPS"
1932 # This is an XSI compatible shell, allowing a faster implementation...
1933 eval 'func_split_short_opt ()
1937 func_split_short_opt_arg=${1#??}
1938 func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
1941 # ...otherwise fall back to using expr, which is often a shell builtin.
1942 func_split_short_opt
()
1946 func_split_short_opt_name
=`expr "x$1" : 'x-\(.\)'`
1947 func_split_short_opt_arg
=`expr "x$1" : 'x-.\(.*\)$'`
1949 fi #func_split_short_opt
1954 # Echo short help message to standard output and exit.
1960 $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
1965 # func_usage_message
1966 # ------------------
1967 # Echo short help message to standard output.
1968 func_usage_message
()
1972 eval \
$ECHO \""Usage: $usage"\"
1979 /^Written by/q' < "$progpath"
1981 eval \
$ECHO \""$usage_message"\"
1987 # Echo version message to standard output and exit.
1992 printf '%s\n' "$progname $scriptversion"
2002 /^# Written by /,/# warranty; / {
2005 s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
2012 /^warranty; /q' < "$progpath"
2019 # mode: shell-script
2021 # eval: (add-hook 'before-save-hook 'time-stamp)
2022 # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
2023 # time-stamp-time-zone: "UTC"
2026 # Set a version string.
2027 scriptversion
='(GNU libtool) 2.4.6'
2032 # Libtool also displays the current mode in messages, so override
2033 # funclib.sh func_echo with this custom definition.
2042 for _G_line
in $_G_message; do
2044 $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
2050 # func_warning ARG...
2051 # -------------------
2052 # Libtool warnings are not categorized, so override funclib.sh
2053 # func_warning with this simpler definition.
2058 $warning_func ${1+"$@"}
2062 ## ---------------- ##
2063 ## Options parsing. ##
2064 ## ---------------- ##
2066 # Hook in the functions to make sure our own options are parsed during
2067 # the option parsing loop.
2069 usage
='$progpath [OPTION]... [MODE-ARG]...'
2071 # Short help message in response to '-h'.
2072 usage_message
="Options:
2073 --config show all configuration variables
2074 --debug enable verbose shell tracing
2075 -n, --dry-run display commands without modifying any files
2076 --features display basic configuration information and exit
2077 --mode=MODE use operation mode MODE
2078 --no-warnings equivalent to '-Wnone'
2079 --preserve-dup-deps don't remove duplicate dependency libraries
2080 --quiet, --silent don't print informational messages
2081 --tag=TAG use configuration variables from tag TAG
2082 -v, --verbose print more informational messages than default
2083 --version print version information
2084 -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all]
2085 -h, --help, --help-all print short, long, or detailed help message
2088 # Additional text appended to 'usage_message' in response to '--help'.
2094 $ECHO "$long_help_message
2096 MODE must be one of the following:
2098 clean remove files from the build directory
2099 compile compile a source file into a libtool object
2100 execute automatically set library path, then run a program
2101 finish complete the installation of libtool libraries
2102 install install libraries or executables
2103 link create a library or an executable
2104 uninstall remove libraries from an installed directory
2106 MODE-ARGS vary depending on the MODE. When passed as first option,
2107 '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
2108 Try '$progname --help --mode=MODE' for a more detailed description of MODE.
2110 When reporting a bug, please describe a test case to reproduce it and
2111 include the following information:
2116 compiler flags: $LTCFLAGS
2117 linker: $LD (gnu? $with_gnu_ld)
2118 version: $progname (GNU libtool) 2.4.6
2119 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2120 autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2122 Report bugs to <bug-libtool@gnu.org>.
2123 GNU libtool home page: <http://www.gnu.org/software/libtool/>.
2124 General help using GNU software: <http://www.gnu.org/gethelp/>."
2129 # func_lo2o OBJECT-NAME
2130 # ---------------------
2131 # Transform OBJECT-NAME from a '.lo' suffix to the platform specific
2134 lo2o
=s
/\\.lo\$
/.
$objext/
2135 o2lo
=s
/\\.
$objext\$
/.lo
/
2137 if test yes = "$_G_HAVE_XSI_OPS"; then
2141 *.lo) func_lo2o_result=${1%.lo}.$objext ;;
2142 * ) func_lo2o_result=$1 ;;
2146 # func_xform LIBOBJ-OR-SOURCE
2147 # ---------------------------
2148 # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
2149 # suffix to a '.lo' libtool-object suffix.
2152 func_xform_result=${1%.*}.lo
2155 # ...otherwise fall back to using sed.
2158 func_lo2o_result
=`$ECHO "$1" | $SED "$lo2o"`
2163 func_xform_result
=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
2168 # func_fatal_configuration ARG...
2169 # -------------------------------
2170 # Echo program name prefixed message to standard error, followed by
2171 # a configuration failure hint, and exit.
2172 func_fatal_configuration
()
2174 func__fatal_error
${1+"$@"} \
2175 "See the $PACKAGE documentation for more information." \
2176 "Fatal configuration error."
2182 # Display the configuration for all the tags in this script.
2185 re_begincf
='^# ### BEGIN LIBTOOL'
2186 re_endcf
='^# ### END LIBTOOL'
2188 # Default configuration.
2189 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
2191 # Now print the configurations for the tags.
2192 for tagname
in $taglist; do
2193 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
2202 # Display the features supported by this script.
2206 if test yes = "$build_libtool_libs"; then
2207 echo "enable shared libraries"
2209 echo "disable shared libraries"
2211 if test yes = "$build_old_libs"; then
2212 echo "enable static libraries"
2214 echo "disable static libraries"
2221 # func_enable_tag TAGNAME
2222 # -----------------------
2223 # Verify that TAGNAME is valid, and either flag an error and exit, or
2224 # enable the TAGNAME tag. We also add TAGNAME to the global $taglist
2231 re_begincf
="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
2232 re_endcf
="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
2233 sed_extractcf
=/$re_begincf/,/$re_endcf/p
2238 func_fatal_error
"invalid tag name: $tagname"
2242 # Don't test for the "default" C tag, as we know it's
2243 # there but not specially marked.
2247 if $GREP "$re_begincf" "$progpath" >/dev
/null
2>&1; then
2248 taglist
="$taglist $tagname"
2250 # Evaluate the configuration. Be careful to quote the path
2251 # and the sed script, to avoid splitting on whitespace, but
2252 # also don't use non-portable quotes within backquotes within
2253 # quotes we have to do it in 2 steps:
2254 extractedcf
=`$SED -n -e "$sed_extractcf" < "$progpath"`
2257 func_error
"ignoring unknown tag $tagname"
2264 # func_check_version_match
2265 # ------------------------
2266 # Ensure that we are using m4 macros, and libtool script from the same
2267 # release of libtool.
2268 func_check_version_match
()
2270 if test "$package_revision" != "$macro_revision"; then
2271 if test "$VERSION" != "$macro_version"; then
2272 if test -z "$macro_version"; then
2274 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
2275 $progname: definition of this LT_INIT comes from an older release.
2276 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2277 $progname: and run autoconf again.
2281 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
2282 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
2283 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2284 $progname: and run autoconf again.
2289 $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
2290 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
2291 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
2292 $progname: of $PACKAGE $VERSION and run autoconf again.
2301 # libtool_options_prep [ARG]...
2302 # -----------------------------
2303 # Preparation for options parsed by libtool.
2304 libtool_options_prep
()
2314 opt_preserve_dup_deps
=false
2320 # Shorthand for --mode=foo, only valid as the first argument
2323 shift; set dummy
--mode clean
${1+"$@"}; shift
2325 compile|compil|compi|comp|com|co|c
)
2326 shift; set dummy
--mode compile
${1+"$@"}; shift
2328 execute|execut|execu|
exec|exe|ex|e
)
2329 shift; set dummy
--mode execute
${1+"$@"}; shift
2331 finish|finis|fini|fin|
fi|f
)
2332 shift; set dummy
--mode finish
${1+"$@"}; shift
2334 install|instal|insta|inst|ins|
in|i
)
2335 shift; set dummy
--mode install ${1+"$@"}; shift
2338 shift; set dummy
--mode link
${1+"$@"}; shift
2340 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u
)
2341 shift; set dummy
--mode uninstall
${1+"$@"}; shift
2345 # Pass back the list of options.
2346 func_quote_for_eval
${1+"$@"}
2347 libtool_options_prep_result
=$func_quote_for_eval_result
2349 func_add_hook func_options_prep libtool_options_prep
2352 # libtool_parse_options [ARG]...
2353 # ---------------------------------
2354 # Provide handling for libtool specific options.
2355 libtool_parse_options
()
2359 # Perform our own loop to consume as many options as possible in
2361 while test $# -gt 0; do
2365 --dry-run|
--dryrun|
-n)
2369 --config) func_config
;;
2372 opt_dlopen
="${opt_dlopen+$opt_dlopen
2377 --preserve-dup-deps)
2378 opt_preserve_dup_deps
=: ;;
2380 --features) func_features
;;
2382 --finish) set dummy
--mode finish
${1+"$@"}; shift ;;
2384 --help) opt_help
=: ;;
2386 --help-all) opt_help
=': help-all' ;;
2388 --mode) test $# = 0 && func_missing_arg
$_G_opt && break
2391 # Valid mode arguments:
2392 clean|compile|execute|finish|
install|link|relink|uninstall
) ;;
2394 # Catch anything else as an error
2395 *) func_error
"invalid argument for $_G_opt"
2403 --no-silent|
--no-quiet)
2405 func_append preserve_args
" $_G_opt"
2408 --no-warnings|
--no-warning|
--no-warn)
2410 func_append preserve_args
" $_G_opt"
2415 func_append preserve_args
" $_G_opt"
2421 func_append preserve_args
" $_G_opt"
2424 --tag) test $# = 0 && func_missing_arg
$_G_opt && break
2426 func_append preserve_args
" $_G_opt $1"
2427 func_enable_tag
"$1"
2431 --verbose|
-v) opt_quiet
=false
2433 func_append preserve_args
" $_G_opt"
2436 # An option not handled by this hook function:
2437 *) set dummy
"$_G_opt" ${1+"$@"}; shift; break ;;
2442 # save modified positional parameters for caller
2443 func_quote_for_eval
${1+"$@"}
2444 libtool_parse_options_result
=$func_quote_for_eval_result
2446 func_add_hook func_parse_options libtool_parse_options
2450 # libtool_validate_options [ARG]...
2451 # ---------------------------------
2452 # Perform any sanity checks on option settings and/or unconsumed
2454 libtool_validate_options
()
2456 # save first non-option argument
2457 if test 0 -lt $#; then
2463 test : = "$debug_cmd" || func_append preserve_args
" --debug"
2466 # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
2467 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
2468 *cygwin
* |
*mingw
* |
*pw32
* |
*cegcc
* |
*solaris2
* |
*os2
*)
2469 # don't eliminate duplications in $postdeps and $predeps
2470 opt_duplicate_compiler_generated_deps
=:
2473 opt_duplicate_compiler_generated_deps
=$opt_preserve_dup_deps
2478 # Sanity checks first:
2479 func_check_version_match
2481 test yes != "$build_libtool_libs" \
2482 && test yes != "$build_old_libs" \
2483 && func_fatal_configuration
"not configured to build any kind of library"
2486 eval std_shrext
=\"$shrext_cmds\"
2488 # Only execute mode is allowed to have -dlopen flags.
2489 if test -n "$opt_dlopen" && test execute
!= "$opt_mode"; then
2490 func_error
"unrecognized option '-dlopen'"
2495 # Change the help message to a mode-specific one.
2497 help="Try '$progname --help --mode=$opt_mode' for more information."
2500 # Pass back the unparsed argument list
2501 func_quote_for_eval
${1+"$@"}
2502 libtool_validate_options_result
=$func_quote_for_eval_result
2504 func_add_hook func_validate_options libtool_validate_options
2507 # Process options as early as possible so that --help and --version
2508 # can return quickly.
2509 func_options
${1+"$@"}
2510 eval set dummy
"$func_options_result"; shift
2518 magic
='%%%MAGIC variable%%%'
2519 magic_exe
='%%%MAGIC EXE variable%%%'
2525 # If this variable is set in any of the actions, the command in it
2526 # will be execed at the end. This prevents here-documents from being
2527 # left over by shells.
2531 # A function that is used when there is no print builtin or printf.
2532 func_fallback_echo
()
2534 eval 'cat <<_LTECHO_EOF
2539 # func_generated_by_libtool
2540 # True iff stdin has been generated by Libtool. This function is only
2541 # a basic sanity check; it will hardly flush out determined imposters.
2542 func_generated_by_libtool_p
()
2544 $GREP "^# Generated by .*$PACKAGE" > /dev
/null
2>&1
2548 # True iff FILE is a libtool '.la' library or '.lo' object file.
2549 # This function is only a basic sanity check; it will hardly flush out
2550 # determined imposters.
2554 $SED -e 4q
"$1" 2>/dev
/null | func_generated_by_libtool_p
2557 # func_lalib_unsafe_p file
2558 # True iff FILE is a libtool '.la' library or '.lo' object file.
2559 # This function implements the same check as func_lalib_p without
2560 # resorting to external programs. To this end, it redirects stdin and
2561 # closes it afterwards, without saving the original file descriptor.
2562 # As a safety measure, use it only where a negative result would be
2563 # fatal anyway. Works if 'file' does not exist.
2564 func_lalib_unsafe_p
()
2567 if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
2568 for lalib_p_l
in 1 2 3 4
2571 case $lalib_p_line in
2572 \
#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
2577 test yes = "$lalib_p"
2580 # func_ltwrapper_script_p file
2581 # True iff FILE is a libtool wrapper script
2582 # This function is only a basic sanity check; it will hardly flush out
2583 # determined imposters.
2584 func_ltwrapper_script_p
()
2587 $lt_truncate_bin < "$1" 2>/dev
/null | func_generated_by_libtool_p
2590 # func_ltwrapper_executable_p file
2591 # True iff FILE is a libtool wrapper executable
2592 # This function is only a basic sanity check; it will hardly flush out
2593 # determined imposters.
2594 func_ltwrapper_executable_p
()
2596 func_ltwrapper_exec_suffix
=
2599 *) func_ltwrapper_exec_suffix
=.exe
;;
2601 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev
/null
2>&1
2604 # func_ltwrapper_scriptname file
2605 # Assumes file is an ltwrapper_executable
2606 # uses $file to determine the appropriate filename for a
2607 # temporary ltwrapper_script.
2608 func_ltwrapper_scriptname
()
2610 func_dirname_and_basename
"$1" "" "."
2611 func_stripname
'' '.exe' "$func_basename_result"
2612 func_ltwrapper_scriptname_result
=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
2615 # func_ltwrapper_p file
2616 # True iff FILE is a libtool wrapper script or wrapper executable
2617 # This function is only a basic sanity check; it will hardly flush out
2618 # determined imposters.
2621 func_ltwrapper_script_p
"$1" || func_ltwrapper_executable_p
"$1"
2625 # func_execute_cmds commands fail_cmd
2626 # Execute tilde-delimited COMMANDS.
2627 # If FAIL_CMD is given, eval that upon failure.
2628 # FAIL_CMD may read-access the current command in variable CMD!
2629 func_execute_cmds
()
2633 save_ifs
=$IFS; IFS
='~'
2638 func_show_eval
"$cmd" "${2-:}"
2645 # Source FILE, adding directory component if necessary.
2646 # Note that it is not necessary on cygwin/mingw to append a dot to
2647 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
2648 # behavior happens only for exec(3), not for open(2)! Also, sourcing
2649 # 'FILE.' does not work on cygwin managed mounts.
2655 */* |
*\\*) .
"$1" ;;
2661 # func_resolve_sysroot PATH
2662 # Replace a leading = in PATH with a sysroot. Store the result into
2663 # func_resolve_sysroot_result
2664 func_resolve_sysroot
()
2666 func_resolve_sysroot_result
=$1
2667 case $func_resolve_sysroot_result in
2669 func_stripname
'=' '' "$func_resolve_sysroot_result"
2670 func_resolve_sysroot_result
=$lt_sysroot$func_stripname_result
2675 # func_replace_sysroot PATH
2676 # If PATH begins with the sysroot, replace it with = and
2677 # store the result into func_replace_sysroot_result.
2678 func_replace_sysroot
()
2680 case $lt_sysroot:$1 in
2682 func_stripname
"$lt_sysroot" '' "$1"
2683 func_replace_sysroot_result
='='$func_stripname_result
2686 # Including no sysroot.
2687 func_replace_sysroot_result
=$1
2692 # func_infer_tag arg
2693 # Infer tagged configuration to use if any are available and
2694 # if one wasn't chosen via the "--tag" command line option.
2695 # Only attempt this if the compiler in the base compile
2696 # command doesn't match the default compiler.
2697 # arg is usually of the form 'gcc ...'
2702 if test -n "$available_tags" && test -z "$tagname"; then
2705 func_append_quoted CC_quoted
"$arg"
2707 CC_expanded
=`func_echo_all $CC`
2708 CC_quoted_expanded
=`func_echo_all $CC_quoted`
2710 # Blanks in the command may have been stripped by the calling shell,
2711 # but not from the CC environment variable when configure was run.
2712 " $CC "* |
"$CC "* |
" $CC_expanded "* |
"$CC_expanded "* | \
2713 " $CC_quoted"* |
"$CC_quoted "* |
" $CC_quoted_expanded "* |
"$CC_quoted_expanded "*) ;;
2714 # Blanks at the start of $base_compile will cause this to fail
2715 # if we don't check for them as well.
2717 for z
in $available_tags; do
2718 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev
/null
; then
2719 # Evaluate the configuration.
2720 eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
2723 # Double-quote args containing other shell metacharacters.
2724 func_append_quoted CC_quoted
"$arg"
2726 CC_expanded
=`func_echo_all $CC`
2727 CC_quoted_expanded
=`func_echo_all $CC_quoted`
2729 " $CC "* |
"$CC "* |
" $CC_expanded "* |
"$CC_expanded "* | \
2730 " $CC_quoted"* |
"$CC_quoted "* |
" $CC_quoted_expanded "* |
"$CC_quoted_expanded "*)
2731 # The compiler in the base compile command matches
2732 # the one in the tagged configuration.
2733 # Assume this is the tagged configuration we want.
2740 # If $tagname still isn't set, then no tagged configuration
2741 # was found and let the user know that the "--tag" command
2742 # line option must be used.
2743 if test -z "$tagname"; then
2744 func_echo
"unable to infer tagged configuration"
2745 func_fatal_error
"specify a tag with '--tag'"
2747 # func_verbose "using $tagname tagged configuration"
2756 # func_write_libtool_object output_name pic_name nonpic_name
2757 # Create a libtool object file (analogous to a ".la" file),
2758 # but don't create it if we're doing a dry run.
2759 func_write_libtool_object
()
2762 if test yes = "$build_libtool_libs"; then
2768 if test yes = "$build_old_libs"; then
2775 cat >${write_libobj}T
<<EOF
2776 # $write_libobj - a libtool object file
2777 # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
2779 # Please DO NOT delete this file!
2780 # It is necessary for linking the library.
2782 # Name of the PIC object.
2783 pic_object=$write_lobj
2785 # Name of the non-PIC object
2786 non_pic_object=$write_oldobj
2789 $MV "${write_libobj}T" "$write_libobj"
2794 ##################################################
2795 # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
2796 ##################################################
2798 # func_convert_core_file_wine_to_w32 ARG
2799 # Helper function used by file name conversion functions when $build is *nix,
2800 # and $host is mingw, cygwin, or some other w32 environment. Relies on a
2801 # correctly configured wine environment available, with the winepath program
2802 # in $build's $PATH.
2804 # ARG is the $build file name to be converted to w32 format.
2805 # Result is available in $func_convert_core_file_wine_to_w32_result, and will
2806 # be empty on error (or when ARG is empty)
2807 func_convert_core_file_wine_to_w32
()
2811 func_convert_core_file_wine_to_w32_result
=$1
2812 if test -n "$1"; then
2813 # Unfortunately, winepath does not exit with a non-zero error code, so we
2814 # are forced to check the contents of stdout. On the other hand, if the
2815 # command is not found, the shell will set an exit code of 127 and print
2816 # *an error message* to stdout. So we must check for both error code of
2817 # zero AND non-empty stdout, which explains the odd construction:
2818 func_convert_core_file_wine_to_w32_tmp
=`winepath -w "$1" 2>/dev/null`
2819 if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
2820 func_convert_core_file_wine_to_w32_result
=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
2821 $SED -e "$sed_naive_backslashify"`
2823 func_convert_core_file_wine_to_w32_result
=
2827 # end: func_convert_core_file_wine_to_w32
2830 # func_convert_core_path_wine_to_w32 ARG
2831 # Helper function used by path conversion functions when $build is *nix, and
2832 # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
2833 # configured wine environment available, with the winepath program in $build's
2834 # $PATH. Assumes ARG has no leading or trailing path separator characters.
2836 # ARG is path to be converted from $build format to win32.
2837 # Result is available in $func_convert_core_path_wine_to_w32_result.
2838 # Unconvertible file (directory) names in ARG are skipped; if no directory names
2839 # are convertible, then the result may be empty.
2840 func_convert_core_path_wine_to_w32
()
2844 # unfortunately, winepath doesn't convert paths, only file names
2845 func_convert_core_path_wine_to_w32_result
=
2846 if test -n "$1"; then
2849 for func_convert_core_path_wine_to_w32_f
in $1; do
2851 func_convert_core_file_wine_to_w32
"$func_convert_core_path_wine_to_w32_f"
2852 if test -n "$func_convert_core_file_wine_to_w32_result"; then
2853 if test -z "$func_convert_core_path_wine_to_w32_result"; then
2854 func_convert_core_path_wine_to_w32_result
=$func_convert_core_file_wine_to_w32_result
2856 func_append func_convert_core_path_wine_to_w32_result
";$func_convert_core_file_wine_to_w32_result"
2863 # end: func_convert_core_path_wine_to_w32
2866 # func_cygpath ARGS...
2867 # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
2868 # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
2869 # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
2870 # (2), returns the Cygwin file name or path in func_cygpath_result (input
2871 # file name or path is assumed to be in w32 format, as previously converted
2872 # from $build's *nix or MSYS format). In case (3), returns the w32 file name
2873 # or path in func_cygpath_result (input file name or path is assumed to be in
2874 # Cygwin format). Returns an empty string on error.
2876 # ARGS are passed to cygpath, with the last one being the file name or path to
2879 # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
2880 # environment variable; do not put it in $PATH.
2885 if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
2886 func_cygpath_result
=`$LT_CYGPATH "$@" 2>/dev/null`
2887 if test "$?" -ne 0; then
2888 # on failure, ensure result is empty
2889 func_cygpath_result
=
2892 func_cygpath_result
=
2893 func_error
"LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
2899 # func_convert_core_msys_to_w32 ARG
2900 # Convert file name or path ARG from MSYS format to w32 format. Return
2901 # result in func_convert_core_msys_to_w32_result.
2902 func_convert_core_msys_to_w32
()
2906 # awkward: cmd appends spaces to result
2907 func_convert_core_msys_to_w32_result
=`( cmd //c echo "$1" ) 2>/dev/null |
2908 $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
2910 #end: func_convert_core_msys_to_w32
2913 # func_convert_file_check ARG1 ARG2
2914 # Verify that ARG1 (a file name in $build format) was converted to $host
2915 # format in ARG2. Otherwise, emit an error message, but continue (resetting
2916 # func_to_host_file_result to ARG1).
2917 func_convert_file_check
()
2921 if test -z "$2" && test -n "$1"; then
2922 func_error
"Could not determine host file name corresponding to"
2924 func_error
"Continuing, but uninstalled executables may not work."
2926 func_to_host_file_result
=$1
2929 # end func_convert_file_check
2932 # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
2933 # Verify that FROM_PATH (a path in $build format) was converted to $host
2934 # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
2935 # func_to_host_file_result to a simplistic fallback value (see below).
2936 func_convert_path_check
()
2940 if test -z "$4" && test -n "$3"; then
2941 func_error
"Could not determine the host path corresponding to"
2943 func_error
"Continuing, but uninstalled executables may not work."
2944 # Fallback. This is a deliberately simplistic "conversion" and
2945 # should not be "improved". See libtool.info.
2946 if test "x$1" != "x$2"; then
2947 lt_replace_pathsep_chars
="s|$1|$2|g"
2948 func_to_host_path_result
=`echo "$3" |
2949 $SED -e "$lt_replace_pathsep_chars"`
2951 func_to_host_path_result
=$3
2955 # end func_convert_path_check
2958 # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
2959 # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
2960 # and appending REPL if ORIG matches BACKPAT.
2961 func_convert_path_front_back_pathsep
()
2966 $1 ) func_to_host_path_result
=$3$func_to_host_path_result
2970 $2 ) func_append func_to_host_path_result
"$3"
2974 # end func_convert_path_front_back_pathsep
2977 ##################################################
2978 # $build to $host FILE NAME CONVERSION FUNCTIONS #
2979 ##################################################
2980 # invoked via '$to_host_file_cmd ARG'
2982 # In each case, ARG is the path to be converted from $build to $host format.
2983 # Result will be available in $func_to_host_file_result.
2986 # func_to_host_file ARG
2987 # Converts the file name ARG from $build format to $host format. Return result
2988 # in func_to_host_file_result.
2989 func_to_host_file
()
2993 $to_host_file_cmd "$1"
2995 # end func_to_host_file
2998 # func_to_tool_file ARG LAZY
2999 # converts the file name ARG from $build format to toolchain format. Return
3000 # result in func_to_tool_file_result. If the conversion in use is listed
3001 # in (the comma separated) LAZY, no conversion takes place.
3002 func_to_tool_file
()
3007 *,"$to_tool_file_cmd",*)
3008 func_to_tool_file_result
=$1
3011 $to_tool_file_cmd "$1"
3012 func_to_tool_file_result
=$func_to_host_file_result
3016 # end func_to_tool_file
3019 # func_convert_file_noop ARG
3020 # Copy ARG to func_to_host_file_result.
3021 func_convert_file_noop
()
3023 func_to_host_file_result
=$1
3025 # end func_convert_file_noop
3028 # func_convert_file_msys_to_w32 ARG
3029 # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
3030 # conversion to w32 is not available inside the cwrapper. Returns result in
3031 # func_to_host_file_result.
3032 func_convert_file_msys_to_w32
()
3036 func_to_host_file_result
=$1
3037 if test -n "$1"; then
3038 func_convert_core_msys_to_w32
"$1"
3039 func_to_host_file_result
=$func_convert_core_msys_to_w32_result
3041 func_convert_file_check
"$1" "$func_to_host_file_result"
3043 # end func_convert_file_msys_to_w32
3046 # func_convert_file_cygwin_to_w32 ARG
3047 # Convert file name ARG from Cygwin to w32 format. Returns result in
3048 # func_to_host_file_result.
3049 func_convert_file_cygwin_to_w32
()
3053 func_to_host_file_result
=$1
3054 if test -n "$1"; then
3055 # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
3056 # LT_CYGPATH in this case.
3057 func_to_host_file_result
=`cygpath -m "$1"`
3059 func_convert_file_check
"$1" "$func_to_host_file_result"
3061 # end func_convert_file_cygwin_to_w32
3064 # func_convert_file_nix_to_w32 ARG
3065 # Convert file name ARG from *nix to w32 format. Requires a wine environment
3066 # and a working winepath. Returns result in func_to_host_file_result.
3067 func_convert_file_nix_to_w32
()
3071 func_to_host_file_result
=$1
3072 if test -n "$1"; then
3073 func_convert_core_file_wine_to_w32
"$1"
3074 func_to_host_file_result
=$func_convert_core_file_wine_to_w32_result
3076 func_convert_file_check
"$1" "$func_to_host_file_result"
3078 # end func_convert_file_nix_to_w32
3081 # func_convert_file_msys_to_cygwin ARG
3082 # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
3083 # Returns result in func_to_host_file_result.
3084 func_convert_file_msys_to_cygwin
()
3088 func_to_host_file_result
=$1
3089 if test -n "$1"; then
3090 func_convert_core_msys_to_w32
"$1"
3091 func_cygpath
-u "$func_convert_core_msys_to_w32_result"
3092 func_to_host_file_result
=$func_cygpath_result
3094 func_convert_file_check
"$1" "$func_to_host_file_result"
3096 # end func_convert_file_msys_to_cygwin
3099 # func_convert_file_nix_to_cygwin ARG
3100 # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
3101 # in a wine environment, working winepath, and LT_CYGPATH set. Returns result
3102 # in func_to_host_file_result.
3103 func_convert_file_nix_to_cygwin
()
3107 func_to_host_file_result
=$1
3108 if test -n "$1"; then
3109 # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
3110 func_convert_core_file_wine_to_w32
"$1"
3111 func_cygpath
-u "$func_convert_core_file_wine_to_w32_result"
3112 func_to_host_file_result
=$func_cygpath_result
3114 func_convert_file_check
"$1" "$func_to_host_file_result"
3116 # end func_convert_file_nix_to_cygwin
3119 #############################################
3120 # $build to $host PATH CONVERSION FUNCTIONS #
3121 #############################################
3122 # invoked via '$to_host_path_cmd ARG'
3124 # In each case, ARG is the path to be converted from $build to $host format.
3125 # The result will be available in $func_to_host_path_result.
3127 # Path separators are also converted from $build format to $host format. If
3128 # ARG begins or ends with a path separator character, it is preserved (but
3129 # converted to $host format) on output.
3131 # All path conversion functions are named using the following convention:
3132 # file name conversion function : func_convert_file_X_to_Y ()
3133 # path conversion function : func_convert_path_X_to_Y ()
3134 # where, for any given $build/$host combination the 'X_to_Y' value is the
3135 # same. If conversion functions are added for new $build/$host combinations,
3136 # the two new functions must follow this pattern, or func_init_to_host_path_cmd
3140 # func_init_to_host_path_cmd
3141 # Ensures that function "pointer" variable $to_host_path_cmd is set to the
3142 # appropriate value, based on the value of $to_host_file_cmd.
3144 func_init_to_host_path_cmd
()
3148 if test -z "$to_host_path_cmd"; then
3149 func_stripname
'func_convert_file_' '' "$to_host_file_cmd"
3150 to_host_path_cmd
=func_convert_path_
$func_stripname_result
3155 # func_to_host_path ARG
3156 # Converts the path ARG from $build format to $host format. Return result
3157 # in func_to_host_path_result.
3158 func_to_host_path
()
3162 func_init_to_host_path_cmd
3163 $to_host_path_cmd "$1"
3165 # end func_to_host_path
3168 # func_convert_path_noop ARG
3169 # Copy ARG to func_to_host_path_result.
3170 func_convert_path_noop
()
3172 func_to_host_path_result
=$1
3174 # end func_convert_path_noop
3177 # func_convert_path_msys_to_w32 ARG
3178 # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
3179 # conversion to w32 is not available inside the cwrapper. Returns result in
3180 # func_to_host_path_result.
3181 func_convert_path_msys_to_w32
()
3185 func_to_host_path_result
=$1
3186 if test -n "$1"; then
3187 # Remove leading and trailing path separator characters from ARG. MSYS
3188 # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
3189 # and winepath ignores them completely.
3190 func_stripname
: : "$1"
3191 func_to_host_path_tmp1
=$func_stripname_result
3192 func_convert_core_msys_to_w32
"$func_to_host_path_tmp1"
3193 func_to_host_path_result
=$func_convert_core_msys_to_w32_result
3194 func_convert_path_check
: ";" \
3195 "$func_to_host_path_tmp1" "$func_to_host_path_result"
3196 func_convert_path_front_back_pathsep
":*" "*:" ";" "$1"
3199 # end func_convert_path_msys_to_w32
3202 # func_convert_path_cygwin_to_w32 ARG
3203 # Convert path ARG from Cygwin to w32 format. Returns result in
3204 # func_to_host_file_result.
3205 func_convert_path_cygwin_to_w32
()
3209 func_to_host_path_result
=$1
3210 if test -n "$1"; then
3211 # See func_convert_path_msys_to_w32:
3212 func_stripname
: : "$1"
3213 func_to_host_path_tmp1
=$func_stripname_result
3214 func_to_host_path_result
=`cygpath -m -p "$func_to_host_path_tmp1"`
3215 func_convert_path_check
: ";" \
3216 "$func_to_host_path_tmp1" "$func_to_host_path_result"
3217 func_convert_path_front_back_pathsep
":*" "*:" ";" "$1"
3220 # end func_convert_path_cygwin_to_w32
3223 # func_convert_path_nix_to_w32 ARG
3224 # Convert path ARG from *nix to w32 format. Requires a wine environment and
3225 # a working winepath. Returns result in func_to_host_file_result.
3226 func_convert_path_nix_to_w32
()
3230 func_to_host_path_result
=$1
3231 if test -n "$1"; then
3232 # See func_convert_path_msys_to_w32:
3233 func_stripname
: : "$1"
3234 func_to_host_path_tmp1
=$func_stripname_result
3235 func_convert_core_path_wine_to_w32
"$func_to_host_path_tmp1"
3236 func_to_host_path_result
=$func_convert_core_path_wine_to_w32_result
3237 func_convert_path_check
: ";" \
3238 "$func_to_host_path_tmp1" "$func_to_host_path_result"
3239 func_convert_path_front_back_pathsep
":*" "*:" ";" "$1"
3242 # end func_convert_path_nix_to_w32
3245 # func_convert_path_msys_to_cygwin ARG
3246 # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
3247 # Returns result in func_to_host_file_result.
3248 func_convert_path_msys_to_cygwin
()
3252 func_to_host_path_result
=$1
3253 if test -n "$1"; then
3254 # See func_convert_path_msys_to_w32:
3255 func_stripname
: : "$1"
3256 func_to_host_path_tmp1
=$func_stripname_result
3257 func_convert_core_msys_to_w32
"$func_to_host_path_tmp1"
3258 func_cygpath
-u -p "$func_convert_core_msys_to_w32_result"
3259 func_to_host_path_result
=$func_cygpath_result
3260 func_convert_path_check
: : \
3261 "$func_to_host_path_tmp1" "$func_to_host_path_result"
3262 func_convert_path_front_back_pathsep
":*" "*:" : "$1"
3265 # end func_convert_path_msys_to_cygwin
3268 # func_convert_path_nix_to_cygwin ARG
3269 # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
3270 # a wine environment, working winepath, and LT_CYGPATH set. Returns result in
3271 # func_to_host_file_result.
3272 func_convert_path_nix_to_cygwin
()
3276 func_to_host_path_result
=$1
3277 if test -n "$1"; then
3278 # Remove leading and trailing path separator characters from
3279 # ARG. msys behavior is inconsistent here, cygpath turns them
3280 # into '.;' and ';.', and winepath ignores them completely.
3281 func_stripname
: : "$1"
3282 func_to_host_path_tmp1
=$func_stripname_result
3283 func_convert_core_path_wine_to_w32
"$func_to_host_path_tmp1"
3284 func_cygpath
-u -p "$func_convert_core_path_wine_to_w32_result"
3285 func_to_host_path_result
=$func_cygpath_result
3286 func_convert_path_check
: : \
3287 "$func_to_host_path_tmp1" "$func_to_host_path_result"
3288 func_convert_path_front_back_pathsep
":*" "*:" : "$1"
3291 # end func_convert_path_nix_to_cygwin
3294 # func_dll_def_p FILE
3295 # True iff FILE is a Windows DLL '.def' file.
3296 # Keep in sync with _LT_DLL_DEF_P in libtool.m4
3301 func_dll_def_p_tmp
=`$SED -n \
3303 -e '/^\(;.*\)*$/d' \
3304 -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \
3307 test DEF
= "$func_dll_def_p_tmp"
3311 # func_mode_compile arg...
3312 func_mode_compile
()
3316 # Get the compilation command and the source file.
3318 srcfile
=$nonopt # always keep a non-empty value in "srcfile"
3330 # do not "continue". Instead, add this to base_compile
3342 # Accept any command-line options.
3345 test -n "$libobj" && \
3346 func_fatal_error
"you cannot specify '-o' more than once"
3351 -pie |
-fpie |
-fPIE)
3352 func_append pie_flag
" $arg"
3356 -shared |
-static |
-prefer-pic |
-prefer-non-pic)
3357 func_append later
" $arg"
3367 arg_mode
=arg
# the next one goes into the "base_compile" arg list
3368 continue # The current "srcfile" will either be retained or
3369 ;; # replaced later. I would guess that would be a bug.
3372 func_stripname
'-Wc,' '' "$arg"
3373 args
=$func_stripname_result
3375 save_ifs
=$IFS; IFS
=,
3376 for arg
in $args; do
3378 func_append_quoted lastarg
"$arg"
3381 func_stripname
' ' '' "$lastarg"
3382 lastarg
=$func_stripname_result
3384 # Add the arguments to base_compile.
3385 func_append base_compile
" $lastarg"
3390 # Accept the current argument as the source file.
3391 # The previous "srcfile" becomes the current argument.
3398 esac # case $arg_mode
3400 # Aesthetically quote the previous argument.
3401 func_append_quoted base_compile
"$lastarg"
3406 func_fatal_error
"you must specify an argument for -Xcompile"
3409 func_fatal_error
"you must specify a target with '-o'"
3412 # Get the name of the library object.
3413 test -z "$libobj" && {
3414 func_basename
"$srcfile"
3415 libobj
=$func_basename_result
3420 # Recognize several different file suffixes.
3421 # If the user specifies -o file.o, it is replaced with file.lo
3424 *.ada |
*.adb |
*.ads |
*.asm | \
3425 *.c
++ |
*.cc |
*.ii |
*.class |
*.cpp |
*.cxx | \
3426 *.
[fF
][09]? |
*.
for |
*.java |
*.go |
*.obj |
*.sx |
*.cu |
*.cup
)
3427 func_xform
"$libobj"
3428 libobj
=$func_xform_result
3433 *.lo
) func_lo2o
"$libobj"; obj
=$func_lo2o_result ;;
3435 func_fatal_error
"cannot determine name of library object from '$libobj'"
3439 func_infer_tag
$base_compile
3441 for arg
in $later; do
3444 test yes = "$build_libtool_libs" \
3445 || func_fatal_configuration
"cannot build a shared library"
3451 build_libtool_libs
=no
3468 func_quote_for_eval
"$libobj"
3469 test "X$libobj" != "X$func_quote_for_eval_result" \
3470 && $ECHO "X$libobj" |
$GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
3471 && func_warning
"libobj name '$libobj' may not contain shell special characters."
3472 func_dirname_and_basename
"$obj" "/" ""
3473 objname
=$func_basename_result
3474 xdir
=$func_dirname_result
3475 lobj
=$xdir$objdir/$objname
3477 test -z "$base_compile" && \
3478 func_fatal_help
"you must specify a compilation command"
3480 # Delete any leftover library objects.
3481 if test yes = "$build_old_libs"; then
3482 removelist
="$obj $lobj $libobj ${libobj}T"
3484 removelist
="$lobj $libobj ${libobj}T"
3487 # On Cygwin there's no "real" PIC flag so we must build both object types
3489 cygwin
* | mingw
* | pw32
* | os2
* | cegcc
*)
3493 if test no
= "$pic_mode" && test pass_all
!= "$deplibs_check_method"; then
3494 # non-PIC code in shared libraries is not supported
3498 # Calculate the filename of the output object if compiler does
3499 # not support -o with -c
3500 if test no
= "$compiler_c_o"; then
3501 output_obj
=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.
$objext
3502 lockfile
=$output_obj.lock
3509 # Lock this critical section if it is needed
3510 # We use this script file to make the link, it avoids creating a new file
3511 if test yes = "$need_locks"; then
3512 until $opt_dry_run ||
ln "$progpath" "$lockfile" 2>/dev
/null
; do
3513 func_echo
"Waiting for $lockfile to be removed"
3516 elif test warn
= "$need_locks"; then
3517 if test -f "$lockfile"; then
3519 *** ERROR, $lockfile exists and contains:
3520 `cat $lockfile 2>/dev/null`
3522 This indicates that another process is trying to use the same
3523 temporary object file, and libtool could not work around it because
3524 your compiler does not support '-c' and '-o' together. If you
3525 repeat this compilation, it may succeed, by chance, but you had better
3526 avoid parallel builds (make -j) in this platform, or get a better
3529 $opt_dry_run ||
$RM $removelist
3532 func_append removelist
" $output_obj"
3533 $ECHO "$srcfile" > "$lockfile"
3536 $opt_dry_run ||
$RM $removelist
3537 func_append removelist
" $lockfile"
3538 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
3540 func_to_tool_file
"$srcfile" func_convert_file_msys_to_w32
3541 srcfile
=$func_to_tool_file_result
3542 func_quote_for_eval
"$srcfile"
3543 qsrcfile
=$func_quote_for_eval_result
3545 # Only build a PIC object if we are building libtool libraries.
3546 if test yes = "$build_libtool_libs"; then
3547 # Without this assignment, base_compile gets emptied.
3548 fbsd_hideous_sh_bug
=$base_compile
3550 if test no
!= "$pic_mode"; then
3551 command="$base_compile $qsrcfile $pic_flag"
3553 # Don't build PIC code
3554 command="$base_compile $qsrcfile"
3557 func_mkdir_p
"$xdir$objdir"
3559 if test -z "$output_obj"; then
3560 # Place PIC objects in $objdir
3561 func_append
command " -o $lobj"
3564 func_show_eval_locale
"$command" \
3565 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
3567 if test warn
= "$need_locks" &&
3568 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3570 *** ERROR, $lockfile contains:
3571 `cat $lockfile 2>/dev/null`
3573 but it should contain:
3576 This indicates that another process is trying to use the same
3577 temporary object file, and libtool could not work around it because
3578 your compiler does not support '-c' and '-o' together. If you
3579 repeat this compilation, it may succeed, by chance, but you had better
3580 avoid parallel builds (make -j) in this platform, or get a better
3583 $opt_dry_run ||
$RM $removelist
3587 # Just move the object if needed, then go on to compile the next one
3588 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
3589 func_show_eval
'$MV "$output_obj" "$lobj"' \
3590 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3593 # Allow error messages only from the first compilation.
3594 if test yes = "$suppress_opt"; then
3595 suppress_output
=' >/dev/null 2>&1'
3599 # Only build a position-dependent object if we build old libraries.
3600 if test yes = "$build_old_libs"; then
3601 if test yes != "$pic_mode"; then
3602 # Don't build PIC code
3603 command="$base_compile $qsrcfile$pie_flag"
3605 command="$base_compile $qsrcfile $pic_flag"
3607 if test yes = "$compiler_c_o"; then
3608 func_append
command " -o $obj"
3611 # Suppress compiler output if we already did a PIC compilation.
3612 func_append
command "$suppress_output"
3613 func_show_eval_locale
"$command" \
3614 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
3616 if test warn
= "$need_locks" &&
3617 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3619 *** ERROR, $lockfile contains:
3620 `cat $lockfile 2>/dev/null`
3622 but it should contain:
3625 This indicates that another process is trying to use the same
3626 temporary object file, and libtool could not work around it because
3627 your compiler does not support '-c' and '-o' together. If you
3628 repeat this compilation, it may succeed, by chance, but you had better
3629 avoid parallel builds (make -j) in this platform, or get a better
3632 $opt_dry_run ||
$RM $removelist
3636 # Just move the object if needed
3637 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
3638 func_show_eval
'$MV "$output_obj" "$obj"' \
3639 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3644 func_write_libtool_object
"$libobj" "$objdir/$objname" "$objname"
3646 # Unlock the critical section if it was locked
3647 if test no
!= "$need_locks"; then
3648 removelist
=$lockfile
3657 test compile
= "$opt_mode" && func_mode_compile
${1+"$@"}
3662 # We need to display help for each of the modes.
3665 # Generic help is extracted from the usage comments
3666 # at the start of this file.
3672 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
3674 Remove files from the build directory.
3676 RM is the name of the program to use to delete files associated with each FILE
3677 (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
3680 If FILE is a libtool library, object or program, all the files associated
3681 with it are deleted. Otherwise, only FILE itself is deleted using RM."
3686 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3688 Compile a source file into a libtool library object.
3690 This mode accepts the following additional options:
3692 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
3693 -no-suppress do not suppress compiler output for multiple passes
3694 -prefer-pic try to build PIC objects only
3695 -prefer-non-pic try to build non-PIC objects only
3696 -shared do not build a '.o' file suitable for static linking
3697 -static only build a '.o' file suitable for static linking
3698 -Wc,FLAG pass FLAG directly to the compiler
3700 COMPILE-COMMAND is a command to be used in creating a 'standard' object file
3701 from the given SOURCEFILE.
3703 The output file name is determined by removing the directory component from
3704 SOURCEFILE, then substituting the C source code suffix '.c' with the
3705 library object suffix, '.lo'."
3710 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
3712 Automatically set library path, then run a program.
3714 This mode accepts the following additional options:
3716 -dlopen FILE add the directory containing FILE to the library path
3718 This mode sets the library path environment variable according to '-dlopen'
3721 If any of the ARGS are libtool executable wrappers, then they are translated
3722 into their corresponding uninstalled binary, and any of their required library
3723 directories are added to the library path.
3725 Then, COMMAND is executed, with ARGS as arguments."
3730 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
3732 Complete the installation of libtool libraries.
3734 Each LIBDIR is a directory that contains libtool libraries.
3736 The commands that this mode executes may require superuser privileges. Use
3737 the '--dry-run' option if you just want to see what would be executed."
3742 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
3744 Install executables or libraries.
3746 INSTALL-COMMAND is the installation command. The first component should be
3747 either the 'install' or 'cp' program.
3749 The following components of INSTALL-COMMAND are treated specially:
3751 -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
3753 The rest of the components are interpreted as arguments to that command (only
3754 BSD-compatible install options are recognized)."
3759 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
3761 Link object files or libraries together to form another library, or to
3762 create an executable program.
3764 LINK-COMMAND is a command using the C compiler that you would use to create
3765 a program from several object files.
3767 The following components of LINK-COMMAND are treated specially:
3769 -all-static do not do any dynamic linking at all
3770 -avoid-version do not add a version suffix if possible
3771 -bindir BINDIR specify path to binaries directory (for systems where
3772 libraries must be found in the PATH setting at runtime)
3773 -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime
3774 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
3775 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3776 -export-symbols SYMFILE
3777 try to export only the symbols listed in SYMFILE
3778 -export-symbols-regex REGEX
3779 try to export only the symbols matching REGEX
3780 -LLIBDIR search LIBDIR for required installed libraries
3781 -lNAME OUTPUT-FILE requires the installed library libNAME
3782 -module build a library that can dlopened
3783 -no-fast-install disable the fast-install mode
3784 -no-install link a not-installable executable
3785 -no-undefined declare that a library does not refer to external symbols
3786 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
3787 -objectlist FILE use a list of object files found in FILE to specify objects
3788 -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes)
3789 -precious-files-regex REGEX
3790 don't remove output files matching REGEX
3791 -release RELEASE specify package release information
3792 -rpath LIBDIR the created library will eventually be installed in LIBDIR
3793 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
3794 -shared only do dynamic linking of libtool libraries
3795 -shrext SUFFIX override the standard shared library file extension
3796 -static do not do any dynamic linking of uninstalled libtool libraries
3797 -static-libtool-libs
3798 do not do any dynamic linking of libtool libraries
3799 -version-info CURRENT[:REVISION[:AGE]]
3800 specify library version info [each variable defaults to 0]
3801 -weak LIBNAME declare that the target provides the LIBNAME interface
3803 -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
3805 -Xlinker FLAG pass linker-specific FLAG directly to the linker
3806 -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
3808 All other options (arguments beginning with '-') are ignored.
3810 Every other argument is treated as a filename. Files ending in '.la' are
3811 treated as uninstalled libtool libraries, other files are standard or library
3814 If the OUTPUT-FILE ends in '.la', then a libtool library is created,
3815 only library objects ('.lo' files) may be specified, and '-rpath' is
3816 required, except when creating a convenience library.
3818 If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
3819 using 'ar' and 'ranlib', or on Windows using 'lib'.
3821 If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
3822 is created, otherwise an executable program is created."
3827 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
3829 Remove libraries from an installation directory.
3831 RM is the name of the program to use to delete files associated with each FILE
3832 (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
3835 If FILE is a libtool library, all the files associated with it are deleted.
3836 Otherwise, only FILE itself is deleted using RM."
3840 func_fatal_help
"invalid operation mode '$opt_mode'"
3845 $ECHO "Try '$progname --help' for more information about other modes."
3848 # Now that we've collected a possible --mode arg, show help if necessary
3850 if test : = "$opt_help"; then
3855 for opt_mode
in compile link execute
install finish uninstall clean
; do
3858 } |
$SED -n '1p; 2,$s/^Usage:/ or: /p'
3861 for opt_mode
in compile link execute
install finish uninstall clean
; do
3867 /^When reporting/,/^Report/{
3872 /information about other modes/d
3873 /more detailed .*MODE/d
3874 s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
3880 # func_mode_execute arg...
3881 func_mode_execute
()
3885 # The first argument is the command name.
3888 func_fatal_help
"you must specify a COMMAND"
3890 # Handle -dlopen flags immediately.
3891 for file in $opt_dlopen; do
3893 || func_fatal_help
"'$file' is not a file"
3898 func_resolve_sysroot
"$file"
3899 file=$func_resolve_sysroot_result
3901 # Check to see that this really is a libtool archive.
3902 func_lalib_unsafe_p
"$file" \
3903 || func_fatal_help
"'$lib' is not a valid libtool archive"
3905 # Read the libtool library.
3910 # Skip this library if it cannot be dlopened.
3911 if test -z "$dlname"; then
3912 # Warn if it was a shared library.
3913 test -n "$library_names" && \
3914 func_warning
"'$file' was not linked with '-export-dynamic'"
3918 func_dirname
"$file" "" "."
3919 dir
=$func_dirname_result
3921 if test -f "$dir/$objdir/$dlname"; then
3922 func_append dir
"/$objdir"
3924 if test ! -f "$dir/$dlname"; then
3925 func_fatal_error
"cannot find '$dlname' in '$dir' or '$dir/$objdir'"
3931 # Just add the directory containing the .lo file.
3932 func_dirname
"$file" "" "."
3933 dir
=$func_dirname_result
3937 func_warning
"'-dlopen' is ignored for non-libtool libraries and objects"
3942 # Get the absolute pathname.
3943 absdir
=`cd "$dir" && pwd`
3944 test -n "$absdir" && dir
=$absdir
3946 # Now add the directory to shlibpath_var.
3947 if eval "test -z \"\$$shlibpath_var\""; then
3948 eval "$shlibpath_var=\"\$dir\""
3950 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3954 # This variable tells wrapper scripts just to set shlibpath_var
3955 # rather than running their programs.
3956 libtool_execute_magic
=$magic
3958 # Check if any of the arguments is a wrapper script.
3963 -* |
*.la |
*.lo
) ;;
3965 # Do a test to see if this is really a libtool program.
3966 if func_ltwrapper_script_p
"$file"; then
3968 # Transform arg to wrapped name.
3969 file=$progdir/$program
3970 elif func_ltwrapper_executable_p
"$file"; then
3971 func_ltwrapper_scriptname
"$file"
3972 func_source
"$func_ltwrapper_scriptname_result"
3973 # Transform arg to wrapped name.
3974 file=$progdir/$program
3978 # Quote arguments (to preserve shell metacharacters).
3979 func_append_quoted args
"$file"
3982 if $opt_dry_run; then
3983 # Display what would be done.
3984 if test -n "$shlibpath_var"; then
3985 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
3986 echo "export $shlibpath_var"
3991 if test -n "$shlibpath_var"; then
3992 # Export the shlibpath_var.
3993 eval "export $shlibpath_var"
3996 # Restore saved environment variables
3997 for lt_var
in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
3999 eval "if test \"\${save_$lt_var+set}\" = set; then
4000 $lt_var=\$save_$lt_var; export $lt_var
4006 # Now prepare to actually exec the command.
4011 test execute
= "$opt_mode" && func_mode_execute
${1+"$@"}
4014 # func_mode_finish arg...
4023 for opt
in "$nonopt" ${1+"$@"}
4025 if test -d "$opt"; then
4026 func_append libdirs
" $opt"
4028 elif test -f "$opt"; then
4029 if func_lalib_unsafe_p
"$opt"; then
4030 func_append libs
" $opt"
4032 func_warning
"'$opt' is not a valid libtool archive"
4036 func_fatal_error
"invalid argument '$opt'"
4040 if test -n "$libs"; then
4041 if test -n "$lt_sysroot"; then
4042 sysroot_regex
=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
4043 sysroot_cmd
="s/\([ ']\)$sysroot_regex/\1/g;"
4048 # Remove sysroot references
4049 if $opt_dry_run; then
4050 for lib
in $libs; do
4051 echo "removing references to $lt_sysroot and '=' prefixes from $lib"
4054 tmpdir
=`func_mktempdir`
4055 for lib
in $libs; do
4056 $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
4058 mv -f $tmpdir/tmp-la
$lib
4064 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4065 for libdir
in $libdirs; do
4066 if test -n "$finish_cmds"; then
4067 # Do each command in the finish commands.
4068 func_execute_cmds
"$finish_cmds" 'admincmds="$admincmds
4071 if test -n "$finish_eval"; then
4072 # Do the single finish_eval.
4073 eval cmds
=\"$finish_eval\"
4074 $opt_dry_run ||
eval "$cmds" || func_append admincmds
"
4080 # Exit here if they wanted silent mode.
4081 $opt_quiet && exit $EXIT_SUCCESS
4083 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4084 echo "----------------------------------------------------------------------"
4085 echo "Libraries have been installed in:"
4086 for libdir
in $libdirs; do
4090 echo "If you ever happen to want to link against installed libraries"
4091 echo "in a given directory, LIBDIR, you must either use libtool, and"
4092 echo "specify the full pathname of the library, or use the '-LLIBDIR'"
4093 echo "flag during linking and do at least one of the following:"
4094 if test -n "$shlibpath_var"; then
4095 echo " - add LIBDIR to the '$shlibpath_var' environment variable"
4096 echo " during execution"
4098 if test -n "$runpath_var"; then
4099 echo " - add LIBDIR to the '$runpath_var' environment variable"
4100 echo " during linking"
4102 if test -n "$hardcode_libdir_flag_spec"; then
4104 eval flag
=\"$hardcode_libdir_flag_spec\"
4106 $ECHO " - use the '$flag' linker flag"
4108 if test -n "$admincmds"; then
4109 $ECHO " - have your system administrator run these commands:$admincmds"
4111 if test -f /etc
/ld.so.conf
; then
4112 echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
4116 echo "See any operating system documentation about shared libraries for"
4118 solaris2.
[6789]|solaris2.1
[0-9])
4119 echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
4123 echo "more information, such as the ld(1) and ld.so(8) manual pages."
4126 echo "----------------------------------------------------------------------"
4131 test finish
= "$opt_mode" && func_mode_finish
${1+"$@"}
4134 # func_mode_install arg...
4135 func_mode_install
()
4139 # There may be an optional sh(1) argument at the beginning of
4140 # install_prog (especially on Windows NT).
4141 if test "$SHELL" = "$nonopt" ||
test /bin
/sh
= "$nonopt" ||
4142 # Allow the use of GNU shtool's install command.
4143 case $nonopt in *shtool
*) :;; *) false
;; esac
4145 # Aesthetically quote it.
4146 func_quote_for_eval
"$nonopt"
4147 install_prog
="$func_quote_for_eval_result "
4155 # The real first argument should be the name of the installation program.
4156 # Aesthetically quote it.
4157 func_quote_for_eval
"$arg"
4158 func_append install_prog
"$func_quote_for_eval_result"
4159 install_shared_prog
=$install_prog
4160 case " $install_prog " in
4161 *[\\\
/]cp\
*) install_cp
=: ;;
4162 *) install_cp
=false
;;
4165 # We need to accept at least all the BSD install flags.
4177 if test -n "$dest"; then
4178 func_append files
" $dest"
4186 if $install_cp; then :; else
4200 # If the previous option needed an argument, then skip it.
4201 if test -n "$prev"; then
4202 if test X-m
= "X$prev" && test -n "$install_override_mode"; then
4203 arg2
=$install_override_mode
4214 # Aesthetically quote the argument.
4215 func_quote_for_eval
"$arg"
4216 func_append install_prog
" $func_quote_for_eval_result"
4217 if test -n "$arg2"; then
4218 func_quote_for_eval
"$arg2"
4220 func_append install_shared_prog
" $func_quote_for_eval_result"
4223 test -z "$install_prog" && \
4224 func_fatal_help
"you must specify an install program"
4226 test -n "$prev" && \
4227 func_fatal_help
"the '$prev' option requires an argument"
4229 if test -n "$install_override_mode" && $no_mode; then
4230 if $install_cp; then :; else
4231 func_quote_for_eval
"$install_override_mode"
4232 func_append install_shared_prog
" -m $func_quote_for_eval_result"
4236 if test -z "$files"; then
4237 if test -z "$dest"; then
4238 func_fatal_help
"no file or destination specified"
4240 func_fatal_help
"you must specify a destination"
4244 # Strip any trailing slash from the destination.
4245 func_stripname
'' '/' "$dest"
4246 dest
=$func_stripname_result
4248 # Check to see that the destination is a directory.
4249 test -d "$dest" && isdir
=:
4254 func_dirname_and_basename
"$dest" "" "."
4255 destdir
=$func_dirname_result
4256 destname
=$func_basename_result
4258 # Not a directory, so check to see that there is only one file specified.
4259 set dummy
$files; shift
4260 test "$#" -gt 1 && \
4261 func_fatal_help
"'$dest' is not a directory"
4264 [\\/]* |
[A-Za-z
]:[\\/]*) ;;
4266 for file in $files; do
4270 func_fatal_help
"'$destdir' must be an absolute directory name"
4277 # This variable tells wrapper scripts just to set variables rather
4278 # than running their programs.
4279 libtool_install_magic
=$magic
4284 for file in $files; do
4286 # Do each installation.
4289 # Do the static libraries later.
4290 func_append staticlibs
" $file"
4294 func_resolve_sysroot
"$file"
4295 file=$func_resolve_sysroot_result
4297 # Check to see that this really is a libtool archive.
4298 func_lalib_unsafe_p
"$file" \
4299 || func_fatal_help
"'$file' is not a valid libtool archive"
4306 # Add the libdir to current_libdirs if it is the destination.
4307 if test "X$destdir" = "X$libdir"; then
4308 case "$current_libdirs " in
4310 *) func_append current_libdirs
" $libdir" ;;
4313 # Note the libdir as a future libdir.
4314 case "$future_libdirs " in
4316 *) func_append future_libdirs
" $libdir" ;;
4320 func_dirname
"$file" "/" ""
4321 dir
=$func_dirname_result
4322 func_append dir
"$objdir"
4324 if test -n "$relink_command"; then
4325 # Determine the prefix the user has applied to our future dir.
4326 inst_prefix_dir
=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
4328 # Don't allow the user to place us outside of our expected
4329 # location b/c this prevents finding dependent libraries that
4330 # are installed to the same prefix.
4331 # At present, this check doesn't affect windows .dll's that
4332 # are installed into $libdir/../bin (currently, that works fine)
4333 # but it's something to keep an eye on.
4334 test "$inst_prefix_dir" = "$destdir" && \
4335 func_fatal_error
"error: cannot install '$file' to a directory not ending in $libdir"
4337 if test -n "$inst_prefix_dir"; then
4338 # Stick the inst_prefix_dir data into the link command.
4339 relink_command
=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
4341 relink_command
=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
4344 func_warning
"relinking '$file'"
4345 func_show_eval
"$relink_command" \
4346 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
4349 # See the names of the shared library.
4350 set dummy
$library_names; shift
4351 if test -n "$1"; then
4356 test -n "$relink_command" && srcname
=${realname}T
4358 # Install the shared library and build the symlinks.
4359 func_show_eval
"$install_shared_prog $dir/$srcname $destdir/$realname" \
4363 cygwin
* | mingw
* | pw32
* | cegcc
*)
4378 if test -n "$tstripme" && test -n "$striplib"; then
4379 func_show_eval
"$striplib $destdir/$realname" 'exit $?'
4382 if test "$#" -gt 0; then
4383 # Delete the old symlinks, and create new ones.
4384 # Try 'ln -sf' first, because the 'ln' binary might depend on
4385 # the symlink we replace! Solaris /bin/ln does not understand -f,
4386 # so we also need to try rm && ln -s.
4389 test "$linkname" != "$realname" \
4390 && func_show_eval
"(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
4394 # Do each command in the postinstall commands.
4395 lib
=$destdir/$realname
4396 func_execute_cmds
"$postinstall_cmds" 'exit $?'
4399 # Install the pseudo-library for information purposes.
4400 func_basename
"$file"
4401 name
=$func_basename_result
4402 instname
=$dir/${name}i
4403 func_show_eval
"$install_prog $instname $destdir/$name" 'exit $?'
4405 # Maybe install the static library, too.
4406 test -n "$old_library" && func_append staticlibs
" $dir/$old_library"
4410 # Install (i.e. copy) a libtool object.
4412 # Figure out destination file name, if it wasn't already specified.
4413 if test -n "$destname"; then
4414 destfile
=$destdir/$destname
4416 func_basename
"$file"
4417 destfile
=$func_basename_result
4418 destfile
=$destdir/$destfile
4421 # Deduce the name of the destination old-style object file.
4424 func_lo2o
"$destfile"
4425 staticdest
=$func_lo2o_result
4428 staticdest
=$destfile
4432 func_fatal_help
"cannot copy a libtool object to '$destfile'"
4436 # Install the libtool object if requested.
4437 test -n "$destfile" && \
4438 func_show_eval
"$install_prog $file $destfile" 'exit $?'
4440 # Install the old object if enabled.
4441 if test yes = "$build_old_libs"; then
4442 # Deduce the name of the old-style object file.
4444 staticobj
=$func_lo2o_result
4445 func_show_eval
"$install_prog \$staticobj \$staticdest" 'exit $?'
4451 # Figure out destination file name, if it wasn't already specified.
4452 if test -n "$destname"; then
4453 destfile
=$destdir/$destname
4455 func_basename
"$file"
4456 destfile
=$func_basename_result
4457 destfile
=$destdir/$destfile
4460 # If the file is missing, and there is a .exe on the end, strip it
4461 # because it is most likely a libtool script we actually want to
4466 if test ! -f "$file"; then
4467 func_stripname
'' '.exe' "$file"
4468 file=$func_stripname_result
4474 # Do a test to see if this is really a libtool program.
4477 if func_ltwrapper_executable_p
"$file"; then
4478 func_ltwrapper_scriptname
"$file"
4479 wrapper
=$func_ltwrapper_scriptname_result
4481 func_stripname
'' '.exe' "$file"
4482 wrapper
=$func_stripname_result
4489 if func_ltwrapper_script_p
"$wrapper"; then
4493 func_source
"$wrapper"
4495 # Check the variables that should have been set.
4496 test -z "$generated_by_libtool_version" && \
4497 func_fatal_error
"invalid libtool wrapper script '$wrapper'"
4500 for lib
in $notinst_deplibs; do
4501 # Check to see that each library is installed.
4503 if test -f "$lib"; then
4506 libfile
=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
4507 if test -n "$libdir" && test ! -f "$libfile"; then
4508 func_warning
"'$lib' has not been installed in '$libdir'"
4514 func_source
"$wrapper"
4517 if test no
= "$fast_install" && test -n "$relink_command"; then
4520 tmpdir
=`func_mktempdir`
4521 func_basename
"$file$stripped_ext"
4522 file=$func_basename_result
4523 outputname
=$tmpdir/$file
4524 # Replace the output file specification.
4525 relink_command
=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
4528 func_quote_for_expand
"$relink_command"
4529 eval "func_echo $func_quote_for_expand_result"
4531 if eval "$relink_command"; then :
4533 func_error
"error: relink '$file' with the above command before installing it"
4534 $opt_dry_run ||
${RM}r
"$tmpdir"
4539 func_warning
"cannot relink '$file'"
4543 # Install the binary that we compiled earlier.
4544 file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
4548 # remove .exe since cygwin /usr/bin/install will append another
4550 case $install_prog,$host in
4551 */usr
/bin
/install*,*cygwin
*)
4552 case $file:$destfile in
4557 destfile
=$destfile.exe
4560 func_stripname
'' '.exe' "$destfile"
4561 destfile
=$func_stripname_result
4566 func_show_eval
"$install_prog\$stripme \$file \$destfile" 'exit $?'
4567 $opt_dry_run ||
if test -n "$outputname"; then
4574 for file in $staticlibs; do
4575 func_basename
"$file"
4576 name
=$func_basename_result
4578 # Set up the ranlib parameters.
4579 oldlib
=$destdir/$name
4580 func_to_tool_file
"$oldlib" func_convert_file_msys_to_w32
4581 tool_oldlib
=$func_to_tool_file_result
4583 func_show_eval
"$install_prog \$file \$oldlib" 'exit $?'
4585 if test -n "$stripme" && test -n "$old_striplib"; then
4586 func_show_eval
"$old_striplib $tool_oldlib" 'exit $?'
4589 # Do each command in the postinstall commands.
4590 func_execute_cmds
"$old_postinstall_cmds" 'exit $?'
4593 test -n "$future_libdirs" && \
4594 func_warning
"remember to run '$progname --finish$future_libdirs'"
4596 if test -n "$current_libdirs"; then
4597 # Maybe just do a dry run.
4598 $opt_dry_run && current_libdirs
=" -n$current_libdirs"
4599 exec_cmd
='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
4605 test install = "$opt_mode" && func_mode_install
${1+"$@"}
4608 # func_generate_dlsyms outputname originator pic_p
4609 # Extract symbols from dlprefiles and create ${outputname}S.o with
4610 # a dlpreopen symbol table.
4611 func_generate_dlsyms
()
4618 my_prefix
=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
4621 if test -n "$dlfiles$dlprefiles" ||
test no
!= "$dlself"; then
4622 if test -n "$NM" && test -n "$global_symbol_pipe"; then
4623 my_dlsyms
=${my_outputname}S.c
4625 func_error
"not configured to extract global symbols from dlpreopened files"
4629 if test -n "$my_dlsyms"; then
4633 # Discover the nlist of each of the dlfiles.
4634 nlist
=$output_objdir/$my_outputname.nm
4636 func_show_eval
"$RM $nlist ${nlist}S ${nlist}T"
4638 # Parse the name list into a source file.
4639 func_verbose
"creating $output_objdir/$my_dlsyms"
4641 $opt_dry_run ||
$ECHO > "$output_objdir/$my_dlsyms" "\
4642 /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
4643 /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
4649 #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
4650 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
4653 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
4654 #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
4655 /* DATA imports from DLLs on WIN32 can't be const, because runtime
4656 relocations are performed -- see ld's documentation on pseudo-relocs. */
4657 # define LT_DLSYM_CONST
4658 #elif defined __osf__
4659 /* This system does not cope well with relocations in const data. */
4660 # define LT_DLSYM_CONST
4662 # define LT_DLSYM_CONST const
4665 #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
4667 /* External symbol declarations for the compiler. */\
4670 if test yes = "$dlself"; then
4671 func_verbose
"generating symbol list for '$output'"
4673 $opt_dry_run ||
echo ': @PROGRAM@ ' > "$nlist"
4675 # Add our own program objects to the symbol list.
4676 progfiles
=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
4677 for progfile
in $progfiles; do
4678 func_to_tool_file
"$progfile" func_convert_file_msys_to_w32
4679 func_verbose
"extracting global C symbols from '$func_to_tool_file_result'"
4680 $opt_dry_run ||
eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
4683 if test -n "$exclude_expsyms"; then
4685 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4686 eval '$MV "$nlist"T "$nlist"'
4690 if test -n "$export_symbols_regex"; then
4692 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4693 eval '$MV "$nlist"T "$nlist"'
4697 # Prepare the list of exported symbols
4698 if test -z "$export_symbols"; then
4699 export_symbols
=$output_objdir/$outputname.exp
4702 eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4704 *cygwin
* |
*mingw
* |
*cegcc
* )
4705 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4706 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4712 eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4713 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4714 eval '$MV "$nlist"T "$nlist"'
4716 *cygwin
* |
*mingw
* |
*cegcc
* )
4717 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4718 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4725 for dlprefile
in $dlprefiles; do
4726 func_verbose
"extracting global C symbols from '$dlprefile'"
4727 func_basename
"$dlprefile"
4728 name
=$func_basename_result
4730 *cygwin
* |
*mingw
* |
*cegcc
* )
4731 # if an import library, we need to obtain dlname
4732 if func_win32_import_lib_p
"$dlprefile"; then
4733 func_tr_sh
"$dlprefile"
4734 eval "curr_lafile=\$libfile_$func_tr_sh_result"
4735 dlprefile_dlbasename
=
4736 if test -n "$curr_lafile" && func_lalib_p
"$curr_lafile"; then
4737 # Use subshell, to avoid clobbering current variable values
4738 dlprefile_dlname
=`source "$curr_lafile" && echo "$dlname"`
4739 if test -n "$dlprefile_dlname"; then
4740 func_basename
"$dlprefile_dlname"
4741 dlprefile_dlbasename
=$func_basename_result
4743 # no lafile. user explicitly requested -dlpreopen <import library>.
4744 $sharedlib_from_linklib_cmd "$dlprefile"
4745 dlprefile_dlbasename
=$sharedlib_from_linklib_result
4749 if test -n "$dlprefile_dlbasename"; then
4750 eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
4752 func_warning
"Could not compute DLL name from $name"
4753 eval '$ECHO ": $name " >> "$nlist"'
4755 func_to_tool_file
"$dlprefile" func_convert_file_msys_to_w32
4756 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
4757 $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
4759 else # not an import lib
4761 eval '$ECHO ": $name " >> "$nlist"'
4762 func_to_tool_file
"$dlprefile" func_convert_file_msys_to_w32
4763 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4769 eval '$ECHO ": $name " >> "$nlist"'
4770 func_to_tool_file
"$dlprefile" func_convert_file_msys_to_w32
4771 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4778 # Make sure we have at least an empty file.
4779 test -f "$nlist" ||
: > "$nlist"
4781 if test -n "$exclude_expsyms"; then
4782 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4783 $MV "$nlist"T
"$nlist"
4786 # Try sorting and uniquifying the output.
4787 if $GREP -v "^: " < "$nlist" |
4788 if sort -k 3 </dev
/null
>/dev
/null
2>&1; then
4793 uniq > "$nlist"S
; then
4796 $GREP -v "^: " < "$nlist" > "$nlist"S
4799 if test -f "$nlist"S
; then
4800 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
4802 echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
4805 func_show_eval
'$RM "${nlist}I"'
4806 if test -n "$global_symbol_to_import"; then
4807 eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
4810 echo >> "$output_objdir/$my_dlsyms" "\
4812 /* The mapping between symbol names and symbols. */
4817 extern LT_DLSYM_CONST lt_dlsymlist
4818 lt_${my_prefix}_LTX_preloaded_symbols[];\
4821 if test -s "$nlist"I
; then
4822 echo >> "$output_objdir/$my_dlsyms" "\
4823 static void lt_syminit(void)
4825 LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
4826 for (; symbol->name; ++symbol)
4828 $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I
>> "$output_objdir/$my_dlsyms"
4829 echo >> "$output_objdir/$my_dlsyms" "\
4833 echo >> "$output_objdir/$my_dlsyms" "\
4834 LT_DLSYM_CONST lt_dlsymlist
4835 lt_${my_prefix}_LTX_preloaded_symbols[] =
4836 { {\"$my_originator\", (void *) 0},"
4838 if test -s "$nlist"I
; then
4839 echo >> "$output_objdir/$my_dlsyms" "\
4840 {\"@INIT@\", (void *) <_syminit},"
4843 case $need_lib_prefix in
4845 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
4848 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
4851 echo >> "$output_objdir/$my_dlsyms" "\
4855 /* This works around a problem in FreeBSD linker */
4856 #ifdef FREEBSD_WORKAROUND
4857 static const void *lt_preloaded_setup() {
4858 return lt_${my_prefix}_LTX_preloaded_symbols;
4868 pic_flag_for_symtable
=
4869 case "$compile_command " in
4873 # compiling the symbol table file with pic_flag works around
4874 # a FreeBSD bug that causes programs to crash when -lm is
4875 # linked before any other PIC object. But we must not use
4876 # pic_flag when linking with -static. The problem exists in
4877 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4878 *-*-freebsd2.
*|
*-*-freebsd3.0
*|
*-*-freebsdelf3.0
*)
4879 pic_flag_for_symtable
=" $pic_flag -DFREEBSD_WORKAROUND" ;;
4881 pic_flag_for_symtable
=" $pic_flag" ;;
4883 $my_pic_p && pic_flag_for_symtable
=" $pic_flag"
4889 for arg
in $LTCFLAGS; do
4891 -pie |
-fpie |
-fPIE) ;;
4892 *) func_append symtab_cflags
" $arg" ;;
4896 # Now compile the dynamic symbol file.
4897 func_show_eval
'(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
4899 # Clean up the generated files.
4900 func_show_eval
'$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
4902 # Transform the symbol file into the correct name.
4903 symfileobj
=$output_objdir/${my_outputname}S.
$objext
4905 *cygwin
* |
*mingw
* |
*cegcc
* )
4906 if test -f "$output_objdir/$my_outputname.def"; then
4907 compile_command
=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
4908 finalize_command
=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
4910 compile_command
=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
4911 finalize_command
=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
4915 compile_command
=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
4916 finalize_command
=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
4921 func_fatal_error
"unknown suffix for '$my_dlsyms'"
4925 # We keep going just in case the user didn't refer to
4926 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4927 # really was required.
4929 # Nullify the symbol file.
4930 compile_command
=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
4931 finalize_command
=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
4935 # func_cygming_gnu_implib_p ARG
4936 # This predicate returns with zero status (TRUE) if
4937 # ARG is a GNU/binutils-style import library. Returns
4938 # with nonzero status (FALSE) otherwise.
4939 func_cygming_gnu_implib_p
()
4943 func_to_tool_file
"$1" func_convert_file_msys_to_w32
4944 func_cygming_gnu_implib_tmp
=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
4945 test -n "$func_cygming_gnu_implib_tmp"
4948 # func_cygming_ms_implib_p ARG
4949 # This predicate returns with zero status (TRUE) if
4950 # ARG is an MS-style import library. Returns
4951 # with nonzero status (FALSE) otherwise.
4952 func_cygming_ms_implib_p
()
4956 func_to_tool_file
"$1" func_convert_file_msys_to_w32
4957 func_cygming_ms_implib_tmp
=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
4958 test -n "$func_cygming_ms_implib_tmp"
4961 # func_win32_libid arg
4962 # return the library type of file 'arg'
4964 # Need a lot of goo to handle *both* DLLs and import libs
4965 # Has to be a shell function in order to 'eat' the argument
4966 # that is supplied when $file_magic_command is called.
4967 # Despite the name, also deal with 64 bit binaries.
4972 win32_libid_type
=unknown
4973 win32_fileres
=`file -L $1 2>/dev/null`
4974 case $win32_fileres in
4975 *ar\ archive\ import\ library
*) # definitely import
4976 win32_libid_type
="x86 archive import"
4978 *ar\ archive
*) # could be an import, or static
4979 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
4980 if eval $OBJDUMP -f $1 |
$SED -e '10q' 2>/dev
/null |
4981 $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev
/null
; then
4982 case $nm_interface in
4984 if func_cygming_ms_implib_p
"$1" ||
4985 func_cygming_gnu_implib_p
"$1"
4993 func_to_tool_file
"$1" func_convert_file_msys_to_w32
4994 win32_nmres
=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
5005 case $win32_nmres in
5006 import
*) win32_libid_type
="x86 archive import";;
5007 *) win32_libid_type
="x86 archive static";;
5012 win32_libid_type
="x86 DLL"
5014 *executable
*) # but shell scripts are "executable" too...
5015 case $win32_fileres in
5016 *MS\ Windows\ PE\ Intel
*)
5017 win32_libid_type
="x86 DLL"
5022 $ECHO "$win32_libid_type"
5025 # func_cygming_dll_for_implib ARG
5027 # Platform-specific function to extract the
5028 # name of the DLL associated with the specified
5029 # import library ARG.
5030 # Invoked by eval'ing the libtool variable
5031 # $sharedlib_from_linklib_cmd
5032 # Result is available in the variable
5033 # $sharedlib_from_linklib_result
5034 func_cygming_dll_for_implib
()
5038 sharedlib_from_linklib_result
=`$DLLTOOL --identify-strict --identify "$1"`
5041 # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
5043 # The is the core of a fallback implementation of a
5044 # platform-specific function to extract the name of the
5045 # DLL associated with the specified import library LIBNAME.
5047 # SECTION_NAME is either .idata$6 or .idata$7, depending
5048 # on the platform and compiler that created the implib.
5050 # Echos the name of the DLL associated with the
5051 # specified import library.
5052 func_cygming_dll_for_implib_fallback_core
()
5056 match_literal
=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
5057 $OBJDUMP -s --section "$1" "$2" 2>/dev
/null |
5058 $SED '/^Contents of section '"$match_literal"':/{
5059 # Place marker at beginning of archive member dllname section
5064 # These lines can sometimes be longer than 43 characters, but
5065 # are always uninteresting
5066 /:[ ]*file format pe[i]\{,1\}-/d
5067 /^In archive [^:]*:/d
5068 # Ensure marker is printed
5070 # Remove all lines with less than 43 characters
5072 # From remaining lines, remove first 43 characters
5075 # Join marker and all lines until next marker into a single line
5076 /^====MARK====/ b para
5085 # Remove trailing dots and whitespace
5089 # we now have a list, one entry per line, of the stringified
5090 # contents of the appropriate section of all members of the
5091 # archive that possess that section. Heuristic: eliminate
5092 # all those that have a first or second character that is
5093 # a '.' (that is, objdump's representation of an unprintable
5094 # character.) This should work for all archives with less than
5095 # 0x302f exports -- but will fail for DLLs whose name actually
5096 # begins with a literal '.' or a single character followed by
5099 # Of those that remain, print the first one.
5100 $SED -e '/^\./d;/^.\./d;q'
5103 # func_cygming_dll_for_implib_fallback ARG
5104 # Platform-specific function to extract the
5105 # name of the DLL associated with the specified
5106 # import library ARG.
5108 # This fallback implementation is for use when $DLLTOOL
5109 # does not support the --identify-strict option.
5110 # Invoked by eval'ing the libtool variable
5111 # $sharedlib_from_linklib_cmd
5112 # Result is available in the variable
5113 # $sharedlib_from_linklib_result
5114 func_cygming_dll_for_implib_fallback
()
5118 if func_cygming_gnu_implib_p
"$1"; then
5119 # binutils import library
5120 sharedlib_from_linklib_result
=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
5121 elif func_cygming_ms_implib_p
"$1"; then
5122 # ms-generated import library
5123 sharedlib_from_linklib_result
=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
5126 sharedlib_from_linklib_result
=
5131 # func_extract_an_archive dir oldlib
5132 func_extract_an_archive
()
5136 f_ex_an_ar_dir
=$1; shift
5137 f_ex_an_ar_oldlib
=$1
5138 if test yes = "$lock_old_archive_extraction"; then
5139 lockfile
=$f_ex_an_ar_oldlib.lock
5140 until $opt_dry_run ||
ln "$progpath" "$lockfile" 2>/dev
/null
; do
5141 func_echo
"Waiting for $lockfile to be removed"
5145 func_show_eval
"(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
5146 'stat=$?; rm -f "$lockfile"; exit $stat'
5147 if test yes = "$lock_old_archive_extraction"; then
5148 $opt_dry_run ||
rm -f "$lockfile"
5150 if ($AR t
"$f_ex_an_ar_oldlib" |
sort |
sort -uc >/dev
/null
2>&1); then
5153 func_fatal_error
"object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
5158 # func_extract_archives gentop oldlib ...
5159 func_extract_archives
()
5164 my_oldlibs
=${1+"$@"}
5170 for my_xlib
in $my_oldlibs; do
5171 # Extract the objects.
5173 [\\/]* |
[A-Za-z
]:[\\/]*) my_xabs
=$my_xlib ;;
5174 *) my_xabs
=`pwd`"/$my_xlib" ;;
5176 func_basename
"$my_xlib"
5177 my_xlib
=$func_basename_result
5180 case " $extracted_archives " in
5182 func_arith
$extracted_serial + 1
5183 extracted_serial
=$func_arith_result
5184 my_xlib_u
=lt
$extracted_serial-$my_xlib ;;
5188 extracted_archives
="$extracted_archives $my_xlib_u"
5189 my_xdir
=$my_gentop/$my_xlib_u
5191 func_mkdir_p
"$my_xdir"
5195 func_verbose
"Extracting $my_xabs"
5196 # Do not bother doing anything if just a dry run
5198 darwin_orig_dir
=`pwd`
5199 cd $my_xdir ||
exit $?
5200 darwin_archive
=$my_xabs
5202 func_basename
"$darwin_archive"
5203 darwin_base_archive
=$func_basename_result
5204 darwin_arches
=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
5205 if test -n "$darwin_arches"; then
5206 darwin_arches
=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
5208 func_verbose
"$darwin_base_archive has multiple architectures $darwin_arches"
5209 for darwin_arch
in $darwin_arches; do
5210 func_mkdir_p
"unfat-$$/$darwin_base_archive-$darwin_arch"
5211 $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
5212 cd "unfat-$$/$darwin_base_archive-$darwin_arch"
5213 func_extract_an_archive
"`pwd`" "$darwin_base_archive"
5215 $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
5216 done # $darwin_arches
5217 ## Okay now we've a bunch of thin objects, gotta fatten them up :)
5218 darwin_filelist
=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
5221 for darwin_file
in $darwin_filelist; do
5222 darwin_files
=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
5223 $LIPO -create -output "$darwin_file" $darwin_files
5224 done # $darwin_filelist
5226 cd "$darwin_orig_dir"
5229 func_extract_an_archive
"$my_xdir" "$my_xabs"
5234 func_extract_an_archive
"$my_xdir" "$my_xabs"
5237 my_oldobjs
="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
5240 func_extract_archives_result
=$my_oldobjs
5244 # func_emit_wrapper [arg=no]
5246 # Emit a libtool wrapper script on stdout.
5247 # Don't directly open a file because we may want to
5248 # incorporate the script contents within a cygwin/mingw
5249 # wrapper executable. Must ONLY be called from within
5250 # func_mode_link because it depends on a number of variables
5253 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
5254 # variable will take. If 'yes', then the emitted script
5255 # will assume that the directory where it is stored is
5256 # the $objdir directory. This is a cygwin/mingw-specific
5258 func_emit_wrapper
()
5260 func_emit_wrapper_arg1
=${1-no}
5265 # $output - temporary wrapper script for $objdir/$outputname
5266 # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5268 # The $output program cannot be directly executed until all the libtool
5269 # libraries that it depends on are installed.
5271 # This wrapper script should never be moved out of the build directory.
5272 # If it is, it will not operate correctly.
5274 # Sed substitution that helps us do robust quoting. It backslashifies
5275 # metacharacters that are still active within double-quoted strings.
5276 sed_quote_subst='$sed_quote_subst'
5278 # Be Bourne compatible
5279 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5282 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5283 # is contrary to our usage. Disable this feature.
5284 alias -g '\${1+\"\$@\"}'='\"\$@\"'
5285 setopt NO_GLOB_SUBST
5287 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5289 BIN_SH=xpg4; export BIN_SH # for Tru64
5290 DUALCASE=1; export DUALCASE # for MKS sh
5292 # The HP-UX ksh and POSIX shell print the target directory to stdout
5294 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5296 relink_command=\"$relink_command\"
5298 # This environment variable determines our operation mode.
5299 if test \"\$libtool_install_magic\" = \"$magic\"; then
5300 # install mode needs the following variables:
5301 generated_by_libtool_version='$macro_version'
5302 notinst_deplibs='$notinst_deplibs'
5304 # When we are sourced in execute mode, \$file and \$ECHO are already set.
5305 if test \"\$libtool_execute_magic\" != \"$magic\"; then
5309 qECHO
=$func_quote_result
5312 # A function that is used when there is no print builtin or printf.
5313 func_fallback_echo ()
5315 eval 'cat <<_LTECHO_EOF
5322 # Very basic option parsing. These options are (a) specific to
5323 # the libtool wrapper, (b) are identical between the wrapper
5324 # /script/ and the wrapper /executable/ that is used only on
5325 # windows platforms, and (c) all begin with the string "--lt-"
5326 # (application programs are unlikely to have options that match
5329 # There are only two supported options: --lt-debug and
5330 # --lt-dump-script. There is, deliberately, no --lt-help.
5332 # The first argument to this parsing function should be the
5333 # script's $0 value, followed by "$@
".
5335 func_parse_lt_options ()
5341 case \"\$lt_opt\" in
5342 --lt-debug) lt_option_debug=1 ;;
5344 lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
5345 test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
5346 lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
5347 cat \"\$lt_dump_D/\$lt_dump_F\"
5351 \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
5357 # Print the debug banner immediately:
5358 if test -n \"\$lt_option_debug\"; then
5359 echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
5363 # Used when --lt-debug. Prints its arguments to stdout
5364 # (redirection is the responsibility of the caller)
5365 func_lt_dump_args ()
5370 \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
5371 lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
5375 # Core function for launching the target application
5376 func_exec_program_core ()
5380 # Backslashes separate directories on plain windows
5381 *-*-mingw |
*-*-os2* |
*-cegcc*)
5383 if test -n \"\$lt_option_debug\"; then
5384 \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
5385 func_lt_dump_args \${1+\"\$@\"} 1>&2
5387 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5393 if test -n \"\$lt_option_debug\"; then
5394 \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
5395 func_lt_dump_args \${1+\"\$@\"} 1>&2
5397 exec \"\$progdir/\$program\" \${1+\"\$@\"}
5402 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
5406 # A function to encapsulate launching the target application
5407 # Strips options in the --lt-* namespace from \$@ and
5408 # launches target application with the remaining arguments.
5409 func_exec_program ()
5417 *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
5422 func_exec_program_core \${1+\"\$@\"}
5426 func_parse_lt_options \"\$0\" \${1+\"\$@\"}
5428 # Find the directory that this script lives in.
5429 thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
5430 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5432 # Follow symbolic links until we get to the real thisdir.
5433 file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
5434 while test -n \"\$file\"; do
5435 destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
5437 # If there was a directory component, then change thisdir.
5438 if test \"x\$destdir\" != \"x\$file\"; then
5439 case \"\$destdir\" in
5440 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5441 *) thisdir=\"\$thisdir/\$destdir\" ;;
5445 file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
5446 file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
5449 # Usually 'no', except on cygwin/mingw when embedded into
5451 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
5452 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
5453 # special case for '.'
5454 if test \"\$thisdir\" = \".\"; then
5457 # remove .libs from thisdir
5458 case \"\$thisdir\" in
5459 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
5460 $objdir ) thisdir=. ;;
5464 # Try to get the absolute directory name.
5465 absdir=\`cd \"\$thisdir\" && pwd\`
5466 test -n \"\$absdir\" && thisdir=\"\$absdir\"
5469 if test yes = "$fast_install"; then
5471 program=lt-'$outputname'$exeext
5472 progdir=\"\$thisdir/$objdir\"
5474 if test ! -f \"\$progdir/\$program\" ||
5475 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
5476 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5478 file=\"\$\$-\$program\"
5480 if test ! -d \"\$progdir\"; then
5481 $MKDIR \"\$progdir\"
5483 $RM \"\$progdir/\$file\"
5488 # relink executable if necessary
5489 if test -n \"\$relink_command\"; then
5490 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5492 \$ECHO \"\$relink_command_output\" >&2
5493 $RM \"\$progdir/\$file\"
5498 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5499 { $RM \"\$progdir/\$program\";
5500 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5501 $RM \"\$progdir/\$file\"
5505 program='$outputname'
5506 progdir=\"\$thisdir/$objdir\"
5512 if test -f \"\$progdir/\$program\"; then"
5514 # fixup the dll searchpath if we need to.
5516 # Fix the DLL searchpath if we need to. Do this before prepending
5517 # to shlibpath, because on Windows, both are PATH and uninstalled
5518 # libraries must come first.
5519 if test -n "$dllsearchpath"; then
5521 # Add the dll search path components to the executable PATH
5522 PATH=$dllsearchpath:\$PATH
5526 # Export our shlibpath_var if we have one.
5527 if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5529 # Add our own library path to $shlibpath_var
5530 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5532 # Some systems cannot cope with colon-terminated $shlibpath_var
5533 # The second colon is a workaround for a bug in BeOS R4 sed
5534 $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
5536 export $shlibpath_var
5541 if test \"\$libtool_execute_magic\" != \"$magic\"; then
5542 # Run the actual program with our arguments.
5543 func_exec_program \${1+\"\$@\"}
5546 # The program doesn't exist.
5547 \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
5548 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
5549 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
5557 # func_emit_cwrapperexe_src
5558 # emit the source code for a wrapper executable on stdout
5559 # Must ONLY be called from within func_mode_link because
5560 # it depends on a number of variable set therein.
5561 func_emit_cwrapperexe_src
()
5565 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
5566 Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5568 The $output program cannot be directly executed until all the libtool
5569 libraries that it depends on are installed.
5571 This wrapper executable should never be moved out of the build directory.
5572 If it is, it will not operate correctly.
5577 # define _CRT_SECURE_NO_DEPRECATE 1
5582 # include <direct.h>
5583 # include <process.h>
5586 # include <unistd.h>
5587 # include <stdint.h>
5599 #include <sys/stat.h>
5601 #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
5603 /* declarations of non-ANSI functions */
5604 #if defined __MINGW32__
5605 # ifdef __STRICT_ANSI__
5606 int _putenv (const char *);
5608 #elif defined __CYGWIN__
5609 # ifdef __STRICT_ANSI__
5610 char *realpath (const char *, char *);
5611 int putenv (char *);
5612 int setenv (const char *, const char *, int);
5614 /* #elif defined other_platform || defined ... */
5617 /* portability defines, excluding path handling macros */
5618 #if defined _MSC_VER
5619 # define setmode _setmode
5621 # define chmod _chmod
5622 # define getcwd _getcwd
5623 # define putenv _putenv
5624 # define S_IXUSR _S_IEXEC
5625 #elif defined __MINGW32__
5626 # define setmode _setmode
5628 # define chmod _chmod
5629 # define getcwd _getcwd
5630 # define putenv _putenv
5631 #elif defined __CYGWIN__
5632 # define HAVE_SETENV
5633 # define FOPEN_WB "wb"
5634 /* #elif defined other platforms ... */
5637 #if defined PATH_MAX
5638 # define LT_PATHMAX PATH_MAX
5639 #elif defined MAXPATHLEN
5640 # define LT_PATHMAX MAXPATHLEN
5642 # define LT_PATHMAX 1024
5652 /* path handling portability macros */
5653 #ifndef DIR_SEPARATOR
5654 # define DIR_SEPARATOR '/'
5655 # define PATH_SEPARATOR ':'
5658 #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
5660 # define HAVE_DOS_BASED_FILE_SYSTEM
5661 # define FOPEN_WB "wb"
5662 # ifndef DIR_SEPARATOR_2
5663 # define DIR_SEPARATOR_2 '\\'
5665 # ifndef PATH_SEPARATOR_2
5666 # define PATH_SEPARATOR_2 ';'
5670 #ifndef DIR_SEPARATOR_2
5671 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5672 #else /* DIR_SEPARATOR_2 */
5673 # define IS_DIR_SEPARATOR(ch) \
5674 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5675 #endif /* DIR_SEPARATOR_2 */
5677 #ifndef PATH_SEPARATOR_2
5678 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5679 #else /* PATH_SEPARATOR_2 */
5680 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5681 #endif /* PATH_SEPARATOR_2 */
5684 # define FOPEN_WB "w"
5687 # define _O_BINARY 0
5690 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
5691 #define XFREE(stale) do { \
5692 if (stale) { free (stale); stale = 0; } \
5695 #if defined LT_DEBUGWRAPPER
5696 static int lt_debug = 1;
5698 static int lt_debug = 0;
5701 const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
5703 void *xmalloc (size_t num);
5704 char *xstrdup (const char *string);
5705 const char *base_name (const char *name);
5706 char *find_executable (const char *wrapper);
5707 char *chase_symlinks (const char *pathspec);
5708 int make_executable (const char *path);
5709 int check_executable (const char *path);
5710 char *strendzap (char *str, const char *pat);
5711 void lt_debugprintf (const char *file, int line, const char *fmt, ...);
5712 void lt_fatal (const char *file, int line, const char *message, ...);
5713 static const char *nonnull (const char *s);
5714 static const char *nonempty (const char *s);
5715 void lt_setenv (const char *name, const char *value);
5716 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
5717 void lt_update_exe_path (const char *name, const char *value);
5718 void lt_update_lib_path (const char *name, const char *value);
5719 char **prepare_spawn (char **argv);
5720 void lt_dump_script (FILE *f);
5724 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
5725 # define externally_visible volatile
5727 # define externally_visible __attribute__((externally_visible)) volatile
5729 externally_visible const char * MAGIC_EXE = "$magic_exe";
5730 const char * LIB_PATH_VARNAME = "$shlibpath_var";
5733 if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5734 func_to_host_path "$temp_rpath"
5736 const char * LIB_PATH_VALUE = "$func_to_host_path_result";
5740 const char
* LIB_PATH_VALUE
= "";
5744 if test -n "$dllsearchpath"; then
5745 func_to_host_path
"$dllsearchpath:"
5747 const char * EXE_PATH_VARNAME = "PATH";
5748 const char * EXE_PATH_VALUE = "$func_to_host_path_result";
5752 const char * EXE_PATH_VARNAME = "";
5753 const char * EXE_PATH_VALUE = "";
5757 if test yes = "$fast_install"; then
5759 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
5763 const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
5770 #define LTWRAPPER_OPTION_PREFIX "--lt-"
5772 static const char
*ltwrapper_option_prefix
= LTWRAPPER_OPTION_PREFIX
;
5773 static const char
*dumpscript_opt
= LTWRAPPER_OPTION_PREFIX
"dump-script";
5774 static const char
*debug_opt
= LTWRAPPER_OPTION_PREFIX
"debug";
5777 main
(int argc
, char
*argv
[])
5782 char
*actual_cwrapper_path
;
5783 char
*actual_cwrapper_name
;
5790 program_name
= (char
*) xstrdup
(base_name
(argv
[0]));
5791 newargz
= XMALLOC
(char
*, (size_t
) argc
+ 1);
5793 /* very simple arg parsing
; don
't want to rely on getopt
5794 * also, copy all non cwrapper options to newargz, except
5795 * argz[0], which is handled differently
5798 for (i = 1; i < argc; i++)
5800 if (STREQ (argv[i], dumpscript_opt))
5804 *mingw* | *cygwin* )
5805 # make stdout use "unix" line endings
5806 echo " setmode(1,_O_BINARY);"
5811 lt_dump_script (stdout);
5814 if (STREQ (argv[i], debug_opt))
5819 if (STREQ (argv[i], ltwrapper_option_prefix))
5821 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
5822 namespace, but it is not one of the ones we know about and
5823 have already dealt with, above (inluding dump-script), then
5824 report an error. Otherwise, targets might begin to believe
5825 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
5826 namespace. The first time any user complains about this, we'll
5827 need to
make LTWRAPPER_OPTION_PREFIX a configure-time option
5828 or a configure.ac-settable value.
5830 lt_fatal
(__FILE__
, __LINE__
,
5831 "unrecognized %s option: '%s'",
5832 ltwrapper_option_prefix
, argv
[i
]);
5835 newargz
[++newargc
] = xstrdup
(argv
[i
]);
5837 newargz
[++newargc
] = NULL
;
5841 /* The GNU banner must be the first non-error debug message */
5842 lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
5845 lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
5846 lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
5848 tmp_pathspec = find_executable (argv[0]);
5849 if (tmp_pathspec == NULL)
5850 lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
5851 lt_debugprintf (__FILE__, __LINE__,
5852 "(main) found exe (before symlink chase) at: %s\n",
5855 actual_cwrapper_path = chase_symlinks (tmp_pathspec);
5856 lt_debugprintf (__FILE__, __LINE__,
5857 "(main) found exe (after symlink chase) at: %s\n",
5858 actual_cwrapper_path);
5859 XFREE (tmp_pathspec);
5861 actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
5862 strendzap (actual_cwrapper_path, actual_cwrapper_name);
5864 /* wrapper name transforms */
5865 strendzap (actual_cwrapper_name, ".exe");
5866 tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
5867 XFREE (actual_cwrapper_name);
5868 actual_cwrapper_name = tmp_pathspec;
5871 /* target_name transforms -- use actual target program name; might have lt- prefix */
5872 target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
5873 strendzap (target_name, ".exe");
5874 tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
5875 XFREE (target_name);
5876 target_name = tmp_pathspec;
5879 lt_debugprintf (__FILE__, __LINE__,
5880 "(main) libtool target name: %s\n",
5886 XMALLOC (char, (strlen (actual_cwrapper_path) +
5887 strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
5888 strcpy (newargz[0], actual_cwrapper_path);
5889 strcat (newargz[0], "$objdir");
5890 strcat (newargz[0], "/");
5894 /* stop here
, and copy so we don
't have to do this twice */
5895 tmp_pathspec = xstrdup (newargz[0]);
5897 /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
5898 strcat (newargz[0], actual_cwrapper_name);
5900 /* DO want the lt- prefix here if it exists, so use target_name */
5901 lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
5902 XFREE (tmp_pathspec);
5903 tmp_pathspec = NULL;
5911 while ((p = strchr (newargz[0], '\\')) != NULL)
5915 while ((p = strchr (lt_argv_zero, '\\')) != NULL)
5925 XFREE (target_name);
5926 XFREE (actual_cwrapper_path);
5927 XFREE (actual_cwrapper_name);
5929 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
5930 lt_setenv ("DUALCASE", "1"); /* for MSK sh */
5931 /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
5932 be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
5933 because on Windows, both *_VARNAMEs are PATH but uninstalled
5934 libraries must come first. */
5935 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
5936 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
5938 lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
5939 nonnull (lt_argv_zero));
5940 for (i = 0; i < newargc; i++)
5942 lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
5943 i, nonnull (newargz[i]));
5951 /* execv doesn't actually work on mingw as expected on unix
*/
5952 newargz
= prepare_spawn
(newargz
);
5953 rval
= (int
) _spawnv
(_P_WAIT
, lt_argv_zero
, (const char
* const
*) newargz
);
5956 /* failed to start process
*/
5957 lt_debugprintf
(__FILE__
, __LINE__
,
5958 "(main) failed to launch target \"%s\": %s\n",
5959 lt_argv_zero
, nonnull
(strerror
(errno
)));
5967 execv (lt_argv_zero, newargz);
5968 return rval; /* =127, but avoids unused variable warning */
5977 xmalloc
(size_t num
)
5979 void
*p
= (void
*) malloc
(num
);
5981 lt_fatal
(__FILE__
, __LINE__
, "memory exhausted");
5987 xstrdup
(const char
*string
)
5989 return string ? strcpy
((char
*) xmalloc
(strlen
(string
) + 1),
5994 base_name
(const char
*name
)
5998 #if defined HAVE_DOS_BASED_FILE_SYSTEM
5999 /* Skip over the disk name
in MSDOS pathnames.
*/
6000 if (isalpha
((unsigned char
) name
[0]) && name
[1] == ':')
6004 for (base
= name
; *name
; name
++)
6005 if (IS_DIR_SEPARATOR
(*name
))
6011 check_executable
(const char
*path
)
6015 lt_debugprintf
(__FILE__
, __LINE__
, "(check_executable): %s\n",
6017 if ((!path
) ||
(!*path
))
6020 if ((stat
(path
, &st
) >= 0)
6021 && (st.st_mode
& (S_IXUSR | S_IXGRP | S_IXOTH
)))
6028 make_executable
(const char
*path
)
6033 lt_debugprintf
(__FILE__
, __LINE__
, "(make_executable): %s\n",
6035 if ((!path
) ||
(!*path
))
6038 if (stat
(path
, &st
) >= 0)
6040 rval
= chmod (path
, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR
);
6045 /* Searches
for the full path of the wrapper. Returns
6046 newly allocated full path name
if found
, NULL otherwise
6047 Does not chase symlinks
, even on platforms that support them.
6050 find_executable
(const char
*wrapper
)
6055 /* static buffer
for getcwd
*/
6056 char tmp
[LT_PATHMAX
+ 1];
6060 lt_debugprintf
(__FILE__
, __LINE__
, "(find_executable): %s\n",
6061 nonempty
(wrapper
));
6063 if ((wrapper
== NULL
) ||
(*wrapper
== '\0'))
6066 /* Absolute path?
*/
6067 #if defined HAVE_DOS_BASED_FILE_SYSTEM
6068 if (isalpha
((unsigned char
) wrapper
[0]) && wrapper
[1] == ':')
6070 concat_name
= xstrdup
(wrapper
);
6071 if (check_executable
(concat_name
))
6073 XFREE
(concat_name
);
6078 if (IS_DIR_SEPARATOR
(wrapper
[0]))
6080 concat_name
= xstrdup
(wrapper
);
6081 if (check_executable
(concat_name
))
6083 XFREE
(concat_name
);
6085 #if defined HAVE_DOS_BASED_FILE_SYSTEM
6089 for (p
= wrapper
; *p
; p
++)
6097 /* no slashes
; search PATH
*/
6098 const char
*path
= getenv
("PATH");
6101 for (p
= path
; *p
; p
= p_next
)
6105 for (q
= p
; *q
; q
++)
6106 if (IS_PATH_SEPARATOR
(*q
))
6108 p_len
= (size_t
) (q
- p
);
6109 p_next
= (*q
== '\0' ? q
: q
+ 1);
6112 /* empty path
: current directory
*/
6113 if (getcwd
(tmp
, LT_PATHMAX
) == NULL
)
6114 lt_fatal
(__FILE__
, __LINE__
, "getcwd failed: %s",
6115 nonnull
(strerror
(errno
)));
6116 tmp_len
= strlen
(tmp
);
6118 XMALLOC
(char
, tmp_len
+ 1 + strlen
(wrapper
) + 1);
6119 memcpy
(concat_name
, tmp
, tmp_len
);
6120 concat_name
[tmp_len
] = '/';
6121 strcpy
(concat_name
+ tmp_len
+ 1, wrapper
);
6126 XMALLOC
(char
, p_len
+ 1 + strlen
(wrapper
) + 1);
6127 memcpy
(concat_name
, p
, p_len
);
6128 concat_name
[p_len
] = '/';
6129 strcpy
(concat_name
+ p_len
+ 1, wrapper
);
6131 if (check_executable
(concat_name
))
6133 XFREE
(concat_name
);
6136 /* not found
in PATH
; assume curdir
*/
6138 /* Relative path | not found
in path
: prepend cwd
*/
6139 if (getcwd
(tmp
, LT_PATHMAX
) == NULL
)
6140 lt_fatal
(__FILE__
, __LINE__
, "getcwd failed: %s",
6141 nonnull
(strerror
(errno
)));
6142 tmp_len
= strlen
(tmp
);
6143 concat_name
= XMALLOC
(char
, tmp_len
+ 1 + strlen
(wrapper
) + 1);
6144 memcpy
(concat_name
, tmp
, tmp_len
);
6145 concat_name
[tmp_len
] = '/';
6146 strcpy
(concat_name
+ tmp_len
+ 1, wrapper
);
6148 if (check_executable
(concat_name
))
6150 XFREE
(concat_name
);
6155 chase_symlinks
(const char
*pathspec
)
6158 return xstrdup
(pathspec
);
6160 char buf
[LT_PATHMAX
];
6162 char
*tmp_pathspec
= xstrdup
(pathspec
);
6164 int has_symlinks
= 0;
6165 while (strlen
(tmp_pathspec
) && !has_symlinks
)
6167 lt_debugprintf
(__FILE__
, __LINE__
,
6168 "checking path component for symlinks: %s\n",
6170 if (lstat
(tmp_pathspec
, &s
) == 0)
6172 if (S_ISLNK
(s.st_mode
) != 0)
6178 /* search backwards
for last DIR_SEPARATOR
*/
6179 p
= tmp_pathspec
+ strlen
(tmp_pathspec
) - 1;
6180 while ((p
> tmp_pathspec
) && (!IS_DIR_SEPARATOR
(*p
)))
6182 if ((p
== tmp_pathspec
) && (!IS_DIR_SEPARATOR
(*p
)))
6184 /* no
more DIR_SEPARATORS left
*/
6191 lt_fatal
(__FILE__
, __LINE__
,
6192 "error accessing file \"%s\": %s",
6193 tmp_pathspec
, nonnull
(strerror
(errno
)));
6196 XFREE
(tmp_pathspec
);
6200 return xstrdup
(pathspec
);
6203 tmp_pathspec
= realpath
(pathspec
, buf
);
6204 if (tmp_pathspec
== 0)
6206 lt_fatal
(__FILE__
, __LINE__
,
6207 "could not follow symlinks for %s", pathspec
);
6209 return xstrdup
(tmp_pathspec
);
6214 strendzap
(char
*str
, const char
*pat
)
6218 assert
(str
!= NULL
);
6219 assert
(pat
!= NULL
);
6222 patlen
= strlen
(pat
);
6226 str
+= len
- patlen
;
6227 if (STREQ
(str
, pat
))
6234 lt_debugprintf
(const char
*file, int line
, const char
*fmt, ...
)
6239 (void
) fprintf
(stderr
, "%s:%s:%d: ", program_name
, file, line
);
6240 va_start
(args
, fmt);
6241 (void
) vfprintf
(stderr
, fmt, args
);
6247 lt_error_core
(int exit_status
, const char
*file,
6248 int line
, const char
*mode
,
6249 const char
*message
, va_list ap
)
6251 fprintf
(stderr
, "%s:%s:%d: %s: ", program_name
, file, line
, mode
);
6252 vfprintf
(stderr
, message
, ap
);
6253 fprintf
(stderr
, ".\n");
6255 if (exit_status
>= 0)
6260 lt_fatal
(const char
*file, int line
, const char
*message
, ...
)
6263 va_start
(ap
, message
);
6264 lt_error_core
(EXIT_FAILURE
, file, line
, "FATAL", message
, ap
);
6269 nonnull
(const char
*s
)
6271 return s ? s
: "(null)";
6275 nonempty
(const char
*s
)
6277 return (s
&& !*s
) ?
"(empty)" : nonnull
(s
);
6281 lt_setenv
(const char
*name
, const char
*value
)
6283 lt_debugprintf
(__FILE__
, __LINE__
,
6284 "(lt_setenv) setting '%s' to '%s'\n",
6285 nonnull
(name
), nonnull
(value
));
6288 /* always
make a copy
, for consistency with
!HAVE_SETENV
*/
6289 char
*str
= xstrdup
(value
);
6290 setenv
(name
, str
, 1);
6292 size_t len
= strlen
(name
) + 1 + strlen
(value
) + 1;
6293 char
*str
= XMALLOC
(char
, len
);
6294 sprintf
(str
, "%s=%s", name
, value
);
6295 if (putenv
(str
) != EXIT_SUCCESS
)
6304 lt_extend_str
(const char
*orig_value
, const char
*add
, int to_end
)
6307 if (orig_value
&& *orig_value
)
6309 size_t orig_value_len
= strlen
(orig_value
);
6310 size_t add_len
= strlen
(add
);
6311 new_value
= XMALLOC
(char
, add_len
+ orig_value_len
+ 1);
6314 strcpy
(new_value
, orig_value
);
6315 strcpy
(new_value
+ orig_value_len
, add
);
6319 strcpy
(new_value
, add
);
6320 strcpy
(new_value
+ add_len
, orig_value
);
6325 new_value
= xstrdup
(add
);
6331 lt_update_exe_path
(const char
*name
, const char
*value
)
6333 lt_debugprintf
(__FILE__
, __LINE__
,
6334 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
6335 nonnull
(name
), nonnull
(value
));
6337 if (name
&& *name
&& value
&& *value
)
6339 char
*new_value
= lt_extend_str
(getenv
(name
), value
, 0);
6340 /* some systems can
't cope with a ':'-terminated path #' */
6341 size_t len
= strlen
(new_value
);
6342 while ((len
> 0) && IS_PATH_SEPARATOR
(new_value
[len-1
]))
6344 new_value
[--len] = '\0';
6346 lt_setenv
(name
, new_value
);
6352 lt_update_lib_path
(const char
*name
, const char
*value
)
6354 lt_debugprintf
(__FILE__
, __LINE__
,
6355 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
6356 nonnull
(name
), nonnull
(value
));
6358 if (name
&& *name
&& value
&& *value
)
6360 char
*new_value
= lt_extend_str
(getenv
(name
), value
, 0);
6361 lt_setenv
(name
, new_value
);
6371 /* Prepares an argument vector before calling spawn().
6372 Note that spawn() does not by itself call the command interpreter
6373 (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
6374 ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
6376 v.dwPlatformId == VER_PLATFORM_WIN32_NT;
6377 }) ? "cmd.exe" : "command.com").
6378 Instead it simply concatenates the arguments, separated by ' ', and calls
6379 CreateProcess(). We must quote the arguments since Win32 CreateProcess()
6380 interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
6382 - Space and tab are interpreted as delimiters. They are not treated as
6383 delimiters if they are surrounded by double quotes: "...".
6384 - Unescaped double quotes are removed from the input. Their only effect is
6385 that within double quotes, space and tab are treated like normal
6387 - Backslashes not followed by double quotes are not special.
6388 - But 2*n+1 backslashes followed by a double quote become
6389 n backslashes followed by a double quote (n >= 0):
6394 #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
6395 #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
6397 prepare_spawn (char **argv)
6403 /* Count number of arguments. */
6404 for (argc = 0; argv[argc] != NULL; argc++)
6407 /* Allocate new argument vector. */
6408 new_argv = XMALLOC (char *, argc + 1);
6410 /* Put quoted arguments into the new argument vector. */
6411 for (i = 0; i < argc; i++)
6413 const char *string = argv[i];
6415 if (string[0] == '\0')
6416 new_argv[i] = xstrdup ("\"\"");
6417 else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
6419 int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
6421 unsigned int backslashes;
6423 char *quoted_string;
6430 for (s = string; *s != '\0'; s++)
6434 length += backslashes + 1;
6442 length += backslashes + 1;
6444 quoted_string = XMALLOC (char, length + 1);
6450 for (s = string; *s != '\0'; s++)
6456 for (j = backslashes + 1; j > 0; j--)
6468 for (j = backslashes; j > 0; j--)
6474 new_argv[i] = quoted_string;
6477 new_argv[i] = (char *) string;
6479 new_argv[argc] = NULL;
6488 void lt_dump_script
(FILE
* f
)
6491 func_emit_wrapper
yes |
6493 s/^\(.\{79\}\)\(..*\)/\1\
6498 s/\([^\n]*\).*/ fputs ("\1", f);/p
6505 # end: func_emit_cwrapperexe_src
6507 # func_win32_import_lib_p ARG
6508 # True if ARG is an import lib, as indicated by $file_magic_cmd
6509 func_win32_import_lib_p ()
6513 case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
6519 # func_suncc_cstd_abi
6520 # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
6521 # Several compiler flags select an ABI that is incompatible with the
6522 # Cstd library. Avoid specifying it if any are in CXXFLAGS.
6523 func_suncc_cstd_abi ()
6527 case " $compile_command " in
6528 *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
6529 suncc_use_cstd_abi=no
6532 suncc_use_cstd_abi=yes
6537 # func_mode_link arg...
6543 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
6544 # It is impossible to link a dll without this setting, and
6545 # we shouldn't force the makefile maintainer to figure out
6546 # what system we are compiling for in order to pass an extra
6547 # flag for every libtool invocation.
6548 # allow_undefined=no
6550 # FIXME: Unfortunately, there are problems with the above when trying
6551 # to make a dll that has undefined symbols, in which case not
6552 # even a static library is built. For now, we need to specify
6553 # -no-undefined on the libtool link line when we can be certain
6554 # that all symbols are satisfied, otherwise we get a static library.
6561 libtool_args=$nonopt
6562 base_compile="$nonopt $@"
6563 compile_command=$nonopt
6564 finalize_command=$nonopt
6577 lib_search_path=`pwd`
6579 new_inherited_linker_flags=
6588 export_symbols_regex=
6597 precious_files_regex=
6598 prefer_static_libs=no
6611 single_module=$wl-single_module
6612 func_infer_tag $base_compile
6614 # We need to know -static, to get the right output filenames.
6619 test yes != "$build_libtool_libs" \
6620 && func_fatal_configuration "cannot build a shared library"
6624 -all-static | -static | -static-libtool-libs)
6627 if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
6628 func_warning "complete static linking is impossible in this configuration"
6630 if test -n "$link_static_flag"; then
6631 dlopen_self=$dlopen_self_static
6633 prefer_static_libs=yes
6636 if test -z "$pic_flag" && test -n "$link_static_flag"; then
6637 dlopen_self=$dlopen_self_static
6639 prefer_static_libs=built
6641 -static-libtool-libs)
6642 if test -z "$pic_flag" && test -n "$link_static_flag"; then
6643 dlopen_self=$dlopen_self_static
6645 prefer_static_libs=yes
6648 build_libtool_libs=no
6655 # See if our shared archives depend on static archives.
6656 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
6658 # Go through the arguments, transforming them on the way.
6659 while test "$#" -gt 0; do
6662 func_quote_for_eval "$arg"
6663 qarg=$func_quote_for_eval_unquoted_result
6664 func_append libtool_args " $func_quote_for_eval_result"
6666 # If the previous option needs an argument, assign it.
6667 if test -n "$prev"; then
6670 func_append compile_command " @OUTPUT@"
6671 func_append finalize_command " @OUTPUT@"
6683 # Add the symbol object into the linking commands.
6684 func_append compile_command " @SYMFILE@"
6685 func_append finalize_command " @SYMFILE@"
6689 *.la | *.lo) ;; # We handle these cases below.
6691 if test no = "$dlself"; then
6699 if test dlprefiles = "$prev"; then
6701 elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
6711 if test dlfiles = "$prev"; then
6712 func_append dlfiles " $arg"
6714 func_append dlprefiles " $arg"
6724 || func_fatal_error "symbol file '$arg' does not exist"
6729 export_symbols_regex=$arg
6737 *" $qarg.ltframework "*) ;;
6738 *) func_append deplibs " $qarg.ltframework" # this is fixed later
6747 inst_prefix_dir=$arg
6752 # Clang does not use LLVM to link, so we can simply discard any
6753 # '-mllvm $arg' options when doing the link step.
6758 if test -f "$arg"; then
6761 for fil in `cat "$save_arg"`
6763 # func_append moreargs " $fil"
6765 # A libtool-controlled object.
6767 # Check to see that this really is a libtool object.
6768 if func_lalib_unsafe_p "$arg"; then
6775 if test -z "$pic_object" ||
6776 test -z "$non_pic_object" ||
6777 test none = "$pic_object" &&
6778 test none = "$non_pic_object"; then
6779 func_fatal_error "cannot find name of object for '$arg'"
6782 # Extract subdirectory from the argument.
6783 func_dirname "$arg" "/" ""
6784 xdir=$func_dirname_result
6786 if test none != "$pic_object"; then
6787 # Prepend the subdirectory the object is found in.
6788 pic_object=$xdir$pic_object
6790 if test dlfiles = "$prev"; then
6791 if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
6792 func_append dlfiles " $pic_object"
6796 # If libtool objects are unsupported, then we need to preload.
6801 # CHECK ME: I think I busted this. -Ossama
6802 if test dlprefiles = "$prev"; then
6803 # Preload the old-style object.
6804 func_append dlprefiles " $pic_object"
6809 func_append libobjs " $pic_object"
6814 if test none != "$non_pic_object"; then
6815 # Prepend the subdirectory the object is found in.
6816 non_pic_object=$xdir$non_pic_object
6818 # A standard non-PIC object
6819 func_append non_pic_objects " $non_pic_object"
6820 if test -z "$pic_object" || test none = "$pic_object"; then
6824 # If the PIC object exists, use it instead.
6825 # $xdir was prepended to $pic_object above.
6826 non_pic_object=$pic_object
6827 func_append non_pic_objects " $non_pic_object"
6830 # Only an error if not doing a dry-run.
6831 if $opt_dry_run; then
6832 # Extract subdirectory from the argument.
6833 func_dirname "$arg" "/" ""
6834 xdir=$func_dirname_result
6837 pic_object=$xdir$objdir/$func_lo2o_result
6838 non_pic_object=$xdir$func_lo2o_result
6839 func_append libobjs " $pic_object"
6840 func_append non_pic_objects " $non_pic_object"
6842 func_fatal_error "'$arg' is not a valid libtool object"
6847 func_fatal_error "link input file '$arg' does not exist"
6859 precious_files_regex=$arg
6869 # We need an absolute path.
6871 [\\/]* | [A-Za-z]:[\\/]*) ;;
6873 func_fatal_error "only absolute run-paths are allowed"
6876 if test rpath = "$prev"; then
6879 *) func_append rpath " $arg" ;;
6884 *) func_append xrpath " $arg" ;;
6896 func_append weak_libs " $arg"
6901 func_append linker_flags " $qarg"
6902 func_append compiler_flags " $qarg"
6904 func_append compile_command " $qarg"
6905 func_append finalize_command " $qarg"
6909 func_append compiler_flags " $qarg"
6911 func_append compile_command " $qarg"
6912 func_append finalize_command " $qarg"
6916 func_append linker_flags " $qarg"
6917 func_append compiler_flags " $wl$qarg"
6919 func_append compile_command " $wl$qarg"
6920 func_append finalize_command " $wl$qarg"
6924 eval "$prev=\"\$arg\""
6929 fi # test -n "$prev"
6935 if test -n "$link_static_flag"; then
6936 # See comment for -static flag below, for more details.
6937 func_append compile_command " $link_static_flag"
6938 func_append finalize_command " $link_static_flag"
6944 # FIXME: remove this flag sometime in the future.
6945 func_fatal_error "'-allow-undefined' must not be used because it is the default"
6973 -export-symbols | -export-symbols-regex)
6974 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
6975 func_fatal_error "more than one -exported-symbols argument is not allowed"
6977 if test X-export-symbols = "X$arg"; then
6995 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
6996 # so, if we see these flags be careful not to treat them like -L
6998 case $with_gcc/$host in
6999 no/*-*-irix* | /*-*-irix*)
7000 func_append compile_command " $arg"
7001 func_append finalize_command " $arg"
7008 func_stripname "-L" '' "$arg"
7009 if test -z "$func_stripname_result"; then
7010 if test "$#" -gt 0; then
7011 func_fatal_error "require no space between '-L' and '$1'"
7013 func_fatal_error "need path for '-L' option"
7016 func_resolve_sysroot "$func_stripname_result"
7017 dir=$func_resolve_sysroot_result
7018 # We need an absolute path.
7020 [\\/]* | [A-Za-z]:[\\/]*) ;;
7022 absdir=`cd "$dir" && pwd`
7023 test -z "$absdir" && \
7024 func_fatal_error "cannot determine absolute directory name of '$dir'"
7029 *" -L$dir "* | *" $arg "*)
7030 # Will only happen for absolute or sysroot arguments
7033 # Preserve sysroot, but never include relative directories
7035 [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
7036 *) func_append deplibs " -L$dir" ;;
7038 func_append lib_search_path " $dir"
7042 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7043 testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
7044 case :$dllsearchpath: in
7046 ::) dllsearchpath=$dir;;
7047 *) func_append dllsearchpath ":$dir";;
7049 case :$dllsearchpath: in
7050 *":$testbindir:"*) ;;
7051 ::) dllsearchpath=$testbindir;;
7052 *) func_append dllsearchpath ":$testbindir";;
7060 if test X-lc = "X$arg" || test X-lm = "X$arg"; then
7062 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
7063 # These systems don't actually have a C or math library (as such)
7067 # These systems don't actually have a C library (as such)
7068 test X-lc = "X$arg" && continue
7070 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
7071 # Do not include libc due to us having libc/libc_r.
7072 test X-lc = "X$arg" && continue
7074 *-*-rhapsody* | *-*-darwin1.[012])
7075 # Rhapsody C and math libraries are in the System framework
7076 func_append deplibs " System.ltframework"
7079 *-*-sco3.2v5* | *-*-sco5v6*)
7080 # Causes problems with __ctype
7081 test X-lc = "X$arg" && continue
7083 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7084 # Compiler inserts libc in the correct place for threads to work
7085 test X-lc = "X$arg" && continue
7088 elif test X-lc_r = "X$arg"; then
7090 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
7091 # Do not include libc_r directly, use -pthread flag.
7096 func_append deplibs " $arg"
7110 # Tru64 UNIX uses -model [arg] to determine the layout of C++
7111 # classes, name mangling, and exception handling.
7112 # Darwin uses the -arch flag to determine output architecture.
7113 -model|-arch|-isysroot|--sysroot)
7114 func_append compiler_flags " $arg"
7115 func_append compile_command " $arg"
7116 func_append finalize_command " $arg"
7121 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7122 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7123 func_append compiler_flags " $arg"
7124 func_append compile_command " $arg"
7125 func_append finalize_command " $arg"
7126 case "$new_inherited_linker_flags " in
7128 * ) func_append new_inherited_linker_flags " $arg" ;;
7134 single_module=$wl-multi_module
7145 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
7146 # The PATH hackery in wrapper scripts is required on Windows
7147 # and Darwin in order for the loader to find any dlls it needs.
7148 func_warning "'-no-install' is ignored for $host"
7149 func_warning "assuming '-no-fast-install' instead"
7152 *) no_install=yes ;;
7174 -precious-files-regex)
7195 func_stripname '-R' '' "$arg"
7196 dir=$func_stripname_result
7197 # We need an absolute path.
7199 [\\/]* | [A-Za-z]:[\\/]*) ;;
7201 func_stripname '=' '' "$dir"
7202 dir=$lt_sysroot$func_stripname_result
7205 func_fatal_error "only absolute run-paths are allowed"
7210 *) func_append xrpath " $dir" ;;
7216 # The effects of -shared are defined in a previous loop.
7225 -static | -static-libtool-libs)
7226 # The effects of -static are defined in a previous loop.
7227 # We used to do the same as -all-static on platforms that
7228 # didn't have a PIC flag, but the assumption that the effects
7229 # would be equivalent was wrong. It would break on at least
7230 # Digital Unix and AIX.
7256 func_stripname '-Wc,' '' "$arg"
7257 args=$func_stripname_result
7259 save_ifs=$IFS; IFS=,
7260 for flag in $args; do
7262 func_quote_for_eval "$flag"
7263 func_append arg " $func_quote_for_eval_result"
7264 func_append compiler_flags " $func_quote_for_eval_result"
7267 func_stripname ' ' '' "$arg"
7268 arg=$func_stripname_result
7272 func_stripname '-Wl,' '' "$arg"
7273 args=$func_stripname_result
7275 save_ifs=$IFS; IFS=,
7276 for flag in $args; do
7278 func_quote_for_eval "$flag"
7279 func_append arg " $wl$func_quote_for_eval_result"
7280 func_append compiler_flags " $wl$func_quote_for_eval_result"
7281 func_append linker_flags " $func_quote_for_eval_result"
7284 func_stripname ' ' '' "$arg"
7285 arg=$func_stripname_result
7305 func_quote_for_eval "$arg"
7306 arg=$func_quote_for_eval_result
7309 # Flags to be passed through unchanged, with rationale:
7310 # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
7311 # -r[0-9][0-9]* specify processor for the SGI compiler
7312 # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
7313 # +DA*, +DD* enable 64-bit mode for the HP compiler
7314 # -q* compiler args for the IBM compiler
7315 # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
7316 # -F/path path to uninstalled frameworks, gcc on darwin
7317 # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
7318 # -fstack-protector* stack protector flags for GCC
7319 # @file GCC response files
7320 # -tp=* Portland pgcc target processor selection
7321 # --sysroot=* for sysroot support
7322 # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
7323 # -specs=* GCC specs files
7324 # -stdlib=* select c++ std lib with clang
7325 # -fsanitize=* Clang/GCC memory and address sanitizer
7326 # -fuse-ld=* Linker select flags for GCC
7327 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
7328 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
7329 -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
7330 -specs=*|-fsanitize=*|-fuse-ld=*)
7331 func_quote_for_eval "$arg"
7332 arg=$func_quote_for_eval_result
7333 func_append compile_command " $arg"
7334 func_append finalize_command " $arg"
7335 func_append compiler_flags " $arg"
7340 if test os2 = "`expr $host : '.*\(os2\)'`"; then
7341 # OS/2 uses -Zxxx to specify OS/2-specific options
7342 compiler_flags="$compiler_flags $arg"
7343 func_append compile_command " $arg"
7344 func_append finalize_command " $arg"
7352 # Otherwise treat like 'Some other compiler flag' below
7353 func_quote_for_eval "$arg"
7354 arg=$func_quote_for_eval_result
7358 # Some other compiler flag.
7360 func_quote_for_eval "$arg"
7361 arg=$func_quote_for_eval_result
7365 # A standard object.
7366 func_append objs " $arg"
7370 # A libtool-controlled object.
7372 # Check to see that this really is a libtool object.
7373 if func_lalib_unsafe_p "$arg"; then
7380 if test -z "$pic_object" ||
7381 test -z "$non_pic_object" ||
7382 test none = "$pic_object" &&
7383 test none = "$non_pic_object"; then
7384 func_fatal_error "cannot find name of object for '$arg'"
7387 # Extract subdirectory from the argument.
7388 func_dirname "$arg" "/" ""
7389 xdir=$func_dirname_result
7391 test none = "$pic_object" || {
7392 # Prepend the subdirectory the object is found in.
7393 pic_object=$xdir$pic_object
7395 if test dlfiles = "$prev"; then
7396 if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7397 func_append dlfiles " $pic_object"
7401 # If libtool objects are unsupported, then we need to preload.
7406 # CHECK ME: I think I busted this. -Ossama
7407 if test dlprefiles = "$prev"; then
7408 # Preload the old-style object.
7409 func_append dlprefiles " $pic_object"
7414 func_append libobjs " $pic_object"
7419 if test none != "$non_pic_object"; then
7420 # Prepend the subdirectory the object is found in.
7421 non_pic_object=$xdir$non_pic_object
7423 # A standard non-PIC object
7424 func_append non_pic_objects " $non_pic_object"
7425 if test -z "$pic_object" || test none = "$pic_object"; then
7429 # If the PIC object exists, use it instead.
7430 # $xdir was prepended to $pic_object above.
7431 non_pic_object=$pic_object
7432 func_append non_pic_objects " $non_pic_object"
7435 # Only an error if not doing a dry-run.
7436 if $opt_dry_run; then
7437 # Extract subdirectory from the argument.
7438 func_dirname "$arg" "/" ""
7439 xdir=$func_dirname_result
7442 pic_object=$xdir$objdir/$func_lo2o_result
7443 non_pic_object=$xdir$func_lo2o_result
7444 func_append libobjs " $pic_object"
7445 func_append non_pic_objects " $non_pic_object"
7447 func_fatal_error "'$arg' is not a valid libtool object"
7454 func_append deplibs " $arg"
7455 func_append old_deplibs " $arg"
7460 # A libtool-controlled library.
7462 func_resolve_sysroot "$arg"
7463 if test dlfiles = "$prev"; then
7464 # This library was specified with -dlopen.
7465 func_append dlfiles " $func_resolve_sysroot_result"
7467 elif test dlprefiles = "$prev"; then
7468 # The library was specified with -dlpreopen.
7469 func_append dlprefiles " $func_resolve_sysroot_result"
7472 func_append deplibs " $func_resolve_sysroot_result"
7477 # Some other compiler argument.
7479 # Unknown arguments in both finalize_command and compile_command need
7480 # to be aesthetically quoted because they are evaled later.
7481 func_quote_for_eval "$arg"
7482 arg=$func_quote_for_eval_result
7486 # Now actually substitute the argument into the commands.
7487 if test -n "$arg"; then
7488 func_append compile_command " $arg"
7489 func_append finalize_command " $arg"
7491 done # argument parsing loop
7493 test -n "$prev" && \
7494 func_fatal_help "the '$prevarg' option requires an argument"
7496 if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
7497 eval arg=\"$export_dynamic_flag_spec\"
7498 func_append compile_command " $arg"
7499 func_append finalize_command " $arg"
7503 # calculate the name of the file, without its directory
7504 func_basename "$output"
7505 outputname=$func_basename_result
7506 libobjs_save=$libobjs
7508 if test -n "$shlibpath_var"; then
7509 # get the directories listed in $shlibpath_var
7510 eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
7514 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
7515 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
7517 # Definition is injected by LT_CONFIG during libtool generation.
7518 func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
7520 func_dirname "$output" "/" ""
7521 output_objdir=$func_dirname_result$objdir
7522 func_to_tool_file "$output_objdir/"
7523 tool_output_objdir=$func_to_tool_file_result
7524 # Create the object directory.
7525 func_mkdir_p "$output_objdir"
7527 # Determine the type of output
7530 func_fatal_help "you must specify an output file"
7532 *.$libext) linkmode=oldlib ;;
7533 *.lo | *.$objext) linkmode=obj ;;
7534 *.la) linkmode=lib ;;
7535 *) linkmode=prog ;; # Anything else should be a program.
7541 # Find all interdependent deplibs by searching for libraries
7542 # that are linked more than once (e.g. -la -lb -la)
7543 for deplib in $deplibs; do
7544 if $opt_preserve_dup_deps; then
7546 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
7549 func_append libs " $deplib"
7552 if test lib = "$linkmode"; then
7553 libs="$predeps $libs $compiler_lib_search_path $postdeps"
7555 # Compute libraries that are listed more than once in $predeps
7556 # $postdeps and mark them as special (i.e., whose duplicates are
7557 # not to be eliminated).
7559 if $opt_duplicate_compiler_generated_deps; then
7560 for pre_post_dep in $predeps $postdeps; do
7561 case "$pre_post_deps " in
7562 *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
7564 func_append pre_post_deps " $pre_post_dep"
7573 need_relink=no # whether we're linking any uninstalled libtool libraries
7574 notinst_deplibs= # not-installed libtool libraries
7575 notinst_path= # paths that contain not-installed libtool libraries
7579 passes="conv dlpreopen link"
7580 for file in $dlfiles $dlprefiles; do
7584 func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
7595 passes="conv scan dlopen dlpreopen link"
7601 for pass in $passes; do
7602 # The preopen pass in lib mode reverses $deplibs; put it back here
7603 # so that -L comes before libs that need it for instance...
7604 if test lib,link = "$linkmode,$pass"; then
7605 ## FIXME: Find the place where the list is rebuilt in the wrong
7606 ## order, and fix it there properly
7608 for deplib in $deplibs; do
7609 tmp_deplibs="$deplib $tmp_deplibs"
7611 deplibs=$tmp_deplibs
7614 if test lib,link = "$linkmode,$pass" ||
7615 test prog,scan = "$linkmode,$pass"; then
7619 if test prog = "$linkmode"; then
7621 dlopen) libs=$dlfiles ;;
7622 dlpreopen) libs=$dlprefiles ;;
7623 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
7626 if test lib,dlpreopen = "$linkmode,$pass"; then
7627 # Collect and forward deplibs of preopened libtool libs
7628 for lib in $dlprefiles; do
7629 # Ignore non-libtool-libs
7631 func_resolve_sysroot "$lib"
7633 *.la) func_source "$func_resolve_sysroot_result" ;;
7636 # Collect preopened libtool deplibs, except any this library
7637 # has declared as weak libs
7638 for deplib in $dependency_libs; do
7639 func_basename "$deplib"
7640 deplib_base=$func_basename_result
7641 case " $weak_libs " in
7642 *" $deplib_base "*) ;;
7643 *) func_append deplibs " $deplib" ;;
7649 if test dlopen = "$pass"; then
7650 # Collect dlpreopened libraries
7651 save_deplibs=$deplibs
7655 for deplib in $libs; do
7659 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7660 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7661 if test prog,link = "$linkmode,$pass"; then
7662 compile_deplibs="$deplib $compile_deplibs"
7663 finalize_deplibs="$deplib $finalize_deplibs"
7665 func_append compiler_flags " $deplib"
7666 if test lib = "$linkmode"; then
7667 case "$new_inherited_linker_flags " in
7669 * ) func_append new_inherited_linker_flags " $deplib" ;;
7676 if test lib != "$linkmode" && test prog != "$linkmode"; then
7677 func_warning "'-l' is ignored for archives/objects"
7680 func_stripname '-l' '' "$deplib"
7681 name=$func_stripname_result
7682 if test lib = "$linkmode"; then
7683 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
7685 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
7687 for searchdir in $searchdirs; do
7688 for search_ext in .la $std_shrext .so .a; do
7689 # Search the libtool library
7690 lib=$searchdir/lib$name$search_ext
7691 if test -f "$lib"; then
7692 if test .la = "$search_ext"; then
7702 # deplib is a libtool library
7703 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
7704 # We need to do some special things here, and not later.
7705 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
7706 case " $predeps $postdeps " in
7708 if func_lalib_p "$lib"; then
7712 for l in $old_library $library_names; do
7715 if test "X$ll" = "X$old_library"; then # only static version available
7717 func_dirname "$lib" "" "."
7718 ladir=$func_dirname_result
7719 lib=$ladir/$old_library
7720 if test prog,link = "$linkmode,$pass"; then
7721 compile_deplibs="$deplib $compile_deplibs"
7722 finalize_deplibs="$deplib $finalize_deplibs"
7724 deplibs="$deplib $deplibs"
7725 test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7735 # deplib doesn't seem to be a libtool library
7736 if test prog,link = "$linkmode,$pass"; then
7737 compile_deplibs="$deplib $compile_deplibs"
7738 finalize_deplibs="$deplib $finalize_deplibs"
7740 deplibs="$deplib $deplibs"
7741 test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7747 if test prog,link = "$linkmode,$pass"; then
7748 compile_deplibs="$deplib $compile_deplibs"
7749 finalize_deplibs="$deplib $finalize_deplibs"
7751 deplibs="$deplib $deplibs"
7752 if test lib = "$linkmode"; then
7753 case "$new_inherited_linker_flags " in
7755 * ) func_append new_inherited_linker_flags " $deplib" ;;
7764 deplibs="$deplib $deplibs"
7765 test conv = "$pass" && continue
7766 newdependency_libs="$deplib $newdependency_libs"
7767 func_stripname '-L' '' "$deplib"
7768 func_resolve_sysroot "$func_stripname_result"
7769 func_append newlib_search_path " $func_resolve_sysroot_result"
7772 if test conv = "$pass"; then
7773 deplibs="$deplib $deplibs"
7776 if test scan = "$pass"; then
7777 deplibs="$deplib $deplibs"
7779 compile_deplibs="$deplib $compile_deplibs"
7780 finalize_deplibs="$deplib $finalize_deplibs"
7782 func_stripname '-L' '' "$deplib"
7783 func_resolve_sysroot "$func_stripname_result"
7784 func_append newlib_search_path " $func_resolve_sysroot_result"
7787 func_warning "'-L' is ignored for archives/objects"
7793 if test link = "$pass"; then
7794 func_stripname '-R' '' "$deplib"
7795 func_resolve_sysroot "$func_stripname_result"
7796 dir=$func_resolve_sysroot_result
7797 # Make sure the xrpath contains only unique directories.
7800 *) func_append xrpath " $dir" ;;
7803 deplibs="$deplib $deplibs"
7807 func_resolve_sysroot "$deplib"
7808 lib=$func_resolve_sysroot_result
7811 if test conv = "$pass"; then
7812 deplibs="$deplib $deplibs"
7817 # Linking convenience modules into shared libraries is allowed,
7818 # but linking other static libraries is non-portable.
7819 case " $dlpreconveniencelibs " in
7823 case $deplibs_check_method in
7825 set dummy $deplibs_check_method; shift
7826 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7827 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
7828 | $EGREP "$match_pattern_regex" > /dev/null; then
7836 if $valid_a_lib; then
7838 $ECHO "*** Warning: Linking the shared library $output against the"
7839 $ECHO "*** static library $deplib is not portable!"
7840 deplibs="$deplib $deplibs"
7843 $ECHO "*** Warning: Trying to link with static lib archive $deplib."
7844 echo "*** I have the capability to make that library automatically link in when"
7845 echo "*** you link to this library. But I can only do this if you have a"
7846 echo "*** shared version of the library, which you do not appear to have"
7847 echo "*** because the file extensions .$libext of this argument makes me believe"
7848 echo "*** that it is just a static archive that I should not use here."
7855 if test link != "$pass"; then
7856 deplibs="$deplib $deplibs"
7858 compile_deplibs="$deplib $compile_deplibs"
7859 finalize_deplibs="$deplib $finalize_deplibs"
7866 if test conv = "$pass"; then
7867 deplibs="$deplib $deplibs"
7868 elif test prog = "$linkmode"; then
7869 if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
7870 # If there is no dlopen support or we're linking statically,
7871 # we need to preload.
7872 func_append newdlprefiles " $deplib"
7873 compile_deplibs="$deplib $compile_deplibs"
7874 finalize_deplibs="$deplib $finalize_deplibs"
7876 func_append newdlfiles " $deplib"
7887 $found || test -f "$lib" \
7888 || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
7890 # Check to see that this really is a libtool archive.
7891 func_lalib_unsafe_p "$lib" \
7892 || func_fatal_error "'$lib' is not a valid libtool archive"
7894 func_dirname "$lib" "" "."
7895 ladir=$func_dirname_result
7903 inherited_linker_flags=
7904 # If the library was installed with an old release of libtool,
7905 # it will not redefine variables installed, or shouldnotlink
7914 # Convert "-framework foo" to "foo.ltframework"
7915 if test -n "$inherited_linker_flags"; then
7916 tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
7917 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
7918 case " $new_inherited_linker_flags " in
7919 *" $tmp_inherited_linker_flag "*) ;;
7920 *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
7924 dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7925 if test lib,link = "$linkmode,$pass" ||
7926 test prog,scan = "$linkmode,$pass" ||
7927 { test prog != "$linkmode" && test lib != "$linkmode"; }; then
7928 test -n "$dlopen" && func_append dlfiles " $dlopen"
7929 test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
7932 if test conv = "$pass"; then
7933 # Only check for convenience libraries
7934 deplibs="$lib $deplibs"
7935 if test -z "$libdir"; then
7936 if test -z "$old_library"; then
7937 func_fatal_error "cannot find name of link library for '$lib'"
7939 # It is a libtool convenience library, so add in its objects.
7940 func_append convenience " $ladir/$objdir/$old_library"
7941 func_append old_convenience " $ladir/$objdir/$old_library"
7942 elif test prog != "$linkmode" && test lib != "$linkmode"; then
7943 func_fatal_error "'$lib' is not a convenience library"
7946 for deplib in $dependency_libs; do
7947 deplibs="$deplib $deplibs"
7948 if $opt_preserve_dup_deps; then
7949 case "$tmp_libs " in
7950 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
7953 func_append tmp_libs " $deplib"
7959 # Get the name of the library we link against.
7961 if test -n "$old_library" &&
7962 { test yes = "$prefer_static_libs" ||
7963 test built,no = "$prefer_static_libs,$installed"; }; then
7964 linklib=$old_library
7966 for l in $old_library $library_names; do
7970 if test -z "$linklib"; then
7971 func_fatal_error "cannot find name of link library for '$lib'"
7974 # This library was specified with -dlopen.
7975 if test dlopen = "$pass"; then
7977 && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
7978 if test -z "$dlname" ||
7979 test yes != "$dlopen_support" ||
7980 test no = "$build_libtool_libs"
7982 # If there is no dlname, no dlopen support or we're linking
7983 # statically, we need to preload. We also need to preload any
7984 # dependent libraries so libltdl's deplib preloader doesn't
7985 # bomb out in the load deplibs phase.
7986 func_append dlprefiles " $lib $dependency_libs"
7988 func_append newdlfiles " $lib"
7993 # We need an absolute path.
7995 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
7997 abs_ladir=`cd "$ladir" && pwd`
7998 if test -z "$abs_ladir"; then
7999 func_warning "cannot determine absolute directory name of '$ladir'"
8000 func_warning "passing it literally to the linker, although it might fail"
8005 func_basename "$lib"
8006 laname=$func_basename_result
8008 # Find the relevant object directory and library name.
8009 if test yes = "$installed"; then
8010 if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8011 func_warning "library '$lib' was moved."
8016 dir=$lt_sysroot$libdir
8017 absdir=$lt_sysroot$libdir
8019 test yes = "$hardcode_automatic" && avoidtemprpath=yes
8021 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8024 # Remove this search path later
8025 func_append notinst_path " $abs_ladir"
8028 absdir=$abs_ladir/$objdir
8029 # Remove this search path later
8030 func_append notinst_path " $abs_ladir"
8032 fi # $installed = yes
8033 func_stripname 'lib' '.la' "$laname"
8034 name=$func_stripname_result
8036 # This library was specified with -dlpreopen.
8037 if test dlpreopen = "$pass"; then
8038 if test -z "$libdir" && test prog = "$linkmode"; then
8039 func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
8042 # special handling for platforms with PE-DLLs.
8043 *cygwin* | *mingw* | *cegcc* )
8044 # Linker will automatically link against shared library if both
8045 # static and shared are present. Therefore, ensure we extract
8046 # symbols from the import library if a shared library is present
8047 # (otherwise, the dlopen module name will be incorrect). We do
8048 # this by putting the import library name into $newdlprefiles.
8049 # We recover the dlopen module name by 'saving' the la file
8050 # name in a special purpose variable, and (later) extracting the
8051 # dlname from the la file.
8052 if test -n "$dlname"; then
8053 func_tr_sh "$dir/$linklib"
8054 eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
8055 func_append newdlprefiles " $dir/$linklib"
8057 func_append newdlprefiles " $dir/$old_library"
8058 # Keep a list of preopened convenience libraries to check
8059 # that they are being used correctly in the link pass.
8060 test -z "$libdir" && \
8061 func_append dlpreconveniencelibs " $dir/$old_library"
8065 # Prefer using a static library (so that no silly _DYNAMIC symbols
8066 # are required to link).
8067 if test -n "$old_library"; then
8068 func_append newdlprefiles " $dir/$old_library"
8069 # Keep a list of preopened convenience libraries to check
8070 # that they are being used correctly in the link pass.
8071 test -z "$libdir" && \
8072 func_append dlpreconveniencelibs " $dir/$old_library"
8073 # Otherwise, use the dlname, so that lt_dlopen finds it.
8074 elif test -n "$dlname"; then
8075 func_append newdlprefiles " $dir/$dlname"
8077 func_append newdlprefiles " $dir/$linklib"
8081 fi # $pass = dlpreopen
8083 if test -z "$libdir"; then
8084 # Link the convenience library
8085 if test lib = "$linkmode"; then
8086 deplibs="$dir/$old_library $deplibs"
8087 elif test prog,link = "$linkmode,$pass"; then
8088 compile_deplibs="$dir/$old_library $compile_deplibs"
8089 finalize_deplibs="$dir/$old_library $finalize_deplibs"
8091 deplibs="$lib $deplibs" # used for prog,scan pass
8097 if test prog = "$linkmode" && test link != "$pass"; then
8098 func_append newlib_search_path " $ladir"
8099 deplibs="$lib $deplibs"
8101 linkalldeplibs=false
8102 if test no != "$link_all_deplibs" || test -z "$library_names" ||
8103 test no = "$build_libtool_libs"; then
8108 for deplib in $dependency_libs; do
8110 -L*) func_stripname '-L' '' "$deplib"
8111 func_resolve_sysroot "$func_stripname_result"
8112 func_append newlib_search_path " $func_resolve_sysroot_result"
8115 # Need to link against all dependency_libs?
8116 if $linkalldeplibs; then
8117 deplibs="$deplib $deplibs"
8119 # Need to hardcode shared library paths
8120 # or/and link against static libraries
8121 newdependency_libs="$deplib $newdependency_libs"
8123 if $opt_preserve_dup_deps; then
8124 case "$tmp_libs " in
8125 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8128 func_append tmp_libs " $deplib"
8131 fi # $linkmode = prog...
8133 if test prog,link = "$linkmode,$pass"; then
8134 if test -n "$library_names" &&
8135 { { test no = "$prefer_static_libs" ||
8136 test built,yes = "$prefer_static_libs,$installed"; } ||
8137 test -z "$old_library"; }; then
8138 # We need to hardcode the library path
8139 if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
8140 # Make sure the rpath contains only unique directories.
8141 case $temp_rpath: in
8143 *) func_append temp_rpath "$absdir:" ;;
8147 # Hardcode the library path.
8148 # Skip directories that are in the system default run-time
8150 case " $sys_lib_dlsearch_path " in
8153 case "$compile_rpath " in
8155 *) func_append compile_rpath " $absdir" ;;
8159 case " $sys_lib_dlsearch_path " in
8162 case "$finalize_rpath " in
8164 *) func_append finalize_rpath " $libdir" ;;
8168 fi # $linkmode,$pass = prog,link...
8171 { test pass_all = "$deplibs_check_method" ||
8172 { test yes = "$build_libtool_libs" &&
8173 test -n "$library_names"; }; }; then
8174 # We only need to search for static libraries
8179 link_static=no # Whether the deplib will be linked statically
8180 use_static_libs=$prefer_static_libs
8181 if test built = "$use_static_libs" && test yes = "$installed"; then
8184 if test -n "$library_names" &&
8185 { test no = "$use_static_libs" || test -z "$old_library"; }; then
8187 *cygwin* | *mingw* | *cegcc* | *os2*)
8188 # No point in relinking DLLs because paths are not encoded
8189 func_append notinst_deplibs " $lib"
8193 if test no = "$installed"; then
8194 func_append notinst_deplibs " $lib"
8199 # This is a shared library
8201 # Warn about portability, can't link against -module's on some
8202 # systems (darwin). Don't bleat about dlopened modules though!
8204 for dlpremoduletest in $dlprefiles; do
8205 if test "X$dlpremoduletest" = "X$lib"; then
8206 dlopenmodule=$dlpremoduletest
8210 if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
8212 if test prog = "$linkmode"; then
8213 $ECHO "*** Warning: Linking the executable $output against the loadable module"
8215 $ECHO "*** Warning: Linking the shared library $output against the loadable module"
8217 $ECHO "*** $linklib is not portable!"
8219 if test lib = "$linkmode" &&
8220 test yes = "$hardcode_into_libs"; then
8221 # Hardcode the library path.
8222 # Skip directories that are in the system default run-time
8224 case " $sys_lib_dlsearch_path " in
8227 case "$compile_rpath " in
8229 *) func_append compile_rpath " $absdir" ;;
8233 case " $sys_lib_dlsearch_path " in
8236 case "$finalize_rpath " in
8238 *) func_append finalize_rpath " $libdir" ;;
8244 if test -n "$old_archive_from_expsyms_cmds"; then
8245 # figure out the soname
8246 set dummy $library_names
8250 libname=`eval "\\$ECHO \"$libname_spec\""`
8251 # use dlname if we got it. it's perfectly good, no?
8252 if test -n "$dlname"; then
8254 elif test -n "$soname_spec"; then
8257 *cygwin* | mingw* | *cegcc* | *os2*)
8258 func_arith $current - $age
8259 major=$func_arith_result
8263 eval soname=\"$soname_spec\"
8268 # Make a new name for the extract_expsyms_cmds to use
8270 func_basename "$soroot"
8271 soname=$func_basename_result
8272 func_stripname 'lib' '.dll' "$soname"
8273 newlib=libimp-$func_stripname_result.a
8275 # If the library has no export list, then create one now
8276 if test -f "$output_objdir/$soname-def"; then :
8278 func_verbose "extracting exported symbol list from '$soname'"
8279 func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
8283 if test -f "$output_objdir/$newlib"; then :; else
8284 func_verbose "generating import library for '$soname'"
8285 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
8287 # make sure the library variables are pointing to the new library
8290 fi # test -n "$old_archive_from_expsyms_cmds"
8292 if test prog = "$linkmode" || test relink != "$opt_mode"; then
8297 case $hardcode_action in
8298 immediate | unsupported)
8299 if test no = "$hardcode_direct"; then
8302 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
8303 *-*-sysv4*uw2*) add_dir=-L$dir ;;
8304 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
8305 *-*-unixware7*) add_dir=-L$dir ;;
8307 # if the lib is a (non-dlopened) module then we cannot
8308 # link against it, someone is ignoring the earlier warnings
8309 if /usr/bin/file -L $add 2> /dev/null |
8310 $GREP ": [^:]* bundle" >/dev/null; then
8311 if test "X$dlopenmodule" != "X$lib"; then
8312 $ECHO "*** Warning: lib $linklib is a module, not a shared library"
8313 if test -z "$old_library"; then
8315 echo "*** And there doesn't seem to be a static archive available"
8316 echo "*** The link will probably fail, sorry"
8318 add=$dir/$old_library
8320 elif test -n "$old_library"; then
8321 add=$dir/$old_library
8325 elif test no = "$hardcode_minus_L"; then
8327 *-*-sunos*) add_shlibpath=$dir ;;
8331 elif test no = "$hardcode_shlibpath_var"; then
8339 if test yes = "$hardcode_direct" &&
8340 test no = "$hardcode_direct_absolute"; then
8342 elif test yes = "$hardcode_minus_L"; then
8344 # Try looking first in the location we're being installed to.
8345 if test -n "$inst_prefix_dir"; then
8348 func_append add_dir " -L$inst_prefix_dir$libdir"
8353 elif test yes = "$hardcode_shlibpath_var"; then
8363 if test yes != "$lib_linked"; then
8364 func_fatal_configuration "unsupported hardcode properties"
8367 if test -n "$add_shlibpath"; then
8368 case :$compile_shlibpath: in
8369 *":$add_shlibpath:"*) ;;
8370 *) func_append compile_shlibpath "$add_shlibpath:" ;;
8373 if test prog = "$linkmode"; then
8374 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
8375 test -n "$add" && compile_deplibs="$add $compile_deplibs"
8377 test -n "$add_dir" && deplibs="$add_dir $deplibs"
8378 test -n "$add" && deplibs="$add $deplibs"
8379 if test yes != "$hardcode_direct" &&
8380 test yes != "$hardcode_minus_L" &&
8381 test yes = "$hardcode_shlibpath_var"; then
8382 case :$finalize_shlibpath: in
8384 *) func_append finalize_shlibpath "$libdir:" ;;
8390 if test prog = "$linkmode" || test relink = "$opt_mode"; then
8394 # Finalize command for both is simple: just hardcode it.
8395 if test yes = "$hardcode_direct" &&
8396 test no = "$hardcode_direct_absolute"; then
8397 add=$libdir/$linklib
8398 elif test yes = "$hardcode_minus_L"; then
8401 elif test yes = "$hardcode_shlibpath_var"; then
8402 case :$finalize_shlibpath: in
8404 *) func_append finalize_shlibpath "$libdir:" ;;
8407 elif test yes = "$hardcode_automatic"; then
8408 if test -n "$inst_prefix_dir" &&
8409 test -f "$inst_prefix_dir$libdir/$linklib"; then
8410 add=$inst_prefix_dir$libdir/$linklib
8412 add=$libdir/$linklib
8415 # We cannot seem to hardcode it, guess we'll fake it.
8417 # Try looking first in the location we're being installed to.
8418 if test -n "$inst_prefix_dir"; then
8421 func_append add_dir " -L$inst_prefix_dir$libdir"
8428 if test prog = "$linkmode"; then
8429 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
8430 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
8432 test -n "$add_dir" && deplibs="$add_dir $deplibs"
8433 test -n "$add" && deplibs="$add $deplibs"
8436 elif test prog = "$linkmode"; then
8437 # Here we assume that one of hardcode_direct or hardcode_minus_L
8438 # is not unsupported. This is valid on all known static and
8440 if test unsupported != "$hardcode_direct"; then
8441 test -n "$old_library" && linklib=$old_library
8442 compile_deplibs="$dir/$linklib $compile_deplibs"
8443 finalize_deplibs="$dir/$linklib $finalize_deplibs"
8445 compile_deplibs="-l$name -L$dir $compile_deplibs"
8446 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
8448 elif test yes = "$build_libtool_libs"; then
8449 # Not a shared library
8450 if test pass_all != "$deplibs_check_method"; then
8451 # We're trying link a shared library against a static one
8452 # but the system doesn't support it.
8454 # Just print a warning and add the library to dependency_libs so
8455 # that the program can be linked against the static library.
8457 $ECHO "*** Warning: This system cannot link to static lib archive $lib."
8458 echo "*** I have the capability to make that library automatically link in when"
8459 echo "*** you link to this library. But I can only do this if you have a"
8460 echo "*** shared version of the library, which you do not appear to have."
8461 if test yes = "$module"; then
8462 echo "*** But as you try to build a module library, libtool will still create "
8463 echo "*** a static module, that should work as long as the dlopening application"
8464 echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
8465 if test -z "$global_symbol_pipe"; then
8467 echo "*** However, this would only work if libtool was able to extract symbol"
8468 echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
8469 echo "*** not find such a program. So, this module is probably useless."
8470 echo "*** 'nm' from GNU binutils and a full rebuild may help."
8472 if test no = "$build_old_libs"; then
8473 build_libtool_libs=module
8476 build_libtool_libs=no
8480 deplibs="$dir/$old_library $deplibs"
8483 fi # link shared/static library?
8485 if test lib = "$linkmode"; then
8486 if test -n "$dependency_libs" &&
8487 { test yes != "$hardcode_into_libs" ||
8488 test yes = "$build_old_libs" ||
8489 test yes = "$link_static"; }; then
8490 # Extract -R from dependency_libs
8492 for libdir in $dependency_libs; do
8494 -R*) func_stripname '-R' '' "$libdir"
8495 temp_xrpath=$func_stripname_result
8497 *" $temp_xrpath "*) ;;
8498 *) func_append xrpath " $temp_xrpath";;
8500 *) func_append temp_deplibs " $libdir";;
8503 dependency_libs=$temp_deplibs
8506 func_append newlib_search_path " $absdir"
8507 # Link against this library
8508 test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
8509 # ... and its dependency_libs
8511 for deplib in $dependency_libs; do
8512 newdependency_libs="$deplib $newdependency_libs"
8514 -L*) func_stripname '-L' '' "$deplib"
8515 func_resolve_sysroot "$func_stripname_result";;
8516 *) func_resolve_sysroot "$deplib" ;;
8518 if $opt_preserve_dup_deps; then
8519 case "$tmp_libs " in
8520 *" $func_resolve_sysroot_result "*)
8521 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
8524 func_append tmp_libs " $func_resolve_sysroot_result"
8527 if test no != "$link_all_deplibs"; then
8528 # Add the search paths of all dependency libraries
8529 for deplib in $dependency_libs; do
8532 -L*) path=$deplib ;;
8534 func_resolve_sysroot "$deplib"
8535 deplib=$func_resolve_sysroot_result
8536 func_dirname "$deplib" "" "."
8537 dir=$func_dirname_result
8538 # We need an absolute path.
8540 [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
8542 absdir=`cd "$dir" && pwd`
8543 if test -z "$absdir"; then
8544 func_warning "cannot determine absolute directory name of '$dir'"
8549 if $GREP "^installed=no" $deplib > /dev/null; then
8553 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
8554 if test -n "$deplibrary_names"; then
8555 for tmp in $deplibrary_names; do
8558 if test -f "$absdir/$objdir/$depdepl"; then
8559 depdepl=$absdir/$objdir/$depdepl
8560 darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
8561 if test -z "$darwin_install_name"; then
8562 darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
8564 func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
8565 func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
8571 path=-L$absdir/$objdir
8575 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8576 test -z "$libdir" && \
8577 func_fatal_error "'$deplib' is not a valid libtool archive"
8578 test "$absdir" != "$libdir" && \
8579 func_warning "'$deplib' seems to be moved"
8585 case " $deplibs " in
8587 *) deplibs="$path $deplibs" ;;
8590 fi # link_all_deplibs != no
8592 done # for deplib in $libs
8593 if test link = "$pass"; then
8594 if test prog = "$linkmode"; then
8595 compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
8596 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
8598 compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8601 dependency_libs=$newdependency_libs
8602 if test dlpreopen = "$pass"; then
8603 # Link the dlpreopened libraries before other libraries
8604 for deplib in $save_deplibs; do
8605 deplibs="$deplib $deplibs"
8608 if test dlopen != "$pass"; then
8609 test conv = "$pass" || {
8610 # Make sure lib_search_path contains only unique directories.
8612 for dir in $newlib_search_path; do
8613 case "$lib_search_path " in
8615 *) func_append lib_search_path " $dir" ;;
8621 if test prog,link = "$linkmode,$pass"; then
8622 vars="compile_deplibs finalize_deplibs"
8626 for var in $vars dependency_libs; do
8627 # Add libraries to $var in reverse order
8628 eval tmp_libs=\"\$$var\"
8630 for deplib in $tmp_libs; do
8631 # FIXME: Pedantically, this is the right thing to do, so
8632 # that some nasty dependency loop isn't accidentally
8634 #new_libs="$deplib $new_libs"
8635 # Pragmatically, this seems to cause very few problems in
8638 -L*) new_libs="$deplib $new_libs" ;;
8641 # And here is the reason: when a library appears more
8642 # than once as an explicit dependence of a library, or
8643 # is implicitly linked in more than once by the
8644 # compiler, it is considered special, and multiple
8645 # occurrences thereof are not removed. Compare this
8646 # with having the same library being listed as a
8647 # dependency of multiple other libraries: in this case,
8648 # we know (pedantically, we assume) the library does not
8649 # need to be listed more than once, so we keep only the
8650 # last copy. This is not always right, but it is rare
8651 # enough that we require users that really mean to play
8652 # such unportable linking tricks to link the library
8653 # using -Wl,-lname, so that libtool does not consider it
8654 # for duplicate removal.
8655 case " $specialdeplibs " in
8656 *" $deplib "*) new_libs="$deplib $new_libs" ;;
8658 case " $new_libs " in
8660 *) new_libs="$deplib $new_libs" ;;
8668 for deplib in $new_libs; do
8671 case " $tmp_libs " in
8673 *) func_append tmp_libs " $deplib" ;;
8676 *) func_append tmp_libs " $deplib" ;;
8679 eval $var=\"$tmp_libs\"
8683 # Add Sun CC postdeps if required:
8684 test CXX = "$tagname" && {
8687 case `$CC -V 2>&1 | sed 5q` in
8688 *Sun\ C*) # Sun C++ 5.9
8691 if test no != "$suncc_use_cstd_abi"; then
8692 func_append postdeps ' -library=Cstd -library=Crun'
8699 func_cc_basename "$CC"
8700 case $func_cc_basename_result in
8704 if test no != "$suncc_use_cstd_abi"; then
8705 func_append postdeps ' -library=Cstd -library=Crun'
8713 # Last step: remove runtime libs from dependency_libs
8714 # (they stay in deplibs)
8716 for i in $dependency_libs; do
8717 case " $predeps $postdeps $compiler_lib_search_path " in
8722 if test -n "$i"; then
8723 func_append tmp_libs " $i"
8726 dependency_libs=$tmp_libs
8728 if test prog = "$linkmode"; then
8731 if test prog = "$linkmode" || test lib = "$linkmode"; then
8732 dlprefiles=$newdlprefiles
8737 if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
8738 func_warning "'-dlopen' is ignored for archives"
8743 func_warning "'-l' and '-L' are ignored for archives" ;;
8746 test -n "$rpath" && \
8747 func_warning "'-rpath' is ignored for archives"
8749 test -n "$xrpath" && \
8750 func_warning "'-R' is ignored for archives"
8752 test -n "$vinfo" && \
8753 func_warning "'-version-info/-version-number' is ignored for archives"
8755 test -n "$release" && \
8756 func_warning "'-release' is ignored for archives"
8758 test -n "$export_symbols$export_symbols_regex" && \
8759 func_warning "'-export-symbols' is ignored for archives"
8761 # Now set the variables for building old libraries.
8762 build_libtool_libs=no
8764 func_append objs "$old_deplibs"
8768 # Make sure we only generate libraries of the form 'libNAME.la'.
8771 func_stripname 'lib' '.la' "$outputname"
8772 name=$func_stripname_result
8773 eval shared_ext=\"$shrext_cmds\"
8774 eval libname=\"$libname_spec\"
8777 test no = "$module" \
8778 && func_fatal_help "libtool library '$output' must begin with 'lib'"
8780 if test no != "$need_lib_prefix"; then
8781 # Add the "lib" prefix for modules if required
8782 func_stripname '' '.la' "$outputname"
8783 name=$func_stripname_result
8784 eval shared_ext=\"$shrext_cmds\"
8785 eval libname=\"$libname_spec\"
8787 func_stripname '' '.la' "$outputname"
8788 libname=$func_stripname_result
8793 if test -n "$objs"; then
8794 if test pass_all != "$deplibs_check_method"; then
8795 func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
8798 $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
8799 $ECHO "*** objects $objs is not portable!"
8800 func_append libobjs " $objs"
8804 test no = "$dlself" \
8805 || func_warning "'-dlopen self' is ignored for libtool libraries"
8810 && func_warning "ignoring multiple '-rpath's for a libtool library"
8815 if test -z "$rpath"; then
8816 if test yes = "$build_libtool_libs"; then
8817 # Building a libtool convenience library.
8818 # Some compilers have problems with a '.al' extension so
8819 # convenience libraries should have the same extension an
8820 # archive normally would.
8821 oldlibs="$output_objdir/$libname.$libext $oldlibs"
8822 build_libtool_libs=convenience
8826 test -n "$vinfo" && \
8827 func_warning "'-version-info/-version-number' is ignored for convenience libraries"
8829 test -n "$release" && \
8830 func_warning "'-release' is ignored for convenience libraries"
8833 # Parse the version information argument.
8834 save_ifs=$IFS; IFS=:
8835 set dummy $vinfo 0 0 0
8840 func_fatal_help "too many parameters to '-version-info'"
8842 # convert absolute version numbers to libtool ages
8843 # this retains compatibility with .la files and attempts
8844 # to make the code below a bit more comprehensible
8846 case $vinfo_number in
8852 # There are really only two kinds -- those that
8853 # use the current revision as the major version
8854 # and those that subtract age and use age as
8855 # a minor version. But, then there is irix
8856 # that has an extra 1 added just for fun
8858 case $version_type in
8859 # correct linux to gnu/linux during the next big refactor
8860 darwin|freebsd-elf|linux|osf|windows|none)
8861 func_arith $number_major + $number_minor
8862 current=$func_arith_result
8864 revision=$number_revision
8866 freebsd-aout|qnx|sunos)
8867 current=$number_major
8868 revision=$number_minor
8872 func_arith $number_major + $number_minor
8873 current=$func_arith_result
8875 revision=$number_minor
8876 lt_irix_increment=no
8887 # Check that each of the things are valid numbers.
8889 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]) ;;
8891 func_error "CURRENT '$current' must be a nonnegative integer"
8892 func_fatal_error "'$vinfo' is not valid version information"
8897 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]) ;;
8899 func_error "REVISION '$revision' must be a nonnegative integer"
8900 func_fatal_error "'$vinfo' is not valid version information"
8905 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]) ;;
8907 func_error "AGE '$age' must be a nonnegative integer"
8908 func_fatal_error "'$vinfo' is not valid version information"
8912 if test "$age" -gt "$current"; then
8913 func_error "AGE '$age' is greater than the current interface number '$current'"
8914 func_fatal_error "'$vinfo' is not valid version information"
8917 # Calculate the version variables.
8921 case $version_type in
8925 # Like Linux, but with the current version available in
8926 # verstring for coding it into the library header
8927 func_arith $current - $age
8928 major=.$func_arith_result
8929 versuffix=$major.$age.$revision
8930 # Darwin ld doesn't like 0 for these options...
8931 func_arith $current + 1
8932 minor_current=$func_arith_result
8933 xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
8934 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
8935 # On Darwin other compilers
8938 verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
8941 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
8948 versuffix=.$current.$revision
8952 func_arith $current - $age
8953 major=.$func_arith_result
8954 versuffix=$major.$age.$revision
8958 if test no = "$lt_irix_increment"; then
8959 func_arith $current - $age
8961 func_arith $current - $age + 1
8963 major=$func_arith_result
8965 case $version_type in
8966 nonstopux) verstring_prefix=nonstopux ;;
8967 *) verstring_prefix=sgi ;;
8969 verstring=$verstring_prefix$major.$revision
8971 # Add in all the interfaces that we are compatible with.
8973 while test 0 -ne "$loop"; do
8974 func_arith $revision - $loop
8975 iface=$func_arith_result
8976 func_arith $loop - 1
8977 loop=$func_arith_result
8978 verstring=$verstring_prefix$major.$iface:$verstring
8981 # Before this point, $major must not contain '.'.
8983 versuffix=$major.$revision
8986 linux) # correct to gnu/linux during the next big refactor
8987 func_arith $current - $age
8988 major=.$func_arith_result
8989 versuffix=$major.$age.$revision
8993 func_arith $current - $age
8994 major=.$func_arith_result
8995 versuffix=.$current.$age.$revision
8996 verstring=$current.$age.$revision
8998 # Add in all the interfaces that we are compatible with.
9000 while test 0 -ne "$loop"; do
9001 func_arith $current - $loop
9002 iface=$func_arith_result
9003 func_arith $loop - 1
9004 loop=$func_arith_result
9005 verstring=$verstring:$iface.0
9008 # Make executables depend on our current version.
9009 func_append verstring ":$current.0"
9024 versuffix=.$current.$revision
9028 # Use '-' rather than '.', since we only want one
9029 # extension on DOS 8.3 file systems.
9030 func_arith $current - $age
9031 major=$func_arith_result
9036 func_fatal_configuration "unknown library version type '$version_type'"
9040 # Clear the version info if we defaulted, and they specified a release.
9041 if test -z "$vinfo" && test -n "$release"; then
9043 case $version_type in
9045 # we can't check for "0.0" in archive_cmds due to quoting
9046 # problems, so we reset it completely
9053 if test no = "$need_version"; then
9060 # Remove version info from name if versioning should be avoided
9061 if test yes,no = "$avoid_version,$need_version"; then
9067 # Check to see if the archive will have undefined symbols.
9068 if test yes = "$allow_undefined"; then
9069 if test unsupported = "$allow_undefined_flag"; then
9070 if test yes = "$build_old_libs"; then
9071 func_warning "undefined symbols not allowed in $host shared libraries; building static only"
9072 build_libtool_libs=no
9074 func_fatal_error "can't build $host shared library unless -no-undefined is specified"
9078 # Don't allow undefined symbols.
9079 allow_undefined_flag=$no_undefined_flag
9084 func_generate_dlsyms "$libname" "$libname" :
9085 func_append libobjs " $symfileobj"
9086 test " " = "$libobjs" && libobjs=
9088 if test relink != "$opt_mode"; then
9089 # Remove our outputs, but don't remove object files since they
9090 # may have been created when compiling PIC objects.
9092 tempremovelist=`$ECHO "$output_objdir/*"`
9093 for p in $tempremovelist; do
9097 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
9098 if test -n "$precious_files_regex"; then
9099 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
9104 func_append removelist " $p"
9109 test -n "$removelist" && \
9110 func_show_eval "${RM}r \$removelist"
9113 # Now set the variables for building old libraries.
9114 if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
9115 func_append oldlibs " $output_objdir/$libname.$libext"
9117 # Transform .lo files to .o files.
9118 oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
9121 # Eliminate all temporary directories.
9122 #for path in $notinst_path; do
9123 # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
9124 # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
9125 # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
9128 if test -n "$xrpath"; then
9129 # If the user specified any rpath flags, then add them.
9131 for libdir in $xrpath; do
9132 func_replace_sysroot "$libdir"
9133 func_append temp_xrpath " -R$func_replace_sysroot_result"
9134 case "$finalize_rpath " in
9136 *) func_append finalize_rpath " $libdir" ;;
9139 if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
9140 dependency_libs="$temp_xrpath $dependency_libs"
9144 # Make sure dlfiles contains only unique files that won't be dlpreopened
9145 old_dlfiles=$dlfiles
9147 for lib in $old_dlfiles; do
9148 case " $dlprefiles $dlfiles " in
9150 *) func_append dlfiles " $lib" ;;
9154 # Make sure dlprefiles contains only unique files
9155 old_dlprefiles=$dlprefiles
9157 for lib in $old_dlprefiles; do
9158 case "$dlprefiles " in
9160 *) func_append dlprefiles " $lib" ;;
9164 if test yes = "$build_libtool_libs"; then
9165 if test -n "$rpath"; then
9167 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
9168 # these systems don't actually have a c library (as such)!
9170 *-*-rhapsody* | *-*-darwin1.[012])
9171 # Rhapsody C library is in the System framework
9172 func_append deplibs " System.ltframework"
9175 # Don't link with libc until the a.out ld.so is fixed.
9177 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
9178 # Do not include libc due to us having libc/libc_r.
9180 *-*-sco3.2v5* | *-*-sco5v6*)
9181 # Causes problems with __ctype
9183 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
9184 # Compiler inserts libc in the correct place for threads to work
9187 # Add libc to deplibs on all other systems if necessary.
9188 if test yes = "$build_libtool_need_lc"; then
9189 func_append deplibs " -lc"
9195 # Transform deplibs into only deplibs that can be linked in shared.
9197 libname_save=$libname
9198 release_save=$release
9199 versuffix_save=$versuffix
9201 # I'm not sure if I'm treating the release correctly. I think
9202 # release should show up in the -l (ie -lgmp5) so we don't want to
9203 # add it in twice. Is that correct?
9209 case $deplibs_check_method in
9211 # Don't check for shared/static. Everything works.
9212 # This might be a little naive. We might want to check
9213 # whether the library exists or not. But this is on
9214 # osf3 & osf4 and I'm not really sure... Just
9215 # implementing what was already the behavior.
9219 # This code stresses the "libraries are programs" paradigm to its
9220 # limits. Maybe even breaks it. We compile a program, linking it
9221 # against the deplibs as a proxy for the library. Then we can check
9222 # whether they linked in statically or dynamically with ldd.
9223 $opt_dry_run || $RM conftest.c
9224 cat > conftest.c <<EOF
9225 int main() { return 0; }
9227 $opt_dry_run || $RM conftest
9228 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
9229 ldd_output=`ldd conftest`
9230 for i in $deplibs; do
9233 func_stripname -l '' "$i"
9234 name=$func_stripname_result
9235 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9236 case " $predeps $postdeps " in
9238 func_append newdeplibs " $i"
9243 if test -n "$i"; then
9244 libname=`eval "\\$ECHO \"$libname_spec\""`
9245 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9246 set dummy $deplib_matches; shift
9248 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9249 func_append newdeplibs " $i"
9253 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9254 echo "*** I have the capability to make that library automatically link in when"
9255 echo "*** you link to this library. But I can only do this if you have a"
9256 echo "*** shared version of the library, which I believe you do not have"
9257 echo "*** because a test_compile did reveal that the linker did not use it for"
9258 echo "*** its dynamic dependency list that programs get resolved with at runtime."
9263 func_append newdeplibs " $i"
9268 # Error occurred in the first compile. Let's try to salvage
9269 # the situation: Compile a separate program for each library.
9270 for i in $deplibs; do
9273 func_stripname -l '' "$i"
9274 name=$func_stripname_result
9275 $opt_dry_run || $RM conftest
9276 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
9277 ldd_output=`ldd conftest`
9278 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9279 case " $predeps $postdeps " in
9281 func_append newdeplibs " $i"
9286 if test -n "$i"; then
9287 libname=`eval "\\$ECHO \"$libname_spec\""`
9288 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9289 set dummy $deplib_matches; shift
9291 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9292 func_append newdeplibs " $i"
9296 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9297 echo "*** I have the capability to make that library automatically link in when"
9298 echo "*** you link to this library. But I can only do this if you have a"
9299 echo "*** shared version of the library, which you do not appear to have"
9300 echo "*** because a test_compile did reveal that the linker did not use this one"
9301 echo "*** as a dynamic dependency that programs can get resolved with at runtime."
9307 $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
9308 echo "*** make it link in! You will probably need to install it or some"
9309 echo "*** library that it depends on before this library will be fully"
9310 echo "*** functional. Installing it before continuing would be even better."
9314 func_append newdeplibs " $i"
9321 set dummy $deplibs_check_method; shift
9322 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9323 for a_deplib in $deplibs; do
9326 func_stripname -l '' "$a_deplib"
9327 name=$func_stripname_result
9328 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9329 case " $predeps $postdeps " in
9331 func_append newdeplibs " $a_deplib"
9336 if test -n "$a_deplib"; then
9337 libname=`eval "\\$ECHO \"$libname_spec\""`
9338 if test -n "$file_magic_glob"; then
9339 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
9341 libnameglob=$libname
9343 test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
9344 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9345 if test yes = "$want_nocaseglob"; then
9347 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9350 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9352 for potent_lib in $potential_libs; do
9353 # Follow soft links.
9354 if ls -lLd "$potent_lib" 2>/dev/null |
9355 $GREP " -> " >/dev/null; then
9358 # The statement above tries to avoid entering an
9359 # endless loop below, in case of cyclic links.
9360 # We might still enter an endless loop, since a link
9361 # loop can be closed while we follow links,
9364 while test -h "$potlib" 2>/dev/null; do
9365 potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
9367 [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
9368 *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
9371 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
9373 $EGREP "$file_magic_regex" > /dev/null; then
9374 func_append newdeplibs " $a_deplib"
9381 if test -n "$a_deplib"; then
9384 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9385 echo "*** I have the capability to make that library automatically link in when"
9386 echo "*** you link to this library. But I can only do this if you have a"
9387 echo "*** shared version of the library, which you do not appear to have"
9388 echo "*** because I did check the linker path looking for a file starting"
9389 if test -z "$potlib"; then
9390 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
9392 $ECHO "*** with $libname and none of the candidates passed a file format test"
9393 $ECHO "*** using a file magic. Last file checked: $potlib"
9398 # Add a -L argument.
9399 func_append newdeplibs " $a_deplib"
9402 done # Gone through all deplibs.
9405 set dummy $deplibs_check_method; shift
9406 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9407 for a_deplib in $deplibs; do
9410 func_stripname -l '' "$a_deplib"
9411 name=$func_stripname_result
9412 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9413 case " $predeps $postdeps " in
9415 func_append newdeplibs " $a_deplib"
9420 if test -n "$a_deplib"; then
9421 libname=`eval "\\$ECHO \"$libname_spec\""`
9422 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9423 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
9424 for potent_lib in $potential_libs; do
9425 potlib=$potent_lib # see symlink-check above in file_magic test
9426 if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
9427 $EGREP "$match_pattern_regex" > /dev/null; then
9428 func_append newdeplibs " $a_deplib"
9435 if test -n "$a_deplib"; then
9438 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9439 echo "*** I have the capability to make that library automatically link in when"
9440 echo "*** you link to this library. But I can only do this if you have a"
9441 echo "*** shared version of the library, which you do not appear to have"
9442 echo "*** because I did check the linker path looking for a file starting"
9443 if test -z "$potlib"; then
9444 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
9446 $ECHO "*** with $libname and none of the candidates passed a file format test"
9447 $ECHO "*** using a regex pattern. Last file checked: $potlib"
9452 # Add a -L argument.
9453 func_append newdeplibs " $a_deplib"
9456 done # Gone through all deplibs.
9460 tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
9461 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9462 for i in $predeps $postdeps; do
9463 # can't use Xsed below, because $i might contain '/'
9464 tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
9467 case $tmp_deplibs in
9470 if test none = "$deplibs_check_method"; then
9471 echo "*** Warning: inter-library dependencies are not supported in this platform."
9473 echo "*** Warning: inter-library dependencies are not known to be supported."
9475 echo "*** All declared inter-library dependencies are being dropped."
9481 versuffix=$versuffix_save
9483 release=$release_save
9484 libname=$libname_save
9488 *-*-rhapsody* | *-*-darwin1.[012])
9489 # On Rhapsody replace the C library with the System framework
9490 newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
9494 if test yes = "$droppeddeps"; then
9495 if test yes = "$module"; then
9497 echo "*** Warning: libtool could not satisfy all declared inter-library"
9498 $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
9499 echo "*** a static module, that should work as long as the dlopening"
9500 echo "*** application is linked with the -dlopen flag."
9501 if test -z "$global_symbol_pipe"; then
9503 echo "*** However, this would only work if libtool was able to extract symbol"
9504 echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
9505 echo "*** not find such a program. So, this module is probably useless."
9506 echo "*** 'nm' from GNU binutils and a full rebuild may help."
9508 if test no = "$build_old_libs"; then
9509 oldlibs=$output_objdir/$libname.$libext
9510 build_libtool_libs=module
9513 build_libtool_libs=no
9516 echo "*** The inter-library dependencies that have been dropped here will be"
9517 echo "*** automatically added whenever a program is linked with this library"
9518 echo "*** or is declared to -dlopen it."
9520 if test no = "$allow_undefined"; then
9522 echo "*** Since this library must not contain undefined symbols,"
9523 echo "*** because either the platform does not support them or"
9524 echo "*** it was explicitly requested with -no-undefined,"
9525 echo "*** libtool will only create a static version of it."
9526 if test no = "$build_old_libs"; then
9527 oldlibs=$output_objdir/$libname.$libext
9528 build_libtool_libs=module
9531 build_libtool_libs=no
9536 # Done checking deplibs!
9539 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
9542 newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9543 new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9544 deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9548 # move library search paths that coincide with paths to not yet
9549 # installed libraries to the beginning of the library search list
9551 for path in $notinst_path; do
9552 case " $new_libs " in
9553 *" -L$path/$objdir "*) ;;
9555 case " $deplibs " in
9556 *" -L$path/$objdir "*)
9557 func_append new_libs " -L$path/$objdir" ;;
9562 for deplib in $deplibs; do
9565 case " $new_libs " in
9567 *) func_append new_libs " $deplib" ;;
9570 *) func_append new_libs " $deplib" ;;
9575 # All the library-specific variables (install_libdir is set above).
9580 # Test again, we may have decided not to build it any more
9581 if test yes = "$build_libtool_libs"; then
9582 # Remove $wl instances when linking with ld.
9583 # FIXME: should test the right _cmds variable.
9584 case $archive_cmds in
9587 if test yes = "$hardcode_into_libs"; then
9588 # Hardcode the library paths
9591 rpath=$finalize_rpath
9592 test relink = "$opt_mode" || rpath=$compile_rpath$rpath
9593 for libdir in $rpath; do
9594 if test -n "$hardcode_libdir_flag_spec"; then
9595 if test -n "$hardcode_libdir_separator"; then
9596 func_replace_sysroot "$libdir"
9597 libdir=$func_replace_sysroot_result
9598 if test -z "$hardcode_libdirs"; then
9599 hardcode_libdirs=$libdir
9601 # Just accumulate the unique libdirs.
9602 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
9603 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
9606 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
9611 eval flag=\"$hardcode_libdir_flag_spec\"
9612 func_append dep_rpath " $flag"
9614 elif test -n "$runpath_var"; then
9615 case "$perm_rpath " in
9617 *) func_append perm_rpath " $libdir" ;;
9621 # Substitute the hardcoded libdirs into the rpath.
9622 if test -n "$hardcode_libdir_separator" &&
9623 test -n "$hardcode_libdirs"; then
9624 libdir=$hardcode_libdirs
9625 eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
9627 if test -n "$runpath_var" && test -n "$perm_rpath"; then
9628 # We should set the runpath_var.
9630 for dir in $perm_rpath; do
9631 func_append rpath "$dir:"
9633 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
9635 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
9638 shlibpath=$finalize_shlibpath
9639 test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
9640 if test -n "$shlibpath"; then
9641 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
9644 # Get the real and link names of the library.
9645 eval shared_ext=\"$shrext_cmds\"
9646 eval library_names=\"$library_names_spec\"
9647 set dummy $library_names
9652 if test -n "$soname_spec"; then
9653 eval soname=\"$soname_spec\"
9657 if test -z "$dlname"; then
9661 lib=$output_objdir/$realname
9665 func_append linknames " $link"
9668 # Use standard objects if they are pic
9669 test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
9670 test "X$libobjs" = "X " && libobjs=
9673 if test -n "$export_symbols" && test -n "$include_expsyms"; then
9674 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
9675 export_symbols=$output_objdir/$libname.uexp
9676 func_append delfiles " $export_symbols"
9679 orig_export_symbols=
9681 cygwin* | mingw* | cegcc*)
9682 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
9683 # exporting using user supplied symfile
9684 func_dll_def_p "$export_symbols" || {
9685 # and it's NOT already a .def file. Must figure out
9686 # which of the given symbols are data symbols and tag
9687 # them as such. So, trigger use of export_symbols_cmds.
9688 # export_symbols gets reassigned inside the "prepare
9689 # the list of exported symbols" if statement, so the
9690 # include_expsyms logic still works.
9691 orig_export_symbols=$export_symbols
9693 always_export_symbols=yes
9699 # Prepare the list of exported symbols
9700 if test -z "$export_symbols"; then
9701 if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
9702 func_verbose "generating symbol list for '$libname.la'"
9703 export_symbols=$output_objdir/$libname.exp
9704 $opt_dry_run || $RM $export_symbols
9705 cmds=$export_symbols_cmds
9706 save_ifs=$IFS; IFS='~'
9707 for cmd1 in $cmds; do
9709 # Take the normal branch if the nm_file_list_spec branch
9710 # doesn't work or if tool conversion is not needed.
9711 case $nm_file_list_spec~$to_tool_file_cmd in
9712 *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
9713 try_normal_branch=yes
9716 len=$func_len_result
9719 try_normal_branch=no
9722 if test yes = "$try_normal_branch" \
9723 && { test "$len" -lt "$max_cmd_len" \
9724 || test "$max_cmd_len" -le -1; }
9726 func_show_eval "$cmd" 'exit $?'
9727 skipped_export=false
9728 elif test -n "$nm_file_list_spec"; then
9729 func_basename "$output"
9730 output_la=$func_basename_result
9731 save_libobjs=$libobjs
9733 output=$output_objdir/$output_la.nm
9734 func_to_tool_file "$output"
9735 libobjs=$nm_file_list_spec$func_to_tool_file_result
9736 func_append delfiles " $output"
9737 func_verbose "creating $NM input file list: $output"
9738 for obj in $save_libobjs; do
9739 func_to_tool_file "$obj"
9740 $ECHO "$func_to_tool_file_result"
9743 func_show_eval "$cmd" 'exit $?'
9745 libobjs=$save_libobjs
9746 skipped_export=false
9748 # The command line is too long to execute in one step.
9749 func_verbose "using reloadable object file for export list..."
9751 # Break out early, otherwise skipped_export may be
9752 # set to false by a later but shorter cmd.
9757 if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
9758 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
9759 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
9764 if test -n "$export_symbols" && test -n "$include_expsyms"; then
9765 tmp_export_symbols=$export_symbols
9766 test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
9767 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
9770 if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
9771 # The given exports_symbols file has to be filtered, so filter it.
9772 func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
9773 # FIXME: $output_objdir/$libname.filter potentially contains lots of
9774 # 's' commands, which not all seds can handle. GNU sed should be fine
9775 # though. Also, the filter scales superlinearly with the number of
9776 # global variables. join(1) would be nice here, but unfortunately
9777 # isn't a blessed tool.
9778 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
9779 func_append delfiles " $export_symbols $output_objdir/$libname.filter"
9780 export_symbols=$output_objdir/$libname.def
9781 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
9785 for test_deplib in $deplibs; do
9786 case " $convenience " in
9787 *" $test_deplib "*) ;;
9789 func_append tmp_deplibs " $test_deplib"
9793 deplibs=$tmp_deplibs
9795 if test -n "$convenience"; then
9796 if test -n "$whole_archive_flag_spec" &&
9797 test yes = "$compiler_needs_object" &&
9798 test -z "$libobjs"; then
9799 # extract the archives, so we have objects to list.
9800 # TODO: could optimize this to just extract one archive.
9801 whole_archive_flag_spec=
9803 if test -n "$whole_archive_flag_spec"; then
9804 save_libobjs=$libobjs
9805 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
9806 test "X$libobjs" = "X " && libobjs=
9808 gentop=$output_objdir/${outputname}x
9809 func_append generated " $gentop"
9811 func_extract_archives $gentop $convenience
9812 func_append libobjs " $func_extract_archives_result"
9813 test "X$libobjs" = "X " && libobjs=
9817 if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
9818 eval flag=\"$thread_safe_flag_spec\"
9819 func_append linker_flags " $flag"
9822 # Make a backup of the uninstalled library when relinking
9823 if test relink = "$opt_mode"; then
9824 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
9827 # Do each of the archive commands.
9828 if test yes = "$module" && test -n "$module_cmds"; then
9829 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
9830 eval test_cmds=\"$module_expsym_cmds\"
9831 cmds=$module_expsym_cmds
9833 eval test_cmds=\"$module_cmds\"
9837 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
9838 eval test_cmds=\"$archive_expsym_cmds\"
9839 cmds=$archive_expsym_cmds
9841 eval test_cmds=\"$archive_cmds\"
9846 if test : != "$skipped_export" &&
9847 func_len " $test_cmds" &&
9848 len=$func_len_result &&
9849 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9852 # The command line is too long to link in one step, link piecewise
9853 # or, if using GNU ld and skipped_export is not :, use a linker
9856 # Save the value of $output and $libobjs because we want to
9857 # use them later. If we have whole_archive_flag_spec, we
9858 # want to use save_libobjs as it was before
9859 # whole_archive_flag_spec was expanded, because we can't
9860 # assume the linker understands whole_archive_flag_spec.
9861 # This may have to be revisited, in case too many
9862 # convenience libraries get linked in and end up exceeding
9864 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
9865 save_libobjs=$libobjs
9868 func_basename "$output"
9869 output_la=$func_basename_result
9871 # Clear the reloadable object creation command queue and
9872 # initialize k to one.
9879 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
9880 output=$output_objdir/$output_la.lnkscript
9881 func_verbose "creating GNU ld script: $output"
9882 echo 'INPUT (' > $output
9883 for obj in $save_libobjs
9885 func_to_tool_file "$obj"
9886 $ECHO "$func_to_tool_file_result" >> $output
9889 func_append delfiles " $output"
9890 func_to_tool_file "$output"
9891 output=$func_to_tool_file_result
9892 elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
9893 output=$output_objdir/$output_la.lnk
9894 func_verbose "creating linker input file list: $output"
9899 if test yes = "$compiler_needs_object"; then
9905 func_to_tool_file "$obj"
9906 $ECHO "$func_to_tool_file_result" >> $output
9908 func_append delfiles " $output"
9909 func_to_tool_file "$output"
9910 output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
9912 if test -n "$save_libobjs"; then
9913 func_verbose "creating reloadable object files..."
9914 output=$output_objdir/$output_la-$k.$objext
9915 eval test_cmds=\"$reload_cmds\"
9916 func_len " $test_cmds"
9917 len0=$func_len_result
9920 # Loop over the list of objects to be linked.
9921 for obj in $save_libobjs
9924 func_arith $len + $func_len_result
9925 len=$func_arith_result
9926 if test -z "$objlist" ||
9927 test "$len" -lt "$max_cmd_len"; then
9928 func_append objlist " $obj"
9930 # The command $test_cmds is almost too long, add a
9931 # command to the queue.
9932 if test 1 -eq "$k"; then
9933 # The first file doesn't have a previous command to add.
9934 reload_objs=$objlist
9935 eval concat_cmds=\"$reload_cmds\"
9937 # All subsequent reloadable object files will link in
9938 # the last one created.
9939 reload_objs="$objlist $last_robj"
9940 eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
9942 last_robj=$output_objdir/$output_la-$k.$objext
9944 k=$func_arith_result
9945 output=$output_objdir/$output_la-$k.$objext
9947 func_len " $last_robj"
9948 func_arith $len0 + $func_len_result
9949 len=$func_arith_result
9952 # Handle the remaining objects by creating one last
9953 # reloadable object file. All subsequent reloadable object
9954 # files will link in the last one created.
9955 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9956 reload_objs="$objlist $last_robj"
9957 eval concat_cmds=\"\$concat_cmds$reload_cmds\"
9958 if test -n "$last_robj"; then
9959 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
9961 func_append delfiles " $output"
9967 ${skipped_export-false} && {
9968 func_verbose "generating symbol list for '$libname.la'"
9969 export_symbols=$output_objdir/$libname.exp
9970 $opt_dry_run || $RM $export_symbols
9972 # Append the command to create the export file.
9973 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9974 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
9975 if test -n "$last_robj"; then
9976 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
9980 test -n "$save_libobjs" &&
9981 func_verbose "creating a temporary reloadable object file: $output"
9983 # Loop through the commands generated above and execute them.
9984 save_ifs=$IFS; IFS='~'
9985 for cmd in $concat_cmds; do
9988 func_quote_for_expand "$cmd"
9989 eval "func_echo $func_quote_for_expand_result"
9991 $opt_dry_run || eval "$cmd" || {
9994 # Restore the uninstalled library and exit
9995 if test relink = "$opt_mode"; then
9996 ( cd "$output_objdir" && \
9997 $RM "${realname}T" && \
9998 $MV "${realname}U" "$realname" )
10006 if test -n "$export_symbols_regex" && ${skipped_export-false}; then
10007 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
10008 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
10012 ${skipped_export-false} && {
10013 if test -n "$export_symbols" && test -n "$include_expsyms"; then
10014 tmp_export_symbols=$export_symbols
10015 test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
10016 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
10019 if test -n "$orig_export_symbols"; then
10020 # The given exports_symbols file has to be filtered, so filter it.
10021 func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
10022 # FIXME: $output_objdir/$libname.filter potentially contains lots of
10023 # 's' commands, which not all seds can handle. GNU sed should be fine
10024 # though. Also, the filter scales superlinearly with the number of
10025 # global variables. join(1) would be nice here, but unfortunately
10026 # isn't a blessed tool.
10027 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
10028 func_append delfiles " $export_symbols $output_objdir/$libname.filter"
10029 export_symbols=$output_objdir/$libname.def
10030 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
10035 # Restore the value of output.
10036 output=$save_output
10038 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
10039 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
10040 test "X$libobjs" = "X " && libobjs=
10042 # Expand the library linking commands again to reset the
10043 # value of $libobjs for piecewise linking.
10045 # Do each of the archive commands.
10046 if test yes = "$module" && test -n "$module_cmds"; then
10047 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
10048 cmds=$module_expsym_cmds
10053 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
10054 cmds=$archive_expsym_cmds
10061 if test -n "$delfiles"; then
10062 # Append the command to remove temporary files to $cmds.
10063 eval cmds=\"\$cmds~\$RM $delfiles\"
10066 # Add any objects from preloaded convenience libraries
10067 if test -n "$dlprefiles"; then
10068 gentop=$output_objdir/${outputname}x
10069 func_append generated " $gentop"
10071 func_extract_archives $gentop $dlprefiles
10072 func_append libobjs " $func_extract_archives_result"
10073 test "X$libobjs" = "X " && libobjs=
10076 save_ifs=$IFS; IFS='~'
10077 for cmd in $cmds; do
10082 func_quote_for_expand "$cmd"
10083 eval "func_echo $func_quote_for_expand_result"
10085 $opt_dry_run || eval "$cmd" || {
10088 # Restore the uninstalled library and exit
10089 if test relink = "$opt_mode"; then
10090 ( cd "$output_objdir" && \
10091 $RM "${realname}T" && \
10092 $MV "${realname}U" "$realname" )
10100 # Restore the uninstalled library and exit
10101 if test relink = "$opt_mode"; then
10102 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
10104 if test -n "$convenience"; then
10105 if test -z "$whole_archive_flag_spec"; then
10106 func_show_eval '${RM}r "$gentop"'
10113 # Create links to the real library.
10114 for linkname in $linknames; do
10115 if test "$realname" != "$linkname"; then
10116 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
10120 # If -module or -export-dynamic was specified, set the dlname.
10121 if test yes = "$module" || test yes = "$export_dynamic"; then
10122 # On all known operating systems, these are identical.
10129 if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
10130 func_warning "'-dlopen' is ignored for objects"
10133 case " $deplibs" in
10135 func_warning "'-l' and '-L' are ignored for objects" ;;
10138 test -n "$rpath" && \
10139 func_warning "'-rpath' is ignored for objects"
10141 test -n "$xrpath" && \
10142 func_warning "'-R' is ignored for objects"
10144 test -n "$vinfo" && \
10145 func_warning "'-version-info' is ignored for objects"
10147 test -n "$release" && \
10148 func_warning "'-release' is ignored for objects"
10152 test -n "$objs$old_deplibs" && \
10153 func_fatal_error "cannot build library object '$output' from non-libtool objects"
10156 func_lo2o "$libobj"
10157 obj=$func_lo2o_result
10165 # Delete the old objects.
10166 $opt_dry_run || $RM $obj $libobj
10168 # Objects from convenience libraries. This assumes
10169 # single-version convenience libraries. Whenever we create
10170 # different ones for PIC/non-PIC, this we'll have to duplicate
10174 # if reload_cmds runs $LD directly, get rid of -Wl from
10175 # whole_archive_flag_spec and hope we can get by with turning comma
10177 case $reload_cmds in
10178 *\$LD[\ \$]*) wl= ;;
10180 if test -n "$convenience"; then
10181 if test -n "$whole_archive_flag_spec"; then
10182 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
10183 test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
10184 reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
10186 gentop=$output_objdir/${obj}x
10187 func_append generated " $gentop"
10189 func_extract_archives $gentop $convenience
10190 reload_conv_objs="$reload_objs $func_extract_archives_result"
10194 # If we're not building shared, we need to use non_pic_objs
10195 test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
10197 # Create the old-style object.
10198 reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
10201 func_execute_cmds "$reload_cmds" 'exit $?'
10203 # Exit if we aren't doing a library object file.
10204 if test -z "$libobj"; then
10205 if test -n "$gentop"; then
10206 func_show_eval '${RM}r "$gentop"'
10212 test yes = "$build_libtool_libs" || {
10213 if test -n "$gentop"; then
10214 func_show_eval '${RM}r "$gentop"'
10217 # Create an invalid libtool object if no PIC, so that we don't
10218 # accidentally link it into a program.
10219 # $show "echo timestamp > $libobj"
10220 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
10224 if test -n "$pic_flag" || test default != "$pic_mode"; then
10225 # Only do commands if we really have different PIC objects.
10226 reload_objs="$libobjs $reload_conv_objs"
10228 func_execute_cmds "$reload_cmds" 'exit $?'
10231 if test -n "$gentop"; then
10232 func_show_eval '${RM}r "$gentop"'
10240 *cygwin*) func_stripname '' '.exe' "$output"
10241 output=$func_stripname_result.exe;;
10243 test -n "$vinfo" && \
10244 func_warning "'-version-info' is ignored for programs"
10246 test -n "$release" && \
10247 func_warning "'-release' is ignored for programs"
10250 && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
10251 && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
10254 *-*-rhapsody* | *-*-darwin1.[012])
10255 # On Rhapsody replace the C library is the System framework
10256 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
10257 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
10263 # Don't allow lazy linking, it breaks C++ global constructors
10264 # But is supposedly fixed on 10.4 or later (yay!).
10265 if test CXX = "$tagname"; then
10266 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10268 func_append compile_command " $wl-bind_at_load"
10269 func_append finalize_command " $wl-bind_at_load"
10273 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
10274 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10275 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10280 # move library search paths that coincide with paths to not yet
10281 # installed libraries to the beginning of the library search list
10283 for path in $notinst_path; do
10284 case " $new_libs " in
10285 *" -L$path/$objdir "*) ;;
10287 case " $compile_deplibs " in
10288 *" -L$path/$objdir "*)
10289 func_append new_libs " -L$path/$objdir" ;;
10294 for deplib in $compile_deplibs; do
10297 case " $new_libs " in
10299 *) func_append new_libs " $deplib" ;;
10302 *) func_append new_libs " $deplib" ;;
10305 compile_deplibs=$new_libs
10308 func_append compile_command " $compile_deplibs"
10309 func_append finalize_command " $finalize_deplibs"
10311 if test -n "$rpath$xrpath"; then
10312 # If the user specified any rpath flags, then add them.
10313 for libdir in $rpath $xrpath; do
10314 # This is the magic to use -rpath.
10315 case "$finalize_rpath " in
10317 *) func_append finalize_rpath " $libdir" ;;
10322 # Now hardcode the library paths
10325 for libdir in $compile_rpath $finalize_rpath; do
10326 if test -n "$hardcode_libdir_flag_spec"; then
10327 if test -n "$hardcode_libdir_separator"; then
10328 if test -z "$hardcode_libdirs"; then
10329 hardcode_libdirs=$libdir
10331 # Just accumulate the unique libdirs.
10332 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10333 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10336 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10341 eval flag=\"$hardcode_libdir_flag_spec\"
10342 func_append rpath " $flag"
10344 elif test -n "$runpath_var"; then
10345 case "$perm_rpath " in
10347 *) func_append perm_rpath " $libdir" ;;
10351 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
10352 testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
10353 case :$dllsearchpath: in
10355 ::) dllsearchpath=$libdir;;
10356 *) func_append dllsearchpath ":$libdir";;
10358 case :$dllsearchpath: in
10359 *":$testbindir:"*) ;;
10360 ::) dllsearchpath=$testbindir;;
10361 *) func_append dllsearchpath ":$testbindir";;
10366 # Substitute the hardcoded libdirs into the rpath.
10367 if test -n "$hardcode_libdir_separator" &&
10368 test -n "$hardcode_libdirs"; then
10369 libdir=$hardcode_libdirs
10370 eval rpath=\" $hardcode_libdir_flag_spec\"
10372 compile_rpath=$rpath
10376 for libdir in $finalize_rpath; do
10377 if test -n "$hardcode_libdir_flag_spec"; then
10378 if test -n "$hardcode_libdir_separator"; then
10379 if test -z "$hardcode_libdirs"; then
10380 hardcode_libdirs=$libdir
10382 # Just accumulate the unique libdirs.
10383 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10384 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10387 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10392 eval flag=\"$hardcode_libdir_flag_spec\"
10393 func_append rpath " $flag"
10395 elif test -n "$runpath_var"; then
10396 case "$finalize_perm_rpath " in
10398 *) func_append finalize_perm_rpath " $libdir" ;;
10402 # Substitute the hardcoded libdirs into the rpath.
10403 if test -n "$hardcode_libdir_separator" &&
10404 test -n "$hardcode_libdirs"; then
10405 libdir=$hardcode_libdirs
10406 eval rpath=\" $hardcode_libdir_flag_spec\"
10408 finalize_rpath=$rpath
10410 if test -n "$libobjs" && test yes = "$build_old_libs"; then
10411 # Transform all the library objects into standard objects.
10412 compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10413 finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10416 func_generate_dlsyms "$outputname" "@PROGRAM@" false
10418 # template prelinking step
10419 if test -n "$prelink_cmds"; then
10420 func_execute_cmds "$prelink_cmds" 'exit $?'
10423 wrappers_required=:
10425 *cegcc* | *mingw32ce*)
10426 # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
10427 wrappers_required=false
10429 *cygwin* | *mingw* )
10430 test yes = "$build_libtool_libs" || wrappers_required=false
10433 if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
10434 wrappers_required=false
10438 $wrappers_required || {
10439 # Replace the output file specification.
10440 compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10441 link_command=$compile_command$compile_rpath
10443 # We have no uninstalled library dependencies, so finalize right now.
10445 func_show_eval "$link_command" 'exit_status=$?'
10447 if test -n "$postlink_cmds"; then
10448 func_to_tool_file "$output"
10449 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10450 func_execute_cmds "$postlink_cmds" 'exit $?'
10453 # Delete the generated files.
10454 if test -f "$output_objdir/${outputname}S.$objext"; then
10455 func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
10461 if test -n "$compile_shlibpath$finalize_shlibpath"; then
10462 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
10464 if test -n "$finalize_shlibpath"; then
10465 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
10470 if test -n "$runpath_var"; then
10471 if test -n "$perm_rpath"; then
10472 # We should set the runpath_var.
10474 for dir in $perm_rpath; do
10475 func_append rpath "$dir:"
10477 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
10479 if test -n "$finalize_perm_rpath"; then
10480 # We should set the runpath_var.
10482 for dir in $finalize_perm_rpath; do
10483 func_append rpath "$dir:"
10485 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
10489 if test yes = "$no_install"; then
10490 # We don't need to create a wrapper script.
10491 link_command=$compile_var$compile_command$compile_rpath
10492 # Replace the output file specification.
10493 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10494 # Delete the old output file.
10495 $opt_dry_run || $RM $output
10496 # Link the executable and exit
10497 func_show_eval "$link_command" 'exit $?'
10499 if test -n "$postlink_cmds"; then
10500 func_to_tool_file "$output"
10501 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10502 func_execute_cmds "$postlink_cmds" 'exit $?'
10508 case $hardcode_action,$fast_install in
10510 # Fast installation is not supported
10511 link_command=$compile_var$compile_command$compile_rpath
10512 relink_command=$finalize_var$finalize_command$finalize_rpath
10514 func_warning "this platform does not like uninstalled shared libraries"
10515 func_warning "'$output' will be relinked during installation"
10518 link_command=$finalize_var$compile_command$finalize_rpath
10519 relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
10522 link_command=$compile_var$compile_command$compile_rpath
10523 relink_command=$finalize_var$finalize_command$finalize_rpath
10526 link_command=$finalize_var$compile_command$finalize_rpath
10531 # Replace the output file specification.
10532 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
10534 # Delete the old output files.
10535 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
10537 func_show_eval "$link_command" 'exit $?'
10539 if test -n "$postlink_cmds"; then
10540 func_to_tool_file "$output_objdir/$outputname"
10541 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10542 func_execute_cmds "$postlink_cmds" 'exit $?'
10545 # Now create the wrapper script.
10546 func_verbose "creating $output"
10548 # Quote the relink command for shipping.
10549 if test -n "$relink_command"; then
10550 # Preserve any variables that may affect compiler behavior
10551 for var in $variables_saved_for_relink; do
10552 if eval test -z \"\${$var+set}\"; then
10553 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
10554 elif eval var_value=\$$var; test -z "$var_value"; then
10555 relink_command="$var=; export $var; $relink_command"
10557 func_quote_for_eval "$var_value"
10558 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
10561 func_quote "(cd `pwd`; $relink_command)"
10562 relink_command=$func_quote_result
10565 # Only actually do things if not in dry run mode.
10567 # win32 will think the script is a binary if it has
10568 # a .exe suffix, so we strip it off here.
10570 *.exe) func_stripname '' '.exe' "$output"
10571 output=$func_stripname_result ;;
10573 # test for cygwin because mv fails w/o .exe extensions
10577 func_stripname '' '.exe' "$outputname"
10578 outputname=$func_stripname_result ;;
10582 *cygwin* | *mingw* )
10583 func_dirname_and_basename "$output" "" "."
10584 output_name=$func_basename_result
10585 output_path=$func_dirname_result
10586 cwrappersource=$output_path/$objdir/lt-$output_name.c
10587 cwrapper=$output_path/$output_name.exe
10588 $RM $cwrappersource $cwrapper
10589 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
10591 func_emit_cwrapperexe_src > $cwrappersource
10593 # The wrapper executable is built using the $host compiler,
10594 # because it contains $host paths and files. If cross-
10595 # compiling, it, like the target executable, must be
10596 # executed on the $host or under an emulation environment.
10598 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
10602 # Now, create the wrapper script for func_source use:
10603 func_ltwrapper_scriptname $cwrapper
10604 $RM $func_ltwrapper_scriptname_result
10605 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
10607 # note: this script will not be executed, so do not chmod.
10608 if test "x$build" = "x$host"; then
10609 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
10611 func_emit_wrapper no > $func_ltwrapper_scriptname_result
10617 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
10619 func_emit_wrapper no > $output
10628 # See if we need to build an old-fashioned archive.
10629 for oldlib in $oldlibs; do
10631 case $build_libtool_libs in
10633 oldobjs="$libobjs_save $symfileobj"
10634 addlibs=$convenience
10635 build_libtool_libs=no
10638 oldobjs=$libobjs_save
10639 addlibs=$old_convenience
10640 build_libtool_libs=no
10643 oldobjs="$old_deplibs $non_pic_objects"
10644 $preload && test -f "$symfileobj" \
10645 && func_append oldobjs " $symfileobj"
10646 addlibs=$old_convenience
10650 if test -n "$addlibs"; then
10651 gentop=$output_objdir/${outputname}x
10652 func_append generated " $gentop"
10654 func_extract_archives $gentop $addlibs
10655 func_append oldobjs " $func_extract_archives_result"
10658 # Do each command in the archive commands.
10659 if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
10660 cmds=$old_archive_from_new_cmds
10663 # Add any objects from preloaded convenience libraries
10664 if test -n "$dlprefiles"; then
10665 gentop=$output_objdir/${outputname}x
10666 func_append generated " $gentop"
10668 func_extract_archives $gentop $dlprefiles
10669 func_append oldobjs " $func_extract_archives_result"
10672 # POSIX demands no paths to be encoded in archives. We have
10673 # to avoid creating archives with duplicate basenames if we
10674 # might have to extract them afterwards, e.g., when creating a
10675 # static archive out of a convenience library, or when linking
10676 # the entirety of a libtool archive into another (currently
10677 # not supported by libtool).
10678 if (for obj in $oldobjs
10680 func_basename "$obj"
10681 $ECHO "$func_basename_result"
10682 done | sort | sort -uc >/dev/null 2>&1); then
10685 echo "copying selected object files to avoid basename conflicts..."
10686 gentop=$output_objdir/${outputname}x
10687 func_append generated " $gentop"
10688 func_mkdir_p "$gentop"
10689 save_oldobjs=$oldobjs
10692 for obj in $save_oldobjs
10694 func_basename "$obj"
10695 objbase=$func_basename_result
10696 case " $oldobjs " in
10697 " ") oldobjs=$obj ;;
10698 *[\ /]"$objbase "*)
10700 # Make sure we don't pick an alternate name that also
10702 newobj=lt$counter-$objbase
10703 func_arith $counter + 1
10704 counter=$func_arith_result
10705 case " $oldobjs " in
10706 *[\ /]"$newobj "*) ;;
10707 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
10710 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
10711 func_append oldobjs " $gentop/$newobj"
10713 *) func_append oldobjs " $obj" ;;
10717 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
10718 tool_oldlib=$func_to_tool_file_result
10719 eval cmds=\"$old_archive_cmds\"
10722 len=$func_len_result
10723 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
10724 cmds=$old_archive_cmds
10725 elif test -n "$archiver_list_spec"; then
10726 func_verbose "using command file archive linking..."
10727 for obj in $oldobjs
10729 func_to_tool_file "$obj"
10730 $ECHO "$func_to_tool_file_result"
10731 done > $output_objdir/$libname.libcmd
10732 func_to_tool_file "$output_objdir/$libname.libcmd"
10733 oldobjs=" $archiver_list_spec$func_to_tool_file_result"
10734 cmds=$old_archive_cmds
10736 # the command line is too long to link in one step, link in parts
10737 func_verbose "using piecewise archive linking..."
10738 save_RANLIB=$RANLIB
10742 save_oldobjs=$oldobjs
10744 # Is there a better way of finding the last object in the list?
10745 for obj in $save_oldobjs
10749 eval test_cmds=\"$old_archive_cmds\"
10750 func_len " $test_cmds"
10751 len0=$func_len_result
10753 for obj in $save_oldobjs
10756 func_arith $len + $func_len_result
10757 len=$func_arith_result
10758 func_append objlist " $obj"
10759 if test "$len" -lt "$max_cmd_len"; then
10762 # the above command should be used before it gets too long
10764 if test "$obj" = "$last_oldobj"; then
10765 RANLIB=$save_RANLIB
10767 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
10768 eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
10773 RANLIB=$save_RANLIB
10775 if test -z "$oldobjs"; then
10776 eval cmds=\"\$concat_cmds\"
10778 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
10782 func_execute_cmds "$cmds" 'exit $?'
10785 test -n "$generated" && \
10786 func_show_eval "${RM}r$generated"
10788 # Now create the libtool archive.
10792 test yes = "$build_old_libs" && old_library=$libname.$libext
10793 func_verbose "creating $output"
10795 # Preserve any variables that may affect compiler behavior
10796 for var in $variables_saved_for_relink; do
10797 if eval test -z \"\${$var+set}\"; then
10798 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
10799 elif eval var_value=\$$var; test -z "$var_value"; then
10800 relink_command="$var=; export $var; $relink_command"
10802 func_quote_for_eval "$var_value"
10803 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
10806 # Quote the link command for shipping.
10807 relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
10808 func_quote "$relink_command"
10809 relink_command=$func_quote_result
10810 if test yes = "$hardcode_automatic"; then
10814 # Only create the output if not a dry run.
10816 for installed in no yes; do
10817 if test yes = "$installed"; then
10818 if test -z "$install_libdir"; then
10821 output=$output_objdir/${outputname}i
10822 # Replace all uninstalled libtool libraries with the installed ones
10823 newdependency_libs=
10824 for deplib in $dependency_libs; do
10827 func_basename "$deplib"
10828 name=$func_basename_result
10829 func_resolve_sysroot "$deplib"
10830 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
10831 test -z "$libdir" && \
10832 func_fatal_error "'$deplib' is not a valid libtool archive"
10833 func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
10836 func_stripname -L '' "$deplib"
10837 func_replace_sysroot "$func_stripname_result"
10838 func_append newdependency_libs " -L$func_replace_sysroot_result"
10841 func_stripname -R '' "$deplib"
10842 func_replace_sysroot "$func_stripname_result"
10843 func_append newdependency_libs " -R$func_replace_sysroot_result"
10845 *) func_append newdependency_libs " $deplib" ;;
10848 dependency_libs=$newdependency_libs
10851 for lib in $dlfiles; do
10854 func_basename "$lib"
10855 name=$func_basename_result
10856 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
10857 test -z "$libdir" && \
10858 func_fatal_error "'$lib' is not a valid libtool archive"
10859 func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
10861 *) func_append newdlfiles " $lib" ;;
10864 dlfiles=$newdlfiles
10866 for lib in $dlprefiles; do
10869 # Only pass preopened files to the pseudo-archive (for
10870 # eventual linking with the app. that links it) if we
10871 # didn't already link the preopened objects directly into
10873 func_basename "$lib"
10874 name=$func_basename_result
10875 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
10876 test -z "$libdir" && \
10877 func_fatal_error "'$lib' is not a valid libtool archive"
10878 func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
10882 dlprefiles=$newdlprefiles
10885 for lib in $dlfiles; do
10887 [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
10888 *) abs=`pwd`"/$lib" ;;
10890 func_append newdlfiles " $abs"
10892 dlfiles=$newdlfiles
10894 for lib in $dlprefiles; do
10896 [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
10897 *) abs=`pwd`"/$lib" ;;
10899 func_append newdlprefiles " $abs"
10901 dlprefiles=$newdlprefiles
10904 # place dlname in correct position for cygwin
10905 # In fact, it would be nice if we could use this code for all target
10906 # systems that can't hard-code library paths into their executables
10907 # and that have no shared library path variable independent of PATH,
10908 # but it turns out we can't easily determine that from inspecting
10909 # libtool variables, so we have to hard-code the OSs to which it
10910 # applies here; at the moment, that means platforms that use the PE
10911 # object format with DLL files. See the long comment at the top of
10912 # tests/bindir.at for full details.
10914 case $host,$output,$installed,$module,$dlname in
10915 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
10916 # If a -bindir argument was supplied, place the dll there.
10917 if test -n "$bindir"; then
10918 func_relative_path "$install_libdir" "$bindir"
10919 tdlname=$func_relative_path_result/$dlname
10921 # Otherwise fall back on heuristic.
10922 tdlname=../bin/$dlname
10927 # $outputname - a libtool library file
10928 # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
10930 # Please DO NOT delete this file!
10931 # It is necessary for linking the library.
10933 # The name that we can dlopen(3).
10936 # Names of this library.
10937 library_names='$library_names'
10939 # The name of the static archive.
10940 old_library='$old_library'
10942 # Linker flags that cannot go in dependency_libs.
10943 inherited_linker_flags='$new_inherited_linker_flags'
10945 # Libraries that this one depends upon.
10946 dependency_libs='$dependency_libs'
10948 # Names of additional weak libraries provided by this library
10949 weak_library_names='$weak_libs'
10951 # Version information for $libname.
10956 # Is this an already installed library?
10957 installed=$installed
10959 # Should we warn about portability when linking against -modules?
10960 shouldnotlink=$module
10962 # Files to dlopen/dlpreopen
10964 dlpreopen='$dlprefiles'
10966 # Directory that this library needs to be installed in:
10967 libdir='$install_libdir'"
10968 if test no,yes = "$installed,$need_relink"; then
10969 $ECHO >> $output "\
10970 relink_command=\"$relink_command\""
10975 # Do a symbolic link so that the libtool archive can be found in
10976 # LD_LIBRARY_PATH before the program is installed.
10977 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
10983 if test link = "$opt_mode" || test relink = "$opt_mode"; then
10984 func_mode_link ${1+"$@"}
10988 # func_mode_uninstall arg...
10989 func_mode_uninstall ()
10998 # This variable tells wrapper scripts just to set variables rather
10999 # than running their programs.
11000 libtool_install_magic=$magic
11005 -f) func_append RM " $arg"; rmforce=: ;;
11006 -*) func_append RM " $arg" ;;
11007 *) func_append files " $arg" ;;
11012 func_fatal_help "you must specify an RM program"
11016 for file in $files; do
11017 func_dirname "$file" "" "."
11018 dir=$func_dirname_result
11019 if test . = "$dir"; then
11024 func_basename "$file"
11025 name=$func_basename_result
11026 test uninstall = "$opt_mode" && odir=$dir
11028 # Remember odir for removal later, being careful to avoid duplicates
11029 if test clean = "$opt_mode"; then
11030 case " $rmdirs " in
11032 *) func_append rmdirs " $odir" ;;
11036 # Don't error if the file doesn't exist and rm -f was used.
11037 if { test -L "$file"; } >/dev/null 2>&1 ||
11038 { test -h "$file"; } >/dev/null 2>&1 ||
11039 test -f "$file"; then
11041 elif test -d "$file"; then
11044 elif $rmforce; then
11052 # Possibly a libtool archive, so verify it.
11053 if func_lalib_p "$file"; then
11054 func_source $dir/$name
11056 # Delete the libtool libraries and symlinks.
11057 for n in $library_names; do
11058 func_append rmfiles " $odir/$n"
11060 test -n "$old_library" && func_append rmfiles " $odir/$old_library"
11064 case " $library_names " in
11066 *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
11068 test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
11071 if test -n "$library_names"; then
11072 # Do each command in the postuninstall commands.
11073 func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
11076 if test -n "$old_library"; then
11077 # Do each command in the old_postuninstall commands.
11078 func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
11080 # FIXME: should reinstall the best remaining shared library.
11087 # Possibly a libtool object, so verify it.
11088 if func_lalib_p "$file"; then
11090 # Read the .lo file
11091 func_source $dir/$name
11093 # Add PIC object to the list of files to remove.
11094 if test -n "$pic_object" && test none != "$pic_object"; then
11095 func_append rmfiles " $dir/$pic_object"
11098 # Add non-PIC object to the list of files to remove.
11099 if test -n "$non_pic_object" && test none != "$non_pic_object"; then
11100 func_append rmfiles " $dir/$non_pic_object"
11106 if test clean = "$opt_mode"; then
11110 func_stripname '' '.exe' "$file"
11111 file=$func_stripname_result
11112 func_stripname '' '.exe' "$name"
11113 noexename=$func_stripname_result
11114 # $file with .exe has already been added to rmfiles,
11115 # add $file without .exe
11116 func_append rmfiles " $file"
11119 # Do a test to see if this is a libtool program.
11120 if func_ltwrapper_p "$file"; then
11121 if func_ltwrapper_executable_p "$file"; then
11122 func_ltwrapper_scriptname "$file"
11124 func_source $func_ltwrapper_scriptname_result
11125 func_append rmfiles " $func_ltwrapper_scriptname_result"
11128 func_source $dir/$noexename
11131 # note $name still contains .exe if it was in $file originally
11132 # as does the version of $file that was added into $rmfiles
11133 func_append rmfiles " $odir/$name $odir/${name}S.$objext"
11134 if test yes = "$fast_install" && test -n "$relink_command"; then
11135 func_append rmfiles " $odir/lt-$name"
11137 if test "X$noexename" != "X$name"; then
11138 func_append rmfiles " $odir/lt-$noexename.c"
11144 func_show_eval "$RM $rmfiles" 'exit_status=1'
11147 # Try to remove the $objdir's in the directories where we deleted files
11148 for dir in $rmdirs; do
11149 if test -d "$dir"; then
11150 func_show_eval "rmdir $dir >/dev/null 2>&1"
11157 if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
11158 func_mode_uninstall ${1+"$@"}
11161 test -z "$opt_mode" && {
11163 func_fatal_help "you must specify a MODE"
11166 test -z "$exec_cmd" && \
11167 func_fatal_help "invalid operation mode '$opt_mode'"
11169 if test -n "$exec_cmd"; then
11170 eval exec "$exec_cmd"
11177 # The TAGs below are defined such that we never get into a situation
11178 # where we disable both kinds of libraries. Given conflicting
11179 # choices, we go for a static library, that is the most portable,
11180 # since we can't tell whether shared libraries were disabled because
11181 # the user asked for that or because the platform doesn't support
11182 # them. This is particularly important on AIX, because we don't
11183 # support having both static and shared libraries enabled at the same
11184 # time on that platform, so we default to a shared-only configuration.
11185 # If a disable-shared tag is given, we'll fallback to a static-only
11186 # configuration. But we'll never go from static-only to shared-only.
11188 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
11189 build_libtool_libs=no
11191 # ### END LIBTOOL TAG CONFIG: disable-shared
11193 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
11194 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
11195 # ### END LIBTOOL TAG CONFIG: disable-static
11198 # mode:shell-script