ltmain.sh revision 6747b715
14642e01fSmrg 26747b715Smrg# libtool (GNU libtool) 2.4 34642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 44642e01fSmrg 56747b715Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 66747b715Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 74642e01fSmrg# This is free software; see the source for copying conditions. There is NO 84642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 94642e01fSmrg 104642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify 1105b261ecSmrg# it under the terms of the GNU General Public License as published by 1205b261ecSmrg# the Free Software Foundation; either version 2 of the License, or 1305b261ecSmrg# (at your option) any later version. 1405b261ecSmrg# 154642e01fSmrg# As a special exception to the GNU General Public License, 164642e01fSmrg# if you distribute this file as part of a program or library that 174642e01fSmrg# is built using GNU Libtool, you may include this file under the 184642e01fSmrg# same distribution terms that you use for the rest of that program. 194642e01fSmrg# 204642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but 2105b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 2205b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2305b261ecSmrg# General Public License for more details. 2405b261ecSmrg# 2505b261ecSmrg# You should have received a copy of the GNU General Public License 264642e01fSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 274642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 284642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc., 294642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3005b261ecSmrg 314642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 324642e01fSmrg# 334642e01fSmrg# Provide generalized library-building support services. 344642e01fSmrg# 356747b715Smrg# --config show all configuration variables 366747b715Smrg# --debug enable verbose shell tracing 376747b715Smrg# -n, --dry-run display commands without modifying any files 386747b715Smrg# --features display basic configuration information and exit 396747b715Smrg# --mode=MODE use operation mode MODE 406747b715Smrg# --preserve-dup-deps don't remove duplicate dependency libraries 416747b715Smrg# --quiet, --silent don't print informational messages 426747b715Smrg# --no-quiet, --no-silent 436747b715Smrg# print informational messages (default) 446747b715Smrg# --tag=TAG use configuration variables from tag TAG 456747b715Smrg# -v, --verbose print more informational messages than default 466747b715Smrg# --no-verbose don't print the extra informational messages 476747b715Smrg# --version print version information 486747b715Smrg# -h, --help, --help-all print short, long, or detailed help message 494642e01fSmrg# 504642e01fSmrg# MODE must be one of the following: 514642e01fSmrg# 526747b715Smrg# clean remove files from the build directory 536747b715Smrg# compile compile a source file into a libtool object 546747b715Smrg# execute automatically set library path, then run a program 556747b715Smrg# finish complete the installation of libtool libraries 566747b715Smrg# install install libraries or executables 576747b715Smrg# link create a library or an executable 586747b715Smrg# uninstall remove libraries from an installed directory 594642e01fSmrg# 606747b715Smrg# MODE-ARGS vary depending on the MODE. When passed as first option, 616747b715Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 624642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 634642e01fSmrg# 644642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and 654642e01fSmrg# include the following information: 664642e01fSmrg# 676747b715Smrg# host-triplet: $host 686747b715Smrg# shell: $SHELL 696747b715Smrg# compiler: $LTCC 706747b715Smrg# compiler flags: $LTCFLAGS 716747b715Smrg# linker: $LD (gnu? $with_gnu_ld) 726747b715Smrg# $progname: (GNU libtool) 2.4 736747b715Smrg# automake: $automake_version 746747b715Smrg# autoconf: $autoconf_version 754642e01fSmrg# 764642e01fSmrg# Report bugs to <bug-libtool@gnu.org>. 776747b715Smrg# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 786747b715Smrg# General help using GNU software: <http://www.gnu.org/gethelp/>. 7905b261ecSmrg 806747b715SmrgPROGRAM=libtool 8105b261ecSmrgPACKAGE=libtool 826747b715SmrgVERSION=2.4 834642e01fSmrgTIMESTAMP="" 846747b715Smrgpackage_revision=1.3293 8505b261ecSmrg 864642e01fSmrg# Be Bourne compatible 8705b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8805b261ecSmrg emulate sh 8905b261ecSmrg NULLCMD=: 9005b261ecSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9105b261ecSmrg # is contrary to our usage. Disable this feature. 9205b261ecSmrg alias -g '${1+"$@"}'='"$@"' 9305b261ecSmrg setopt NO_GLOB_SUBST 9405b261ecSmrgelse 9505b261ecSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9605b261ecSmrgfi 9705b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 9805b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh 9905b261ecSmrg 1006747b715Smrg# A function that is used when there is no print builtin or printf. 1016747b715Smrgfunc_fallback_echo () 1026747b715Smrg{ 1036747b715Smrg eval 'cat <<_LTECHO_EOF 1046747b715Smrg$1 1056747b715Smrg_LTECHO_EOF' 1066747b715Smrg} 1076747b715Smrg 1084642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode. 1094642e01fSmrglt_user_locale= 1104642e01fSmrglt_safe_locale= 11105b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11205b261ecSmrgdo 11305b261ecSmrg eval "if test \"\${$lt_var+set}\" = set; then 1144642e01fSmrg save_$lt_var=\$$lt_var 1154642e01fSmrg $lt_var=C 11605b261ecSmrg export $lt_var 1174642e01fSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1184642e01fSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 11905b261ecSmrg fi" 12005b261ecSmrgdone 1216747b715SmrgLC_ALL=C 1226747b715SmrgLANGUAGE=C 1236747b715Smrgexport LANGUAGE LC_ALL 12405b261ecSmrg 1254642e01fSmrg$lt_unset CDPATH 1264642e01fSmrg 1274642e01fSmrg 1286747b715Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1296747b715Smrg# is ksh but when the shell is invoked as "sh" and the current value of 1306747b715Smrg# the _XPG environment variable is not equal to 1 (one), the special 1316747b715Smrg# positional parameter $0, within a function call, is the name of the 1326747b715Smrg# function. 1336747b715Smrgprogpath="$0" 1344642e01fSmrg 1354642e01fSmrg 1364642e01fSmrg 1374642e01fSmrg: ${CP="cp -f"} 1386747b715Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 1396747b715Smrg: ${EGREP="grep -E"} 1406747b715Smrg: ${FGREP="grep -F"} 1416747b715Smrg: ${GREP="grep"} 1424642e01fSmrg: ${LN_S="ln -s"} 1434642e01fSmrg: ${MAKE="make"} 1444642e01fSmrg: ${MKDIR="mkdir"} 1454642e01fSmrg: ${MV="mv -f"} 1464642e01fSmrg: ${RM="rm -f"} 1476747b715Smrg: ${SED="sed"} 1484642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1494642e01fSmrg: ${Xsed="$SED -e 1s/^X//"} 1504642e01fSmrg 1514642e01fSmrg# Global variables: 1524642e01fSmrgEXIT_SUCCESS=0 1534642e01fSmrgEXIT_FAILURE=1 1544642e01fSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1554642e01fSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1564642e01fSmrg 1574642e01fSmrgexit_status=$EXIT_SUCCESS 15805b261ecSmrg 15905b261ecSmrg# Make sure IFS has a sensible default 16005b261ecSmrglt_nl=' 16105b261ecSmrg' 16205b261ecSmrgIFS=" $lt_nl" 16305b261ecSmrg 1644642e01fSmrgdirname="s,/[^/]*$,," 1654642e01fSmrgbasename="s,^.*/,," 1664642e01fSmrg 1676747b715Smrg# func_dirname file append nondir_replacement 1686747b715Smrg# Compute the dirname of FILE. If nonempty, add APPEND to the result, 1696747b715Smrg# otherwise set result to NONDIR_REPLACEMENT. 1706747b715Smrgfunc_dirname () 1716747b715Smrg{ 1726747b715Smrg func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 1736747b715Smrg if test "X$func_dirname_result" = "X${1}"; then 1746747b715Smrg func_dirname_result="${3}" 1756747b715Smrg else 1766747b715Smrg func_dirname_result="$func_dirname_result${2}" 1776747b715Smrg fi 1786747b715Smrg} # func_dirname may be replaced by extended shell implementation 1796747b715Smrg 1806747b715Smrg 1816747b715Smrg# func_basename file 1826747b715Smrgfunc_basename () 1836747b715Smrg{ 1846747b715Smrg func_basename_result=`$ECHO "${1}" | $SED "$basename"` 1856747b715Smrg} # func_basename may be replaced by extended shell implementation 1866747b715Smrg 1876747b715Smrg 1884642e01fSmrg# func_dirname_and_basename file append nondir_replacement 1894642e01fSmrg# perform func_basename and func_dirname in a single function 1904642e01fSmrg# call: 1914642e01fSmrg# dirname: Compute the dirname of FILE. If nonempty, 1924642e01fSmrg# add APPEND to the result, otherwise set result 1934642e01fSmrg# to NONDIR_REPLACEMENT. 1944642e01fSmrg# value returned in "$func_dirname_result" 1954642e01fSmrg# basename: Compute filename of FILE. 1964642e01fSmrg# value retuned in "$func_basename_result" 1974642e01fSmrg# Implementation must be kept synchronized with func_dirname 1984642e01fSmrg# and func_basename. For efficiency, we do not delegate to 1994642e01fSmrg# those functions but instead duplicate the functionality here. 2004642e01fSmrgfunc_dirname_and_basename () 2014642e01fSmrg{ 2026747b715Smrg # Extract subdirectory from the argument. 2036747b715Smrg func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 2046747b715Smrg if test "X$func_dirname_result" = "X${1}"; then 2056747b715Smrg func_dirname_result="${3}" 2066747b715Smrg else 2076747b715Smrg func_dirname_result="$func_dirname_result${2}" 2086747b715Smrg fi 2096747b715Smrg func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 2106747b715Smrg} # func_dirname_and_basename may be replaced by extended shell implementation 2116747b715Smrg 2126747b715Smrg 2136747b715Smrg# func_stripname prefix suffix name 2146747b715Smrg# strip PREFIX and SUFFIX off of NAME. 2156747b715Smrg# PREFIX and SUFFIX must not contain globbing or regex special 2166747b715Smrg# characters, hashes, percent signs, but SUFFIX may contain a leading 2176747b715Smrg# dot (in which case that matches only a dot). 2186747b715Smrg# func_strip_suffix prefix name 2196747b715Smrgfunc_stripname () 2206747b715Smrg{ 2216747b715Smrg case ${2} in 2226747b715Smrg .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 2236747b715Smrg *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 2246747b715Smrg esac 2256747b715Smrg} # func_stripname may be replaced by extended shell implementation 2266747b715Smrg 2276747b715Smrg 2286747b715Smrg# These SED scripts presuppose an absolute path with a trailing slash. 2296747b715Smrgpathcar='s,^/\([^/]*\).*$,\1,' 2306747b715Smrgpathcdr='s,^/[^/]*,,' 2316747b715Smrgremovedotparts=':dotsl 2326747b715Smrg s@/\./@/@g 2336747b715Smrg t dotsl 2346747b715Smrg s,/\.$,/,' 2356747b715Smrgcollapseslashes='s@/\{1,\}@/@g' 2366747b715Smrgfinalslash='s,/*$,/,' 2376747b715Smrg 2386747b715Smrg# func_normal_abspath PATH 2396747b715Smrg# Remove doubled-up and trailing slashes, "." path components, 2406747b715Smrg# and cancel out any ".." path components in PATH after making 2416747b715Smrg# it an absolute path. 2426747b715Smrg# value returned in "$func_normal_abspath_result" 2436747b715Smrgfunc_normal_abspath () 2446747b715Smrg{ 2456747b715Smrg # Start from root dir and reassemble the path. 2466747b715Smrg func_normal_abspath_result= 2476747b715Smrg func_normal_abspath_tpath=$1 2486747b715Smrg func_normal_abspath_altnamespace= 2496747b715Smrg case $func_normal_abspath_tpath in 2506747b715Smrg "") 2516747b715Smrg # Empty path, that just means $cwd. 2526747b715Smrg func_stripname '' '/' "`pwd`" 2536747b715Smrg func_normal_abspath_result=$func_stripname_result 2546747b715Smrg return 2556747b715Smrg ;; 2566747b715Smrg # The next three entries are used to spot a run of precisely 2576747b715Smrg # two leading slashes without using negated character classes; 2586747b715Smrg # we take advantage of case's first-match behaviour. 2596747b715Smrg ///*) 2606747b715Smrg # Unusual form of absolute path, do nothing. 2616747b715Smrg ;; 2626747b715Smrg //*) 2636747b715Smrg # Not necessarily an ordinary path; POSIX reserves leading '//' 2646747b715Smrg # and for example Cygwin uses it to access remote file shares 2656747b715Smrg # over CIFS/SMB, so we conserve a leading double slash if found. 2666747b715Smrg func_normal_abspath_altnamespace=/ 2676747b715Smrg ;; 2686747b715Smrg /*) 2696747b715Smrg # Absolute path, do nothing. 2706747b715Smrg ;; 2716747b715Smrg *) 2726747b715Smrg # Relative path, prepend $cwd. 2736747b715Smrg func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 2746747b715Smrg ;; 2756747b715Smrg esac 2766747b715Smrg # Cancel out all the simple stuff to save iterations. We also want 2776747b715Smrg # the path to end with a slash for ease of parsing, so make sure 2786747b715Smrg # there is one (and only one) here. 2796747b715Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2806747b715Smrg -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 2816747b715Smrg while :; do 2826747b715Smrg # Processed it all yet? 2836747b715Smrg if test "$func_normal_abspath_tpath" = / ; then 2846747b715Smrg # If we ascended to the root using ".." the result may be empty now. 2856747b715Smrg if test -z "$func_normal_abspath_result" ; then 2866747b715Smrg func_normal_abspath_result=/ 2876747b715Smrg fi 2886747b715Smrg break 2896747b715Smrg fi 2906747b715Smrg func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2916747b715Smrg -e "$pathcar"` 2926747b715Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2936747b715Smrg -e "$pathcdr"` 2946747b715Smrg # Figure out what to do with it 2956747b715Smrg case $func_normal_abspath_tcomponent in 2966747b715Smrg "") 2976747b715Smrg # Trailing empty path component, ignore it. 2986747b715Smrg ;; 2996747b715Smrg ..) 3006747b715Smrg # Parent dir; strip last assembled component from result. 3016747b715Smrg func_dirname "$func_normal_abspath_result" 3026747b715Smrg func_normal_abspath_result=$func_dirname_result 3036747b715Smrg ;; 3046747b715Smrg *) 3056747b715Smrg # Actual path component, append it. 3066747b715Smrg func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 3076747b715Smrg ;; 3086747b715Smrg esac 3096747b715Smrg done 3106747b715Smrg # Restore leading double-slash if one was found on entry. 3116747b715Smrg func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 3124642e01fSmrg} 31305b261ecSmrg 3146747b715Smrg# func_relative_path SRCDIR DSTDIR 3156747b715Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing 3166747b715Smrg# slash if non-empty, suitable for immediately appending a filename 3176747b715Smrg# without needing to append a separator. 3186747b715Smrg# value returned in "$func_relative_path_result" 3196747b715Smrgfunc_relative_path () 3206747b715Smrg{ 3216747b715Smrg func_relative_path_result= 3226747b715Smrg func_normal_abspath "$1" 3236747b715Smrg func_relative_path_tlibdir=$func_normal_abspath_result 3246747b715Smrg func_normal_abspath "$2" 3256747b715Smrg func_relative_path_tbindir=$func_normal_abspath_result 3266747b715Smrg 3276747b715Smrg # Ascend the tree starting from libdir 3286747b715Smrg while :; do 3296747b715Smrg # check if we have found a prefix of bindir 3306747b715Smrg case $func_relative_path_tbindir in 3316747b715Smrg $func_relative_path_tlibdir) 3326747b715Smrg # found an exact match 3336747b715Smrg func_relative_path_tcancelled= 3346747b715Smrg break 3356747b715Smrg ;; 3366747b715Smrg $func_relative_path_tlibdir*) 3376747b715Smrg # found a matching prefix 3386747b715Smrg func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 3396747b715Smrg func_relative_path_tcancelled=$func_stripname_result 3406747b715Smrg if test -z "$func_relative_path_result"; then 3416747b715Smrg func_relative_path_result=. 3426747b715Smrg fi 3436747b715Smrg break 3446747b715Smrg ;; 3456747b715Smrg *) 3466747b715Smrg func_dirname $func_relative_path_tlibdir 3476747b715Smrg func_relative_path_tlibdir=${func_dirname_result} 3486747b715Smrg if test "x$func_relative_path_tlibdir" = x ; then 3496747b715Smrg # Have to descend all the way to the root! 3506747b715Smrg func_relative_path_result=../$func_relative_path_result 3516747b715Smrg func_relative_path_tcancelled=$func_relative_path_tbindir 3526747b715Smrg break 3536747b715Smrg fi 3546747b715Smrg func_relative_path_result=../$func_relative_path_result 3556747b715Smrg ;; 3566747b715Smrg esac 3576747b715Smrg done 3584642e01fSmrg 3596747b715Smrg # Now calculate path; take care to avoid doubling-up slashes. 3606747b715Smrg func_stripname '' '/' "$func_relative_path_result" 3616747b715Smrg func_relative_path_result=$func_stripname_result 3626747b715Smrg func_stripname '/' '/' "$func_relative_path_tcancelled" 3636747b715Smrg if test "x$func_stripname_result" != x ; then 3646747b715Smrg func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 3656747b715Smrg fi 3666747b715Smrg 3676747b715Smrg # Normalisation. If bindir is libdir, return empty string, 3686747b715Smrg # else relative path ending with a slash; either way, target 3696747b715Smrg # file name can be directly appended. 3706747b715Smrg if test ! -z "$func_relative_path_result"; then 3716747b715Smrg func_stripname './' '' "$func_relative_path_result/" 3726747b715Smrg func_relative_path_result=$func_stripname_result 3736747b715Smrg fi 3746747b715Smrg} 3754642e01fSmrg 3764642e01fSmrg# The name of this program: 3774642e01fSmrgfunc_dirname_and_basename "$progpath" 3784642e01fSmrgprogname=$func_basename_result 3794642e01fSmrg 3804642e01fSmrg# Make sure we have an absolute path for reexecution: 3814642e01fSmrgcase $progpath in 3824642e01fSmrg [\\/]*|[A-Za-z]:\\*) ;; 3834642e01fSmrg *[\\/]*) 3844642e01fSmrg progdir=$func_dirname_result 3854642e01fSmrg progdir=`cd "$progdir" && pwd` 3864642e01fSmrg progpath="$progdir/$progname" 3874642e01fSmrg ;; 3884642e01fSmrg *) 3894642e01fSmrg save_IFS="$IFS" 3904642e01fSmrg IFS=: 3914642e01fSmrg for progdir in $PATH; do 3924642e01fSmrg IFS="$save_IFS" 3934642e01fSmrg test -x "$progdir/$progname" && break 3944642e01fSmrg done 3954642e01fSmrg IFS="$save_IFS" 3964642e01fSmrg test -n "$progdir" || progdir=`pwd` 3974642e01fSmrg progpath="$progdir/$progname" 3984642e01fSmrg ;; 3994642e01fSmrgesac 4004642e01fSmrg 4014642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 4024642e01fSmrg# metacharacters that are still active within double-quoted strings. 4034642e01fSmrgXsed="${SED}"' -e 1s/^X//' 4044642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 4054642e01fSmrg 4064642e01fSmrg# Same as above, but do not quote variable references. 4074642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 4084642e01fSmrg 4096747b715Smrg# Sed substitution that turns a string into a regex matching for the 4106747b715Smrg# string literally. 4116747b715Smrgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 4126747b715Smrg 4136747b715Smrg# Sed substitution that converts a w32 file name or path 4146747b715Smrg# which contains forward slashes, into one that contains 4156747b715Smrg# (escaped) backslashes. A very naive implementation. 4166747b715Smrglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 4176747b715Smrg 4184642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 4194642e01fSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 4204642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion. 4214642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of 4224642e01fSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 4234642e01fSmrgbs='\\' 4244642e01fSmrgbs2='\\\\' 4254642e01fSmrgbs4='\\\\\\\\' 4264642e01fSmrgdollar='\$' 4274642e01fSmrgsed_double_backslash="\ 4284642e01fSmrg s/$bs4/&\\ 4294642e01fSmrg/g 4304642e01fSmrg s/^$bs2$dollar/$bs&/ 4314642e01fSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 4324642e01fSmrg s/\n//g" 4334642e01fSmrg 4344642e01fSmrg# Standard options: 4354642e01fSmrgopt_dry_run=false 4364642e01fSmrgopt_help=false 4374642e01fSmrgopt_quiet=false 4384642e01fSmrgopt_verbose=false 4394642e01fSmrgopt_warning=: 4404642e01fSmrg 4414642e01fSmrg# func_echo arg... 4424642e01fSmrg# Echo program name prefixed message, along with the current mode 4434642e01fSmrg# name if it has been set yet. 4444642e01fSmrgfunc_echo () 4454642e01fSmrg{ 4466747b715Smrg $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 4474642e01fSmrg} 4484642e01fSmrg 4494642e01fSmrg# func_verbose arg... 4504642e01fSmrg# Echo program name prefixed message in verbose mode only. 4514642e01fSmrgfunc_verbose () 4524642e01fSmrg{ 4534642e01fSmrg $opt_verbose && func_echo ${1+"$@"} 4544642e01fSmrg 4554642e01fSmrg # A bug in bash halts the script if the last line of a function 4564642e01fSmrg # fails when set -e is in force, so we need another command to 4574642e01fSmrg # work around that: 4584642e01fSmrg : 4594642e01fSmrg} 4604642e01fSmrg 4616747b715Smrg# func_echo_all arg... 4626747b715Smrg# Invoke $ECHO with all args, space-separated. 4636747b715Smrgfunc_echo_all () 4646747b715Smrg{ 4656747b715Smrg $ECHO "$*" 4666747b715Smrg} 4676747b715Smrg 4684642e01fSmrg# func_error arg... 4694642e01fSmrg# Echo program name prefixed message to standard error. 4704642e01fSmrgfunc_error () 4714642e01fSmrg{ 4726747b715Smrg $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 4734642e01fSmrg} 4744642e01fSmrg 4754642e01fSmrg# func_warning arg... 4764642e01fSmrg# Echo program name prefixed warning message to standard error. 4774642e01fSmrgfunc_warning () 4784642e01fSmrg{ 4796747b715Smrg $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 4804642e01fSmrg 4814642e01fSmrg # bash bug again: 4824642e01fSmrg : 4834642e01fSmrg} 4844642e01fSmrg 4854642e01fSmrg# func_fatal_error arg... 4864642e01fSmrg# Echo program name prefixed message to standard error, and exit. 4874642e01fSmrgfunc_fatal_error () 4884642e01fSmrg{ 4894642e01fSmrg func_error ${1+"$@"} 4904642e01fSmrg exit $EXIT_FAILURE 4914642e01fSmrg} 4924642e01fSmrg 4934642e01fSmrg# func_fatal_help arg... 4944642e01fSmrg# Echo program name prefixed message to standard error, followed by 4954642e01fSmrg# a help hint, and exit. 4964642e01fSmrgfunc_fatal_help () 4974642e01fSmrg{ 4984642e01fSmrg func_error ${1+"$@"} 4994642e01fSmrg func_fatal_error "$help" 5004642e01fSmrg} 5014642e01fSmrghelp="Try \`$progname --help' for more information." ## default 5024642e01fSmrg 5034642e01fSmrg 5044642e01fSmrg# func_grep expression filename 5054642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 5064642e01fSmrgfunc_grep () 5074642e01fSmrg{ 5084642e01fSmrg $GREP "$1" "$2" >/dev/null 2>&1 5094642e01fSmrg} 5104642e01fSmrg 5114642e01fSmrg 5124642e01fSmrg# func_mkdir_p directory-path 5134642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available. 5144642e01fSmrgfunc_mkdir_p () 5154642e01fSmrg{ 5164642e01fSmrg my_directory_path="$1" 5174642e01fSmrg my_dir_list= 5184642e01fSmrg 5194642e01fSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 5204642e01fSmrg 5214642e01fSmrg # Protect directory names starting with `-' 5224642e01fSmrg case $my_directory_path in 5234642e01fSmrg -*) my_directory_path="./$my_directory_path" ;; 5244642e01fSmrg esac 5254642e01fSmrg 5264642e01fSmrg # While some portion of DIR does not yet exist... 5274642e01fSmrg while test ! -d "$my_directory_path"; do 5284642e01fSmrg # ...make a list in topmost first order. Use a colon delimited 5294642e01fSmrg # list incase some portion of path contains whitespace. 5304642e01fSmrg my_dir_list="$my_directory_path:$my_dir_list" 5314642e01fSmrg 5324642e01fSmrg # If the last portion added has no slash in it, the list is done 5334642e01fSmrg case $my_directory_path in */*) ;; *) break ;; esac 5344642e01fSmrg 5354642e01fSmrg # ...otherwise throw away the child directory and loop 5366747b715Smrg my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 5374642e01fSmrg done 5386747b715Smrg my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 5394642e01fSmrg 5404642e01fSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 5414642e01fSmrg for my_dir in $my_dir_list; do 5424642e01fSmrg IFS="$save_mkdir_p_IFS" 5434642e01fSmrg # mkdir can fail with a `File exist' error if two processes 5444642e01fSmrg # try to create one of the directories concurrently. Don't 5454642e01fSmrg # stop in that case! 5464642e01fSmrg $MKDIR "$my_dir" 2>/dev/null || : 5474642e01fSmrg done 5484642e01fSmrg IFS="$save_mkdir_p_IFS" 5494642e01fSmrg 5504642e01fSmrg # Bail out if we (or some other process) failed to create a directory. 5514642e01fSmrg test -d "$my_directory_path" || \ 5524642e01fSmrg func_fatal_error "Failed to create \`$1'" 5534642e01fSmrg fi 5544642e01fSmrg} 55505b261ecSmrg 55605b261ecSmrg 55705b261ecSmrg# func_mktempdir [string] 55805b261ecSmrg# Make a temporary directory that won't clash with other running 55905b261ecSmrg# libtool processes, and avoids race conditions if possible. If 56005b261ecSmrg# given, STRING is the basename for that directory. 56105b261ecSmrgfunc_mktempdir () 56205b261ecSmrg{ 56305b261ecSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 56405b261ecSmrg 5654642e01fSmrg if test "$opt_dry_run" = ":"; then 56605b261ecSmrg # Return a directory name, but don't create it in dry-run mode 56705b261ecSmrg my_tmpdir="${my_template}-$$" 56805b261ecSmrg else 56905b261ecSmrg 57005b261ecSmrg # If mktemp works, use that first and foremost 57105b261ecSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 57205b261ecSmrg 57305b261ecSmrg if test ! -d "$my_tmpdir"; then 5744642e01fSmrg # Failing that, at least try and use $RANDOM to avoid a race 5754642e01fSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 57605b261ecSmrg 5774642e01fSmrg save_mktempdir_umask=`umask` 5784642e01fSmrg umask 0077 5794642e01fSmrg $MKDIR "$my_tmpdir" 5804642e01fSmrg umask $save_mktempdir_umask 58105b261ecSmrg fi 58205b261ecSmrg 58305b261ecSmrg # If we're not in dry-run mode, bomb out on failure 5844642e01fSmrg test -d "$my_tmpdir" || \ 5854642e01fSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 58605b261ecSmrg fi 58705b261ecSmrg 5886747b715Smrg $ECHO "$my_tmpdir" 58905b261ecSmrg} 59005b261ecSmrg 59105b261ecSmrg 5924642e01fSmrg# func_quote_for_eval arg 5934642e01fSmrg# Aesthetically quote ARG to be evaled later. 5944642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 5954642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas 5964642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 5974642e01fSmrg# which are still active within double quotes backslashified. 5984642e01fSmrgfunc_quote_for_eval () 59905b261ecSmrg{ 6004642e01fSmrg case $1 in 6014642e01fSmrg *[\\\`\"\$]*) 6026747b715Smrg func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 6034642e01fSmrg *) 6044642e01fSmrg func_quote_for_eval_unquoted_result="$1" ;; 6054642e01fSmrg esac 6064642e01fSmrg 6074642e01fSmrg case $func_quote_for_eval_unquoted_result in 6084642e01fSmrg # Double-quote args containing shell metacharacters to delay 6094642e01fSmrg # word splitting, command substitution and and variable 6104642e01fSmrg # expansion for a subsequent eval. 6114642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 6124642e01fSmrg # in scan sets, so we specify it separately. 6134642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6144642e01fSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 6154642e01fSmrg ;; 6164642e01fSmrg *) 6174642e01fSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 61805b261ecSmrg esac 61905b261ecSmrg} 62005b261ecSmrg 62105b261ecSmrg 6224642e01fSmrg# func_quote_for_expand arg 6234642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above, 6244642e01fSmrg# but do not quote variable references. 6254642e01fSmrgfunc_quote_for_expand () 62605b261ecSmrg{ 6274642e01fSmrg case $1 in 6284642e01fSmrg *[\\\`\"]*) 6296747b715Smrg my_arg=`$ECHO "$1" | $SED \ 6304642e01fSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 63105b261ecSmrg *) 6324642e01fSmrg my_arg="$1" ;; 6334642e01fSmrg esac 6344642e01fSmrg 6354642e01fSmrg case $my_arg in 6364642e01fSmrg # Double-quote args containing shell metacharacters to delay 6374642e01fSmrg # word splitting and command substitution for a subsequent eval. 6384642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 6394642e01fSmrg # in scan sets, so we specify it separately. 6404642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6414642e01fSmrg my_arg="\"$my_arg\"" 6424642e01fSmrg ;; 6434642e01fSmrg esac 6444642e01fSmrg 6454642e01fSmrg func_quote_for_expand_result="$my_arg" 64605b261ecSmrg} 64705b261ecSmrg 64805b261ecSmrg 6494642e01fSmrg# func_show_eval cmd [fail_exp] 6504642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6514642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6524642e01fSmrg# is given, then evaluate it. 6534642e01fSmrgfunc_show_eval () 65405b261ecSmrg{ 6554642e01fSmrg my_cmd="$1" 6564642e01fSmrg my_fail_exp="${2-:}" 65705b261ecSmrg 6584642e01fSmrg ${opt_silent-false} || { 6594642e01fSmrg func_quote_for_expand "$my_cmd" 6604642e01fSmrg eval "func_echo $func_quote_for_expand_result" 6614642e01fSmrg } 6624642e01fSmrg 6634642e01fSmrg if ${opt_dry_run-false}; then :; else 6644642e01fSmrg eval "$my_cmd" 6654642e01fSmrg my_status=$? 6664642e01fSmrg if test "$my_status" -eq 0; then :; else 6674642e01fSmrg eval "(exit $my_status); $my_fail_exp" 6684642e01fSmrg fi 66905b261ecSmrg fi 67005b261ecSmrg} 67105b261ecSmrg 6724642e01fSmrg 6734642e01fSmrg# func_show_eval_locale cmd [fail_exp] 6744642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6754642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6764642e01fSmrg# is given, then evaluate it. Use the saved locale for evaluation. 6774642e01fSmrgfunc_show_eval_locale () 67805b261ecSmrg{ 6794642e01fSmrg my_cmd="$1" 6804642e01fSmrg my_fail_exp="${2-:}" 6814642e01fSmrg 6824642e01fSmrg ${opt_silent-false} || { 6834642e01fSmrg func_quote_for_expand "$my_cmd" 6844642e01fSmrg eval "func_echo $func_quote_for_expand_result" 6854642e01fSmrg } 6864642e01fSmrg 6874642e01fSmrg if ${opt_dry_run-false}; then :; else 6884642e01fSmrg eval "$lt_user_locale 6894642e01fSmrg $my_cmd" 6904642e01fSmrg my_status=$? 6914642e01fSmrg eval "$lt_safe_locale" 6924642e01fSmrg if test "$my_status" -eq 0; then :; else 6934642e01fSmrg eval "(exit $my_status); $my_fail_exp" 6944642e01fSmrg fi 69505b261ecSmrg fi 6964642e01fSmrg} 69705b261ecSmrg 6986747b715Smrg# func_tr_sh 6996747b715Smrg# Turn $1 into a string suitable for a shell variable name. 7006747b715Smrg# Result is stored in $func_tr_sh_result. All characters 7016747b715Smrg# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 7026747b715Smrg# if $1 begins with a digit, a '_' is prepended as well. 7036747b715Smrgfunc_tr_sh () 7046747b715Smrg{ 7056747b715Smrg case $1 in 7066747b715Smrg [0-9]* | *[!a-zA-Z0-9_]*) 7076747b715Smrg func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 7086747b715Smrg ;; 7096747b715Smrg * ) 7106747b715Smrg func_tr_sh_result=$1 7116747b715Smrg ;; 7126747b715Smrg esac 7136747b715Smrg} 7144642e01fSmrg 7154642e01fSmrg 7164642e01fSmrg# func_version 7174642e01fSmrg# Echo version message to standard output and exit. 7184642e01fSmrgfunc_version () 7194642e01fSmrg{ 7206747b715Smrg $opt_debug 7216747b715Smrg 7226747b715Smrg $SED -n '/(C)/!b go 7236747b715Smrg :more 7246747b715Smrg /\./!{ 7256747b715Smrg N 7266747b715Smrg s/\n# / / 7276747b715Smrg b more 7286747b715Smrg } 7296747b715Smrg :go 7306747b715Smrg /^# '$PROGRAM' (GNU /,/# warranty; / { 7314642e01fSmrg s/^# // 7324642e01fSmrg s/^# *$// 7334642e01fSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 7344642e01fSmrg p 7354642e01fSmrg }' < "$progpath" 7364642e01fSmrg exit $? 7374642e01fSmrg} 7384642e01fSmrg 7394642e01fSmrg# func_usage 7404642e01fSmrg# Echo short help message to standard output and exit. 7414642e01fSmrgfunc_usage () 7424642e01fSmrg{ 7436747b715Smrg $opt_debug 7446747b715Smrg 7456747b715Smrg $SED -n '/^# Usage:/,/^# *.*--help/ { 7464642e01fSmrg s/^# // 7474642e01fSmrg s/^# *$// 7484642e01fSmrg s/\$progname/'$progname'/ 7494642e01fSmrg p 7504642e01fSmrg }' < "$progpath" 7516747b715Smrg echo 7524642e01fSmrg $ECHO "run \`$progname --help | more' for full usage" 7534642e01fSmrg exit $? 7544642e01fSmrg} 7554642e01fSmrg 7566747b715Smrg# func_help [NOEXIT] 7576747b715Smrg# Echo long help message to standard output and exit, 7586747b715Smrg# unless 'noexit' is passed as argument. 7594642e01fSmrgfunc_help () 7604642e01fSmrg{ 7616747b715Smrg $opt_debug 7626747b715Smrg 7634642e01fSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 7646747b715Smrg :print 7654642e01fSmrg s/^# // 7664642e01fSmrg s/^# *$// 7674642e01fSmrg s*\$progname*'$progname'* 7684642e01fSmrg s*\$host*'"$host"'* 7694642e01fSmrg s*\$SHELL*'"$SHELL"'* 7704642e01fSmrg s*\$LTCC*'"$LTCC"'* 7714642e01fSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 7724642e01fSmrg s*\$LD*'"$LD"'* 7734642e01fSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 7744642e01fSmrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 7754642e01fSmrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 7764642e01fSmrg p 7776747b715Smrg d 7786747b715Smrg } 7796747b715Smrg /^# .* home page:/b print 7806747b715Smrg /^# General help using/b print 7816747b715Smrg ' < "$progpath" 7826747b715Smrg ret=$? 7836747b715Smrg if test -z "$1"; then 7846747b715Smrg exit $ret 7856747b715Smrg fi 7864642e01fSmrg} 7874642e01fSmrg 7884642e01fSmrg# func_missing_arg argname 7894642e01fSmrg# Echo program name prefixed message to standard error and set global 7904642e01fSmrg# exit_cmd. 7914642e01fSmrgfunc_missing_arg () 7924642e01fSmrg{ 7936747b715Smrg $opt_debug 7946747b715Smrg 7956747b715Smrg func_error "missing argument for $1." 7964642e01fSmrg exit_cmd=exit 79705b261ecSmrg} 79805b261ecSmrg 79905b261ecSmrg 8006747b715Smrg# func_split_short_opt shortopt 8016747b715Smrg# Set func_split_short_opt_name and func_split_short_opt_arg shell 8026747b715Smrg# variables after splitting SHORTOPT after the 2nd character. 8036747b715Smrgfunc_split_short_opt () 8046747b715Smrg{ 8056747b715Smrg my_sed_short_opt='1s/^\(..\).*$/\1/;q' 8066747b715Smrg my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 8076747b715Smrg 8086747b715Smrg func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 8096747b715Smrg func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 8106747b715Smrg} # func_split_short_opt may be replaced by extended shell implementation 81105b261ecSmrg 8124642e01fSmrg 8136747b715Smrg# func_split_long_opt longopt 8146747b715Smrg# Set func_split_long_opt_name and func_split_long_opt_arg shell 8156747b715Smrg# variables after splitting LONGOPT at the `=' sign. 8166747b715Smrgfunc_split_long_opt () 8176747b715Smrg{ 8186747b715Smrg my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 8196747b715Smrg my_sed_long_arg='1s/^--[^=]*=//' 8206747b715Smrg 8216747b715Smrg func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 8226747b715Smrg func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 8236747b715Smrg} # func_split_long_opt may be replaced by extended shell implementation 8246747b715Smrg 8256747b715Smrgexit_cmd=: 8266747b715Smrg 8274642e01fSmrg 8284642e01fSmrg 82905b261ecSmrg 83005b261ecSmrg 8314642e01fSmrgmagic="%%%MAGIC variable%%%" 8324642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%" 83305b261ecSmrg 8344642e01fSmrg# Global variables. 8354642e01fSmrgnonopt= 8364642e01fSmrgpreserve_args= 8374642e01fSmrglo2o="s/\\.lo\$/.${objext}/" 8384642e01fSmrgo2lo="s/\\.${objext}\$/.lo/" 8394642e01fSmrgextracted_archives= 8404642e01fSmrgextracted_serial=0 84105b261ecSmrg 8424642e01fSmrg# If this variable is set in any of the actions, the command in it 8434642e01fSmrg# will be execed at the end. This prevents here-documents from being 8444642e01fSmrg# left over by shells. 8454642e01fSmrgexec_cmd= 8464642e01fSmrg 8476747b715Smrg# func_append var value 8486747b715Smrg# Append VALUE to the end of shell variable VAR. 8496747b715Smrgfunc_append () 8506747b715Smrg{ 8516747b715Smrg eval "${1}=\$${1}\${2}" 8526747b715Smrg} # func_append may be replaced by extended shell implementation 8536747b715Smrg 8546747b715Smrg# func_append_quoted var value 8556747b715Smrg# Quote VALUE and append to the end of shell variable VAR, separated 8566747b715Smrg# by a space. 8576747b715Smrgfunc_append_quoted () 8586747b715Smrg{ 8596747b715Smrg func_quote_for_eval "${2}" 8606747b715Smrg eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 8616747b715Smrg} # func_append_quoted may be replaced by extended shell implementation 8626747b715Smrg 8636747b715Smrg 8646747b715Smrg# func_arith arithmetic-term... 8656747b715Smrgfunc_arith () 8666747b715Smrg{ 8676747b715Smrg func_arith_result=`expr "${@}"` 8686747b715Smrg} # func_arith may be replaced by extended shell implementation 8696747b715Smrg 8706747b715Smrg 8716747b715Smrg# func_len string 8726747b715Smrg# STRING may not start with a hyphen. 8736747b715Smrgfunc_len () 8746747b715Smrg{ 8756747b715Smrg func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 8766747b715Smrg} # func_len may be replaced by extended shell implementation 8776747b715Smrg 8786747b715Smrg 8796747b715Smrg# func_lo2o object 8806747b715Smrgfunc_lo2o () 8816747b715Smrg{ 8826747b715Smrg func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 8836747b715Smrg} # func_lo2o may be replaced by extended shell implementation 8846747b715Smrg 8856747b715Smrg 8866747b715Smrg# func_xform libobj-or-source 8876747b715Smrgfunc_xform () 8886747b715Smrg{ 8896747b715Smrg func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 8906747b715Smrg} # func_xform may be replaced by extended shell implementation 8916747b715Smrg 8926747b715Smrg 8934642e01fSmrg# func_fatal_configuration arg... 8944642e01fSmrg# Echo program name prefixed message to standard error, followed by 8954642e01fSmrg# a configuration failure hint, and exit. 8964642e01fSmrgfunc_fatal_configuration () 8974642e01fSmrg{ 8984642e01fSmrg func_error ${1+"$@"} 8994642e01fSmrg func_error "See the $PACKAGE documentation for more information." 9004642e01fSmrg func_fatal_error "Fatal configuration error." 9014642e01fSmrg} 90205b261ecSmrg 90305b261ecSmrg 9044642e01fSmrg# func_config 9054642e01fSmrg# Display the configuration for all the tags in this script. 9064642e01fSmrgfunc_config () 9074642e01fSmrg{ 9084642e01fSmrg re_begincf='^# ### BEGIN LIBTOOL' 9094642e01fSmrg re_endcf='^# ### END LIBTOOL' 9104642e01fSmrg 9114642e01fSmrg # Default configuration. 9124642e01fSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 91305b261ecSmrg 91405b261ecSmrg # Now print the configurations for the tags. 91505b261ecSmrg for tagname in $taglist; do 9164642e01fSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 91705b261ecSmrg done 91805b261ecSmrg 9194642e01fSmrg exit $? 9204642e01fSmrg} 92105b261ecSmrg 9224642e01fSmrg# func_features 9234642e01fSmrg# Display the features supported by this script. 9244642e01fSmrgfunc_features () 9254642e01fSmrg{ 9266747b715Smrg echo "host: $host" 92705b261ecSmrg if test "$build_libtool_libs" = yes; then 9286747b715Smrg echo "enable shared libraries" 92905b261ecSmrg else 9306747b715Smrg echo "disable shared libraries" 93105b261ecSmrg fi 93205b261ecSmrg if test "$build_old_libs" = yes; then 9336747b715Smrg echo "enable static libraries" 93405b261ecSmrg else 9356747b715Smrg echo "disable static libraries" 93605b261ecSmrg fi 9374642e01fSmrg 93805b261ecSmrg exit $? 9394642e01fSmrg} 94005b261ecSmrg 9414642e01fSmrg# func_enable_tag tagname 9424642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 9434642e01fSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 9444642e01fSmrg# variable here. 9454642e01fSmrgfunc_enable_tag () 9464642e01fSmrg{ 9474642e01fSmrg # Global variable: 9484642e01fSmrg tagname="$1" 94905b261ecSmrg 9504642e01fSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 9514642e01fSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 9524642e01fSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 95305b261ecSmrg 9544642e01fSmrg # Validate tagname. 9554642e01fSmrg case $tagname in 9564642e01fSmrg *[!-_A-Za-z0-9,/]*) 9574642e01fSmrg func_fatal_error "invalid tag name: $tagname" 9584642e01fSmrg ;; 9594642e01fSmrg esac 96005b261ecSmrg 9614642e01fSmrg # Don't test for the "default" C tag, as we know it's 9624642e01fSmrg # there but not specially marked. 9634642e01fSmrg case $tagname in 9644642e01fSmrg CC) ;; 9654642e01fSmrg *) 9664642e01fSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 9674642e01fSmrg taglist="$taglist $tagname" 9684642e01fSmrg 9694642e01fSmrg # Evaluate the configuration. Be careful to quote the path 9704642e01fSmrg # and the sed script, to avoid splitting on whitespace, but 9714642e01fSmrg # also don't use non-portable quotes within backquotes within 9724642e01fSmrg # quotes we have to do it in 2 steps: 9734642e01fSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 9744642e01fSmrg eval "$extractedcf" 9754642e01fSmrg else 9764642e01fSmrg func_error "ignoring unknown tag $tagname" 9774642e01fSmrg fi 9784642e01fSmrg ;; 9794642e01fSmrg esac 9804642e01fSmrg} 9814642e01fSmrg 9826747b715Smrg# func_check_version_match 9836747b715Smrg# Ensure that we are using m4 macros, and libtool script from the same 9846747b715Smrg# release of libtool. 9856747b715Smrgfunc_check_version_match () 9864642e01fSmrg{ 9876747b715Smrg if test "$package_revision" != "$macro_revision"; then 9886747b715Smrg if test "$VERSION" != "$macro_version"; then 9896747b715Smrg if test -z "$macro_version"; then 9906747b715Smrg cat >&2 <<_LT_EOF 9916747b715Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 9926747b715Smrg$progname: definition of this LT_INIT comes from an older release. 9936747b715Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 9946747b715Smrg$progname: and run autoconf again. 9956747b715Smrg_LT_EOF 9966747b715Smrg else 9976747b715Smrg cat >&2 <<_LT_EOF 9986747b715Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 9996747b715Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 10006747b715Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 10016747b715Smrg$progname: and run autoconf again. 10026747b715Smrg_LT_EOF 10036747b715Smrg fi 10046747b715Smrg else 10056747b715Smrg cat >&2 <<_LT_EOF 10066747b715Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 10076747b715Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 10086747b715Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 10096747b715Smrg$progname: of $PACKAGE $VERSION and run autoconf again. 10106747b715Smrg_LT_EOF 10116747b715Smrg fi 10126747b715Smrg 10136747b715Smrg exit $EXIT_MISMATCH 10146747b715Smrg fi 10156747b715Smrg} 10166747b715Smrg 10176747b715Smrg 10186747b715Smrg# Shorthand for --mode=foo, only valid as the first argument 10196747b715Smrgcase $1 in 10206747b715Smrgclean|clea|cle|cl) 10216747b715Smrg shift; set dummy --mode clean ${1+"$@"}; shift 10226747b715Smrg ;; 10236747b715Smrgcompile|compil|compi|comp|com|co|c) 10246747b715Smrg shift; set dummy --mode compile ${1+"$@"}; shift 10256747b715Smrg ;; 10266747b715Smrgexecute|execut|execu|exec|exe|ex|e) 10276747b715Smrg shift; set dummy --mode execute ${1+"$@"}; shift 10286747b715Smrg ;; 10296747b715Smrgfinish|finis|fini|fin|fi|f) 10306747b715Smrg shift; set dummy --mode finish ${1+"$@"}; shift 10316747b715Smrg ;; 10326747b715Smrginstall|instal|insta|inst|ins|in|i) 10336747b715Smrg shift; set dummy --mode install ${1+"$@"}; shift 10346747b715Smrg ;; 10356747b715Smrglink|lin|li|l) 10366747b715Smrg shift; set dummy --mode link ${1+"$@"}; shift 10376747b715Smrg ;; 10386747b715Smrguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 10396747b715Smrg shift; set dummy --mode uninstall ${1+"$@"}; shift 10406747b715Smrg ;; 10416747b715Smrgesac 104205b261ecSmrg 104305b261ecSmrg 10446747b715Smrg 10456747b715Smrg# Option defaults: 10466747b715Smrgopt_debug=: 10476747b715Smrgopt_dry_run=false 10486747b715Smrgopt_config=false 10496747b715Smrgopt_preserve_dup_deps=false 10506747b715Smrgopt_features=false 10516747b715Smrgopt_finish=false 10526747b715Smrgopt_help=false 10536747b715Smrgopt_help_all=false 10546747b715Smrgopt_silent=: 10556747b715Smrgopt_verbose=: 10566747b715Smrgopt_silent=false 10576747b715Smrgopt_verbose=false 10586747b715Smrg 10596747b715Smrg 10606747b715Smrg# Parse options once, thoroughly. This comes as soon as possible in the 10616747b715Smrg# script to make things like `--version' happen as quickly as we can. 10626747b715Smrg{ 10636747b715Smrg # this just eases exit handling 10646747b715Smrg while test $# -gt 0; do 10654642e01fSmrg opt="$1" 10664642e01fSmrg shift 10674642e01fSmrg case $opt in 10686747b715Smrg --debug|-x) opt_debug='set -x' 10694642e01fSmrg func_echo "enabling shell trace mode" 10704642e01fSmrg $opt_debug 10714642e01fSmrg ;; 10726747b715Smrg --dry-run|--dryrun|-n) 10736747b715Smrg opt_dry_run=: 10744642e01fSmrg ;; 10756747b715Smrg --config) 10766747b715Smrg opt_config=: 10776747b715Smrgfunc_config 10786747b715Smrg ;; 10796747b715Smrg --dlopen|-dlopen) 10806747b715Smrg optarg="$1" 10816747b715Smrg opt_dlopen="${opt_dlopen+$opt_dlopen 10826747b715Smrg}$optarg" 10834642e01fSmrg shift 10844642e01fSmrg ;; 10854642e01fSmrg --preserve-dup-deps) 10866747b715Smrg opt_preserve_dup_deps=: 10874642e01fSmrg ;; 10886747b715Smrg --features) 10896747b715Smrg opt_features=: 10906747b715Smrgfunc_features 10916747b715Smrg ;; 10926747b715Smrg --finish) 10936747b715Smrg opt_finish=: 10946747b715Smrgset dummy --mode finish ${1+"$@"}; shift 10956747b715Smrg ;; 10966747b715Smrg --help) 10976747b715Smrg opt_help=: 10986747b715Smrg ;; 10996747b715Smrg --help-all) 11006747b715Smrg opt_help_all=: 11016747b715Smrgopt_help=': help-all' 11026747b715Smrg ;; 11036747b715Smrg --mode) 11046747b715Smrg test $# = 0 && func_missing_arg $opt && break 11056747b715Smrg optarg="$1" 11066747b715Smrg opt_mode="$optarg" 11076747b715Smrgcase $optarg in 11086747b715Smrg # Valid mode arguments: 11096747b715Smrg clean|compile|execute|finish|install|link|relink|uninstall) ;; 11106747b715Smrg 11116747b715Smrg # Catch anything else as an error 11126747b715Smrg *) func_error "invalid argument for $opt" 11136747b715Smrg exit_cmd=exit 11146747b715Smrg break 11156747b715Smrg ;; 11166747b715Smrgesac 11176747b715Smrg shift 11186747b715Smrg ;; 11196747b715Smrg --no-silent|--no-quiet) 11204642e01fSmrg opt_silent=false 11216747b715Smrgfunc_append preserve_args " $opt" 11224642e01fSmrg ;; 11236747b715Smrg --no-verbose) 11246747b715Smrg opt_verbose=false 11256747b715Smrgfunc_append preserve_args " $opt" 11266747b715Smrg ;; 11276747b715Smrg --silent|--quiet) 11286747b715Smrg opt_silent=: 11296747b715Smrgfunc_append preserve_args " $opt" 11306747b715Smrg opt_verbose=false 11316747b715Smrg ;; 11326747b715Smrg --verbose|-v) 11336747b715Smrg opt_verbose=: 11346747b715Smrgfunc_append preserve_args " $opt" 11356747b715Smrgopt_silent=false 11366747b715Smrg ;; 11376747b715Smrg --tag) 11386747b715Smrg test $# = 0 && func_missing_arg $opt && break 11396747b715Smrg optarg="$1" 11406747b715Smrg opt_tag="$optarg" 11416747b715Smrgfunc_append preserve_args " $opt $optarg" 11426747b715Smrgfunc_enable_tag "$optarg" 11434642e01fSmrg shift 11444642e01fSmrg ;; 11454642e01fSmrg 11466747b715Smrg -\?|-h) func_usage ;; 11476747b715Smrg --help) func_help ;; 11486747b715Smrg --version) func_version ;; 11496747b715Smrg 11504642e01fSmrg # Separate optargs to long options: 11516747b715Smrg --*=*) 11526747b715Smrg func_split_long_opt "$opt" 11536747b715Smrg set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 11544642e01fSmrg shift 11554642e01fSmrg ;; 11564642e01fSmrg 11576747b715Smrg # Separate non-argument short options: 11586747b715Smrg -\?*|-h*|-n*|-v*) 11596747b715Smrg func_split_short_opt "$opt" 11606747b715Smrg set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 11616747b715Smrg shift 11624642e01fSmrg ;; 11636747b715Smrg 11646747b715Smrg --) break ;; 11656747b715Smrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 11666747b715Smrg *) set dummy "$opt" ${1+"$@"}; shift; break ;; 11674642e01fSmrg esac 11684642e01fSmrg done 11694642e01fSmrg 11706747b715Smrg # Validate options: 11716747b715Smrg 11726747b715Smrg # save first non-option argument 11736747b715Smrg if test "$#" -gt 0; then 11746747b715Smrg nonopt="$opt" 11756747b715Smrg shift 11766747b715Smrg fi 11776747b715Smrg 11786747b715Smrg # preserve --debug 11796747b715Smrg test "$opt_debug" = : || func_append preserve_args " --debug" 11804642e01fSmrg 11814642e01fSmrg case $host in 11824642e01fSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 11834642e01fSmrg # don't eliminate duplications in $postdeps and $predeps 11844642e01fSmrg opt_duplicate_compiler_generated_deps=: 118505b261ecSmrg ;; 118605b261ecSmrg *) 11876747b715Smrg opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 11884642e01fSmrg ;; 11894642e01fSmrg esac 119005b261ecSmrg 11916747b715Smrg $opt_help || { 11926747b715Smrg # Sanity checks first: 11936747b715Smrg func_check_version_match 11944642e01fSmrg 11956747b715Smrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 11966747b715Smrg func_fatal_configuration "not configured to build any kind of library" 11974642e01fSmrg fi 11984642e01fSmrg 11996747b715Smrg # Darwin sucks 12006747b715Smrg eval std_shrext=\"$shrext_cmds\" 12014642e01fSmrg 12026747b715Smrg # Only execute mode is allowed to have -dlopen flags. 12036747b715Smrg if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 12046747b715Smrg func_error "unrecognized option \`-dlopen'" 12056747b715Smrg $ECHO "$help" 1>&2 12066747b715Smrg exit $EXIT_FAILURE 12076747b715Smrg fi 120805b261ecSmrg 12096747b715Smrg # Change the help message to a mode-specific one. 12106747b715Smrg generic_help="$help" 12116747b715Smrg help="Try \`$progname --help --mode=$opt_mode' for more information." 12126747b715Smrg } 12134642e01fSmrg 12144642e01fSmrg 12156747b715Smrg # Bail if the options were screwed 12166747b715Smrg $exit_cmd $EXIT_FAILURE 12176747b715Smrg} 12184642e01fSmrg 12194642e01fSmrg 122005b261ecSmrg 122105b261ecSmrg 12226747b715Smrg## ----------- ## 12236747b715Smrg## Main. ## 12246747b715Smrg## ----------- ## 122505b261ecSmrg 12264642e01fSmrg# func_lalib_p file 12274642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 12284642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 12294642e01fSmrg# determined imposters. 12304642e01fSmrgfunc_lalib_p () 12314642e01fSmrg{ 12324642e01fSmrg test -f "$1" && 12334642e01fSmrg $SED -e 4q "$1" 2>/dev/null \ 12344642e01fSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 12354642e01fSmrg} 123605b261ecSmrg 12374642e01fSmrg# func_lalib_unsafe_p file 12384642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 12394642e01fSmrg# This function implements the same check as func_lalib_p without 12404642e01fSmrg# resorting to external programs. To this end, it redirects stdin and 12414642e01fSmrg# closes it afterwards, without saving the original file descriptor. 12424642e01fSmrg# As a safety measure, use it only where a negative result would be 12434642e01fSmrg# fatal anyway. Works if `file' does not exist. 12444642e01fSmrgfunc_lalib_unsafe_p () 12454642e01fSmrg{ 12464642e01fSmrg lalib_p=no 12474642e01fSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 12484642e01fSmrg for lalib_p_l in 1 2 3 4 12494642e01fSmrg do 12504642e01fSmrg read lalib_p_line 12514642e01fSmrg case "$lalib_p_line" in 12524642e01fSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 12534642e01fSmrg esac 12544642e01fSmrg done 12554642e01fSmrg exec 0<&5 5<&- 12564642e01fSmrg fi 12574642e01fSmrg test "$lalib_p" = yes 12584642e01fSmrg} 125905b261ecSmrg 12604642e01fSmrg# func_ltwrapper_script_p file 12614642e01fSmrg# True iff FILE is a libtool wrapper script 12624642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 12634642e01fSmrg# determined imposters. 12644642e01fSmrgfunc_ltwrapper_script_p () 12654642e01fSmrg{ 12664642e01fSmrg func_lalib_p "$1" 12674642e01fSmrg} 126805b261ecSmrg 12694642e01fSmrg# func_ltwrapper_executable_p file 12704642e01fSmrg# True iff FILE is a libtool wrapper executable 12714642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 12724642e01fSmrg# determined imposters. 12734642e01fSmrgfunc_ltwrapper_executable_p () 12744642e01fSmrg{ 12754642e01fSmrg func_ltwrapper_exec_suffix= 12764642e01fSmrg case $1 in 12774642e01fSmrg *.exe) ;; 12784642e01fSmrg *) func_ltwrapper_exec_suffix=.exe ;; 12794642e01fSmrg esac 12804642e01fSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 12814642e01fSmrg} 128205b261ecSmrg 12834642e01fSmrg# func_ltwrapper_scriptname file 12844642e01fSmrg# Assumes file is an ltwrapper_executable 12854642e01fSmrg# uses $file to determine the appropriate filename for a 12864642e01fSmrg# temporary ltwrapper_script. 12874642e01fSmrgfunc_ltwrapper_scriptname () 12884642e01fSmrg{ 12896747b715Smrg func_dirname_and_basename "$1" "" "." 12906747b715Smrg func_stripname '' '.exe' "$func_basename_result" 12916747b715Smrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 12924642e01fSmrg} 12934642e01fSmrg 12944642e01fSmrg# func_ltwrapper_p file 12954642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable 12964642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 12974642e01fSmrg# determined imposters. 12984642e01fSmrgfunc_ltwrapper_p () 12994642e01fSmrg{ 13004642e01fSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 13014642e01fSmrg} 13024642e01fSmrg 13034642e01fSmrg 13044642e01fSmrg# func_execute_cmds commands fail_cmd 13054642e01fSmrg# Execute tilde-delimited COMMANDS. 13064642e01fSmrg# If FAIL_CMD is given, eval that upon failure. 13074642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD! 13084642e01fSmrgfunc_execute_cmds () 13094642e01fSmrg{ 13104642e01fSmrg $opt_debug 13114642e01fSmrg save_ifs=$IFS; IFS='~' 13124642e01fSmrg for cmd in $1; do 13134642e01fSmrg IFS=$save_ifs 13144642e01fSmrg eval cmd=\"$cmd\" 13154642e01fSmrg func_show_eval "$cmd" "${2-:}" 13164642e01fSmrg done 13174642e01fSmrg IFS=$save_ifs 13184642e01fSmrg} 13194642e01fSmrg 13204642e01fSmrg 13214642e01fSmrg# func_source file 13224642e01fSmrg# Source FILE, adding directory component if necessary. 13234642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 13244642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 13254642e01fSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 13264642e01fSmrg# `FILE.' does not work on cygwin managed mounts. 13274642e01fSmrgfunc_source () 13284642e01fSmrg{ 13294642e01fSmrg $opt_debug 13304642e01fSmrg case $1 in 13314642e01fSmrg */* | *\\*) . "$1" ;; 13324642e01fSmrg *) . "./$1" ;; 13334642e01fSmrg esac 13344642e01fSmrg} 13354642e01fSmrg 13364642e01fSmrg 13376747b715Smrg# func_resolve_sysroot PATH 13386747b715Smrg# Replace a leading = in PATH with a sysroot. Store the result into 13396747b715Smrg# func_resolve_sysroot_result 13406747b715Smrgfunc_resolve_sysroot () 13416747b715Smrg{ 13426747b715Smrg func_resolve_sysroot_result=$1 13436747b715Smrg case $func_resolve_sysroot_result in 13446747b715Smrg =*) 13456747b715Smrg func_stripname '=' '' "$func_resolve_sysroot_result" 13466747b715Smrg func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 13476747b715Smrg ;; 13486747b715Smrg esac 13496747b715Smrg} 13506747b715Smrg 13516747b715Smrg# func_replace_sysroot PATH 13526747b715Smrg# If PATH begins with the sysroot, replace it with = and 13536747b715Smrg# store the result into func_replace_sysroot_result. 13546747b715Smrgfunc_replace_sysroot () 13556747b715Smrg{ 13566747b715Smrg case "$lt_sysroot:$1" in 13576747b715Smrg ?*:"$lt_sysroot"*) 13586747b715Smrg func_stripname "$lt_sysroot" '' "$1" 13596747b715Smrg func_replace_sysroot_result="=$func_stripname_result" 13606747b715Smrg ;; 13616747b715Smrg *) 13626747b715Smrg # Including no sysroot. 13636747b715Smrg func_replace_sysroot_result=$1 13646747b715Smrg ;; 13656747b715Smrg esac 13666747b715Smrg} 13676747b715Smrg 13684642e01fSmrg# func_infer_tag arg 13694642e01fSmrg# Infer tagged configuration to use if any are available and 13704642e01fSmrg# if one wasn't chosen via the "--tag" command line option. 13714642e01fSmrg# Only attempt this if the compiler in the base compile 13724642e01fSmrg# command doesn't match the default compiler. 13734642e01fSmrg# arg is usually of the form 'gcc ...' 13744642e01fSmrgfunc_infer_tag () 13754642e01fSmrg{ 13764642e01fSmrg $opt_debug 13774642e01fSmrg if test -n "$available_tags" && test -z "$tagname"; then 13784642e01fSmrg CC_quoted= 13794642e01fSmrg for arg in $CC; do 13806747b715Smrg func_append_quoted CC_quoted "$arg" 13814642e01fSmrg done 13826747b715Smrg CC_expanded=`func_echo_all $CC` 13836747b715Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 13844642e01fSmrg case $@ in 13854642e01fSmrg # Blanks in the command may have been stripped by the calling shell, 13864642e01fSmrg # but not from the CC environment variable when configure was run. 13876747b715Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 13886747b715Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 13894642e01fSmrg # Blanks at the start of $base_compile will cause this to fail 13904642e01fSmrg # if we don't check for them as well. 13914642e01fSmrg *) 13924642e01fSmrg for z in $available_tags; do 13934642e01fSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 13944642e01fSmrg # Evaluate the configuration. 13954642e01fSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 13964642e01fSmrg CC_quoted= 13974642e01fSmrg for arg in $CC; do 13984642e01fSmrg # Double-quote args containing other shell metacharacters. 13996747b715Smrg func_append_quoted CC_quoted "$arg" 14004642e01fSmrg done 14016747b715Smrg CC_expanded=`func_echo_all $CC` 14026747b715Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 14034642e01fSmrg case "$@ " in 14046747b715Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 14056747b715Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 14064642e01fSmrg # The compiler in the base compile command matches 14074642e01fSmrg # the one in the tagged configuration. 14084642e01fSmrg # Assume this is the tagged configuration we want. 14094642e01fSmrg tagname=$z 14104642e01fSmrg break 14114642e01fSmrg ;; 14124642e01fSmrg esac 14134642e01fSmrg fi 14144642e01fSmrg done 14154642e01fSmrg # If $tagname still isn't set, then no tagged configuration 14164642e01fSmrg # was found and let the user know that the "--tag" command 14174642e01fSmrg # line option must be used. 14184642e01fSmrg if test -z "$tagname"; then 14194642e01fSmrg func_echo "unable to infer tagged configuration" 14204642e01fSmrg func_fatal_error "specify a tag with \`--tag'" 14214642e01fSmrg# else 14224642e01fSmrg# func_verbose "using $tagname tagged configuration" 14234642e01fSmrg fi 14244642e01fSmrg ;; 14254642e01fSmrg esac 14264642e01fSmrg fi 14274642e01fSmrg} 14284642e01fSmrg 14294642e01fSmrg 14304642e01fSmrg 14314642e01fSmrg# func_write_libtool_object output_name pic_name nonpic_name 14324642e01fSmrg# Create a libtool object file (analogous to a ".la" file), 14334642e01fSmrg# but don't create it if we're doing a dry run. 14344642e01fSmrgfunc_write_libtool_object () 14354642e01fSmrg{ 14364642e01fSmrg write_libobj=${1} 14374642e01fSmrg if test "$build_libtool_libs" = yes; then 14384642e01fSmrg write_lobj=\'${2}\' 14394642e01fSmrg else 14404642e01fSmrg write_lobj=none 14414642e01fSmrg fi 14424642e01fSmrg 14434642e01fSmrg if test "$build_old_libs" = yes; then 14444642e01fSmrg write_oldobj=\'${3}\' 14454642e01fSmrg else 14464642e01fSmrg write_oldobj=none 14474642e01fSmrg fi 14484642e01fSmrg 14494642e01fSmrg $opt_dry_run || { 14504642e01fSmrg cat >${write_libobj}T <<EOF 14514642e01fSmrg# $write_libobj - a libtool object file 14524642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 14534642e01fSmrg# 14544642e01fSmrg# Please DO NOT delete this file! 14554642e01fSmrg# It is necessary for linking the library. 14564642e01fSmrg 14574642e01fSmrg# Name of the PIC object. 14584642e01fSmrgpic_object=$write_lobj 14594642e01fSmrg 14604642e01fSmrg# Name of the non-PIC object 14614642e01fSmrgnon_pic_object=$write_oldobj 14624642e01fSmrg 14634642e01fSmrgEOF 14644642e01fSmrg $MV "${write_libobj}T" "${write_libobj}" 14654642e01fSmrg } 14664642e01fSmrg} 14674642e01fSmrg 14686747b715Smrg 14696747b715Smrg################################################## 14706747b715Smrg# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 14716747b715Smrg################################################## 14726747b715Smrg 14736747b715Smrg# func_convert_core_file_wine_to_w32 ARG 14746747b715Smrg# Helper function used by file name conversion functions when $build is *nix, 14756747b715Smrg# and $host is mingw, cygwin, or some other w32 environment. Relies on a 14766747b715Smrg# correctly configured wine environment available, with the winepath program 14776747b715Smrg# in $build's $PATH. 14786747b715Smrg# 14796747b715Smrg# ARG is the $build file name to be converted to w32 format. 14806747b715Smrg# Result is available in $func_convert_core_file_wine_to_w32_result, and will 14816747b715Smrg# be empty on error (or when ARG is empty) 14826747b715Smrgfunc_convert_core_file_wine_to_w32 () 14836747b715Smrg{ 14846747b715Smrg $opt_debug 14856747b715Smrg func_convert_core_file_wine_to_w32_result="$1" 14866747b715Smrg if test -n "$1"; then 14876747b715Smrg # Unfortunately, winepath does not exit with a non-zero error code, so we 14886747b715Smrg # are forced to check the contents of stdout. On the other hand, if the 14896747b715Smrg # command is not found, the shell will set an exit code of 127 and print 14906747b715Smrg # *an error message* to stdout. So we must check for both error code of 14916747b715Smrg # zero AND non-empty stdout, which explains the odd construction: 14926747b715Smrg func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 14936747b715Smrg if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 14946747b715Smrg func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 14956747b715Smrg $SED -e "$lt_sed_naive_backslashify"` 14966747b715Smrg else 14976747b715Smrg func_convert_core_file_wine_to_w32_result= 14986747b715Smrg fi 14996747b715Smrg fi 15006747b715Smrg} 15016747b715Smrg# end: func_convert_core_file_wine_to_w32 15026747b715Smrg 15036747b715Smrg 15046747b715Smrg# func_convert_core_path_wine_to_w32 ARG 15056747b715Smrg# Helper function used by path conversion functions when $build is *nix, and 15066747b715Smrg# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 15076747b715Smrg# configured wine environment available, with the winepath program in $build's 15086747b715Smrg# $PATH. Assumes ARG has no leading or trailing path separator characters. 15096747b715Smrg# 15106747b715Smrg# ARG is path to be converted from $build format to win32. 15116747b715Smrg# Result is available in $func_convert_core_path_wine_to_w32_result. 15126747b715Smrg# Unconvertible file (directory) names in ARG are skipped; if no directory names 15136747b715Smrg# are convertible, then the result may be empty. 15146747b715Smrgfunc_convert_core_path_wine_to_w32 () 15156747b715Smrg{ 15166747b715Smrg $opt_debug 15176747b715Smrg # unfortunately, winepath doesn't convert paths, only file names 15186747b715Smrg func_convert_core_path_wine_to_w32_result="" 15196747b715Smrg if test -n "$1"; then 15206747b715Smrg oldIFS=$IFS 15216747b715Smrg IFS=: 15226747b715Smrg for func_convert_core_path_wine_to_w32_f in $1; do 15236747b715Smrg IFS=$oldIFS 15246747b715Smrg func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 15256747b715Smrg if test -n "$func_convert_core_file_wine_to_w32_result" ; then 15266747b715Smrg if test -z "$func_convert_core_path_wine_to_w32_result"; then 15276747b715Smrg func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 15286747b715Smrg else 15296747b715Smrg func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 15306747b715Smrg fi 15316747b715Smrg fi 15326747b715Smrg done 15336747b715Smrg IFS=$oldIFS 15346747b715Smrg fi 15356747b715Smrg} 15366747b715Smrg# end: func_convert_core_path_wine_to_w32 15376747b715Smrg 15386747b715Smrg 15396747b715Smrg# func_cygpath ARGS... 15406747b715Smrg# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 15416747b715Smrg# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 15426747b715Smrg# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 15436747b715Smrg# (2), returns the Cygwin file name or path in func_cygpath_result (input 15446747b715Smrg# file name or path is assumed to be in w32 format, as previously converted 15456747b715Smrg# from $build's *nix or MSYS format). In case (3), returns the w32 file name 15466747b715Smrg# or path in func_cygpath_result (input file name or path is assumed to be in 15476747b715Smrg# Cygwin format). Returns an empty string on error. 15486747b715Smrg# 15496747b715Smrg# ARGS are passed to cygpath, with the last one being the file name or path to 15506747b715Smrg# be converted. 15516747b715Smrg# 15526747b715Smrg# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 15536747b715Smrg# environment variable; do not put it in $PATH. 15546747b715Smrgfunc_cygpath () 15556747b715Smrg{ 15566747b715Smrg $opt_debug 15576747b715Smrg if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 15586747b715Smrg func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 15596747b715Smrg if test "$?" -ne 0; then 15606747b715Smrg # on failure, ensure result is empty 15616747b715Smrg func_cygpath_result= 15626747b715Smrg fi 15636747b715Smrg else 15646747b715Smrg func_cygpath_result= 15656747b715Smrg func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 15666747b715Smrg fi 15676747b715Smrg} 15686747b715Smrg#end: func_cygpath 15696747b715Smrg 15706747b715Smrg 15716747b715Smrg# func_convert_core_msys_to_w32 ARG 15726747b715Smrg# Convert file name or path ARG from MSYS format to w32 format. Return 15736747b715Smrg# result in func_convert_core_msys_to_w32_result. 15746747b715Smrgfunc_convert_core_msys_to_w32 () 15756747b715Smrg{ 15766747b715Smrg $opt_debug 15776747b715Smrg # awkward: cmd appends spaces to result 15786747b715Smrg func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 15796747b715Smrg $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 15806747b715Smrg} 15816747b715Smrg#end: func_convert_core_msys_to_w32 15826747b715Smrg 15836747b715Smrg 15846747b715Smrg# func_convert_file_check ARG1 ARG2 15856747b715Smrg# Verify that ARG1 (a file name in $build format) was converted to $host 15866747b715Smrg# format in ARG2. Otherwise, emit an error message, but continue (resetting 15876747b715Smrg# func_to_host_file_result to ARG1). 15886747b715Smrgfunc_convert_file_check () 15896747b715Smrg{ 15906747b715Smrg $opt_debug 15916747b715Smrg if test -z "$2" && test -n "$1" ; then 15926747b715Smrg func_error "Could not determine host file name corresponding to" 15936747b715Smrg func_error " \`$1'" 15946747b715Smrg func_error "Continuing, but uninstalled executables may not work." 15956747b715Smrg # Fallback: 15966747b715Smrg func_to_host_file_result="$1" 15976747b715Smrg fi 15986747b715Smrg} 15996747b715Smrg# end func_convert_file_check 16006747b715Smrg 16016747b715Smrg 16026747b715Smrg# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 16036747b715Smrg# Verify that FROM_PATH (a path in $build format) was converted to $host 16046747b715Smrg# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 16056747b715Smrg# func_to_host_file_result to a simplistic fallback value (see below). 16066747b715Smrgfunc_convert_path_check () 16076747b715Smrg{ 16086747b715Smrg $opt_debug 16096747b715Smrg if test -z "$4" && test -n "$3"; then 16106747b715Smrg func_error "Could not determine the host path corresponding to" 16116747b715Smrg func_error " \`$3'" 16126747b715Smrg func_error "Continuing, but uninstalled executables may not work." 16136747b715Smrg # Fallback. This is a deliberately simplistic "conversion" and 16146747b715Smrg # should not be "improved". See libtool.info. 16156747b715Smrg if test "x$1" != "x$2"; then 16166747b715Smrg lt_replace_pathsep_chars="s|$1|$2|g" 16176747b715Smrg func_to_host_path_result=`echo "$3" | 16186747b715Smrg $SED -e "$lt_replace_pathsep_chars"` 16196747b715Smrg else 16206747b715Smrg func_to_host_path_result="$3" 16216747b715Smrg fi 16226747b715Smrg fi 16236747b715Smrg} 16246747b715Smrg# end func_convert_path_check 16256747b715Smrg 16266747b715Smrg 16276747b715Smrg# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 16286747b715Smrg# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 16296747b715Smrg# and appending REPL if ORIG matches BACKPAT. 16306747b715Smrgfunc_convert_path_front_back_pathsep () 16316747b715Smrg{ 16326747b715Smrg $opt_debug 16336747b715Smrg case $4 in 16346747b715Smrg $1 ) func_to_host_path_result="$3$func_to_host_path_result" 16356747b715Smrg ;; 16366747b715Smrg esac 16376747b715Smrg case $4 in 16386747b715Smrg $2 ) func_append func_to_host_path_result "$3" 16396747b715Smrg ;; 16406747b715Smrg esac 16416747b715Smrg} 16426747b715Smrg# end func_convert_path_front_back_pathsep 16436747b715Smrg 16446747b715Smrg 16456747b715Smrg################################################## 16466747b715Smrg# $build to $host FILE NAME CONVERSION FUNCTIONS # 16476747b715Smrg################################################## 16486747b715Smrg# invoked via `$to_host_file_cmd ARG' 16496747b715Smrg# 16506747b715Smrg# In each case, ARG is the path to be converted from $build to $host format. 16516747b715Smrg# Result will be available in $func_to_host_file_result. 16526747b715Smrg 16536747b715Smrg 16546747b715Smrg# func_to_host_file ARG 16556747b715Smrg# Converts the file name ARG from $build format to $host format. Return result 16566747b715Smrg# in func_to_host_file_result. 16576747b715Smrgfunc_to_host_file () 16586747b715Smrg{ 16596747b715Smrg $opt_debug 16606747b715Smrg $to_host_file_cmd "$1" 16616747b715Smrg} 16626747b715Smrg# end func_to_host_file 16636747b715Smrg 16646747b715Smrg 16656747b715Smrg# func_to_tool_file ARG LAZY 16666747b715Smrg# converts the file name ARG from $build format to toolchain format. Return 16676747b715Smrg# result in func_to_tool_file_result. If the conversion in use is listed 16686747b715Smrg# in (the comma separated) LAZY, no conversion takes place. 16696747b715Smrgfunc_to_tool_file () 16706747b715Smrg{ 16716747b715Smrg $opt_debug 16726747b715Smrg case ,$2, in 16736747b715Smrg *,"$to_tool_file_cmd",*) 16746747b715Smrg func_to_tool_file_result=$1 16756747b715Smrg ;; 16766747b715Smrg *) 16776747b715Smrg $to_tool_file_cmd "$1" 16786747b715Smrg func_to_tool_file_result=$func_to_host_file_result 16796747b715Smrg ;; 16806747b715Smrg esac 16816747b715Smrg} 16826747b715Smrg# end func_to_tool_file 16836747b715Smrg 16846747b715Smrg 16856747b715Smrg# func_convert_file_noop ARG 16866747b715Smrg# Copy ARG to func_to_host_file_result. 16876747b715Smrgfunc_convert_file_noop () 16886747b715Smrg{ 16896747b715Smrg func_to_host_file_result="$1" 16906747b715Smrg} 16916747b715Smrg# end func_convert_file_noop 16926747b715Smrg 16936747b715Smrg 16946747b715Smrg# func_convert_file_msys_to_w32 ARG 16956747b715Smrg# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 16966747b715Smrg# conversion to w32 is not available inside the cwrapper. Returns result in 16976747b715Smrg# func_to_host_file_result. 16986747b715Smrgfunc_convert_file_msys_to_w32 () 16996747b715Smrg{ 17006747b715Smrg $opt_debug 17016747b715Smrg func_to_host_file_result="$1" 17026747b715Smrg if test -n "$1"; then 17036747b715Smrg func_convert_core_msys_to_w32 "$1" 17046747b715Smrg func_to_host_file_result="$func_convert_core_msys_to_w32_result" 17056747b715Smrg fi 17066747b715Smrg func_convert_file_check "$1" "$func_to_host_file_result" 17076747b715Smrg} 17086747b715Smrg# end func_convert_file_msys_to_w32 17096747b715Smrg 17106747b715Smrg 17116747b715Smrg# func_convert_file_cygwin_to_w32 ARG 17126747b715Smrg# Convert file name ARG from Cygwin to w32 format. Returns result in 17136747b715Smrg# func_to_host_file_result. 17146747b715Smrgfunc_convert_file_cygwin_to_w32 () 17156747b715Smrg{ 17166747b715Smrg $opt_debug 17176747b715Smrg func_to_host_file_result="$1" 17186747b715Smrg if test -n "$1"; then 17196747b715Smrg # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 17206747b715Smrg # LT_CYGPATH in this case. 17216747b715Smrg func_to_host_file_result=`cygpath -m "$1"` 17226747b715Smrg fi 17236747b715Smrg func_convert_file_check "$1" "$func_to_host_file_result" 17246747b715Smrg} 17256747b715Smrg# end func_convert_file_cygwin_to_w32 17266747b715Smrg 17276747b715Smrg 17286747b715Smrg# func_convert_file_nix_to_w32 ARG 17296747b715Smrg# Convert file name ARG from *nix to w32 format. Requires a wine environment 17306747b715Smrg# and a working winepath. Returns result in func_to_host_file_result. 17316747b715Smrgfunc_convert_file_nix_to_w32 () 17326747b715Smrg{ 17336747b715Smrg $opt_debug 17346747b715Smrg func_to_host_file_result="$1" 17356747b715Smrg if test -n "$1"; then 17366747b715Smrg func_convert_core_file_wine_to_w32 "$1" 17376747b715Smrg func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 17386747b715Smrg fi 17396747b715Smrg func_convert_file_check "$1" "$func_to_host_file_result" 17406747b715Smrg} 17416747b715Smrg# end func_convert_file_nix_to_w32 17426747b715Smrg 17436747b715Smrg 17446747b715Smrg# func_convert_file_msys_to_cygwin ARG 17456747b715Smrg# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 17466747b715Smrg# Returns result in func_to_host_file_result. 17476747b715Smrgfunc_convert_file_msys_to_cygwin () 17486747b715Smrg{ 17496747b715Smrg $opt_debug 17506747b715Smrg func_to_host_file_result="$1" 17516747b715Smrg if test -n "$1"; then 17526747b715Smrg func_convert_core_msys_to_w32 "$1" 17536747b715Smrg func_cygpath -u "$func_convert_core_msys_to_w32_result" 17546747b715Smrg func_to_host_file_result="$func_cygpath_result" 17556747b715Smrg fi 17566747b715Smrg func_convert_file_check "$1" "$func_to_host_file_result" 17576747b715Smrg} 17586747b715Smrg# end func_convert_file_msys_to_cygwin 17596747b715Smrg 17606747b715Smrg 17616747b715Smrg# func_convert_file_nix_to_cygwin ARG 17626747b715Smrg# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 17636747b715Smrg# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 17646747b715Smrg# in func_to_host_file_result. 17656747b715Smrgfunc_convert_file_nix_to_cygwin () 17666747b715Smrg{ 17676747b715Smrg $opt_debug 17686747b715Smrg func_to_host_file_result="$1" 17696747b715Smrg if test -n "$1"; then 17706747b715Smrg # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 17716747b715Smrg func_convert_core_file_wine_to_w32 "$1" 17726747b715Smrg func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 17736747b715Smrg func_to_host_file_result="$func_cygpath_result" 17746747b715Smrg fi 17756747b715Smrg func_convert_file_check "$1" "$func_to_host_file_result" 17766747b715Smrg} 17776747b715Smrg# end func_convert_file_nix_to_cygwin 17786747b715Smrg 17796747b715Smrg 17806747b715Smrg############################################# 17816747b715Smrg# $build to $host PATH CONVERSION FUNCTIONS # 17826747b715Smrg############################################# 17836747b715Smrg# invoked via `$to_host_path_cmd ARG' 17846747b715Smrg# 17856747b715Smrg# In each case, ARG is the path to be converted from $build to $host format. 17866747b715Smrg# The result will be available in $func_to_host_path_result. 17876747b715Smrg# 17886747b715Smrg# Path separators are also converted from $build format to $host format. If 17896747b715Smrg# ARG begins or ends with a path separator character, it is preserved (but 17906747b715Smrg# converted to $host format) on output. 17916747b715Smrg# 17926747b715Smrg# All path conversion functions are named using the following convention: 17936747b715Smrg# file name conversion function : func_convert_file_X_to_Y () 17946747b715Smrg# path conversion function : func_convert_path_X_to_Y () 17956747b715Smrg# where, for any given $build/$host combination the 'X_to_Y' value is the 17966747b715Smrg# same. If conversion functions are added for new $build/$host combinations, 17976747b715Smrg# the two new functions must follow this pattern, or func_init_to_host_path_cmd 17986747b715Smrg# will break. 17996747b715Smrg 18006747b715Smrg 18016747b715Smrg# func_init_to_host_path_cmd 18026747b715Smrg# Ensures that function "pointer" variable $to_host_path_cmd is set to the 18036747b715Smrg# appropriate value, based on the value of $to_host_file_cmd. 18046747b715Smrgto_host_path_cmd= 18056747b715Smrgfunc_init_to_host_path_cmd () 18066747b715Smrg{ 18076747b715Smrg $opt_debug 18086747b715Smrg if test -z "$to_host_path_cmd"; then 18096747b715Smrg func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 18106747b715Smrg to_host_path_cmd="func_convert_path_${func_stripname_result}" 18116747b715Smrg fi 18126747b715Smrg} 18136747b715Smrg 18146747b715Smrg 18156747b715Smrg# func_to_host_path ARG 18166747b715Smrg# Converts the path ARG from $build format to $host format. Return result 18176747b715Smrg# in func_to_host_path_result. 18186747b715Smrgfunc_to_host_path () 18196747b715Smrg{ 18206747b715Smrg $opt_debug 18216747b715Smrg func_init_to_host_path_cmd 18226747b715Smrg $to_host_path_cmd "$1" 18236747b715Smrg} 18246747b715Smrg# end func_to_host_path 18256747b715Smrg 18266747b715Smrg 18276747b715Smrg# func_convert_path_noop ARG 18286747b715Smrg# Copy ARG to func_to_host_path_result. 18296747b715Smrgfunc_convert_path_noop () 18306747b715Smrg{ 18316747b715Smrg func_to_host_path_result="$1" 18326747b715Smrg} 18336747b715Smrg# end func_convert_path_noop 18346747b715Smrg 18356747b715Smrg 18366747b715Smrg# func_convert_path_msys_to_w32 ARG 18376747b715Smrg# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 18386747b715Smrg# conversion to w32 is not available inside the cwrapper. Returns result in 18396747b715Smrg# func_to_host_path_result. 18406747b715Smrgfunc_convert_path_msys_to_w32 () 18416747b715Smrg{ 18426747b715Smrg $opt_debug 18436747b715Smrg func_to_host_path_result="$1" 18446747b715Smrg if test -n "$1"; then 18456747b715Smrg # Remove leading and trailing path separator characters from ARG. MSYS 18466747b715Smrg # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 18476747b715Smrg # and winepath ignores them completely. 18486747b715Smrg func_stripname : : "$1" 18496747b715Smrg func_to_host_path_tmp1=$func_stripname_result 18506747b715Smrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 18516747b715Smrg func_to_host_path_result="$func_convert_core_msys_to_w32_result" 18526747b715Smrg func_convert_path_check : ";" \ 18536747b715Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 18546747b715Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18556747b715Smrg fi 18566747b715Smrg} 18576747b715Smrg# end func_convert_path_msys_to_w32 18586747b715Smrg 18596747b715Smrg 18606747b715Smrg# func_convert_path_cygwin_to_w32 ARG 18616747b715Smrg# Convert path ARG from Cygwin to w32 format. Returns result in 18626747b715Smrg# func_to_host_file_result. 18636747b715Smrgfunc_convert_path_cygwin_to_w32 () 18646747b715Smrg{ 18656747b715Smrg $opt_debug 18666747b715Smrg func_to_host_path_result="$1" 18676747b715Smrg if test -n "$1"; then 18686747b715Smrg # See func_convert_path_msys_to_w32: 18696747b715Smrg func_stripname : : "$1" 18706747b715Smrg func_to_host_path_tmp1=$func_stripname_result 18716747b715Smrg func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 18726747b715Smrg func_convert_path_check : ";" \ 18736747b715Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 18746747b715Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18756747b715Smrg fi 18766747b715Smrg} 18776747b715Smrg# end func_convert_path_cygwin_to_w32 18786747b715Smrg 18796747b715Smrg 18806747b715Smrg# func_convert_path_nix_to_w32 ARG 18816747b715Smrg# Convert path ARG from *nix to w32 format. Requires a wine environment and 18826747b715Smrg# a working winepath. Returns result in func_to_host_file_result. 18836747b715Smrgfunc_convert_path_nix_to_w32 () 18846747b715Smrg{ 18856747b715Smrg $opt_debug 18866747b715Smrg func_to_host_path_result="$1" 18876747b715Smrg if test -n "$1"; then 18886747b715Smrg # See func_convert_path_msys_to_w32: 18896747b715Smrg func_stripname : : "$1" 18906747b715Smrg func_to_host_path_tmp1=$func_stripname_result 18916747b715Smrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 18926747b715Smrg func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 18936747b715Smrg func_convert_path_check : ";" \ 18946747b715Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 18956747b715Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18966747b715Smrg fi 18976747b715Smrg} 18986747b715Smrg# end func_convert_path_nix_to_w32 18996747b715Smrg 19006747b715Smrg 19016747b715Smrg# func_convert_path_msys_to_cygwin ARG 19026747b715Smrg# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 19036747b715Smrg# Returns result in func_to_host_file_result. 19046747b715Smrgfunc_convert_path_msys_to_cygwin () 19056747b715Smrg{ 19066747b715Smrg $opt_debug 19076747b715Smrg func_to_host_path_result="$1" 19086747b715Smrg if test -n "$1"; then 19096747b715Smrg # See func_convert_path_msys_to_w32: 19106747b715Smrg func_stripname : : "$1" 19116747b715Smrg func_to_host_path_tmp1=$func_stripname_result 19126747b715Smrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 19136747b715Smrg func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 19146747b715Smrg func_to_host_path_result="$func_cygpath_result" 19156747b715Smrg func_convert_path_check : : \ 19166747b715Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 19176747b715Smrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 19186747b715Smrg fi 19196747b715Smrg} 19206747b715Smrg# end func_convert_path_msys_to_cygwin 19216747b715Smrg 19226747b715Smrg 19236747b715Smrg# func_convert_path_nix_to_cygwin ARG 19246747b715Smrg# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 19256747b715Smrg# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 19266747b715Smrg# func_to_host_file_result. 19276747b715Smrgfunc_convert_path_nix_to_cygwin () 19286747b715Smrg{ 19296747b715Smrg $opt_debug 19306747b715Smrg func_to_host_path_result="$1" 19316747b715Smrg if test -n "$1"; then 19326747b715Smrg # Remove leading and trailing path separator characters from 19336747b715Smrg # ARG. msys behavior is inconsistent here, cygpath turns them 19346747b715Smrg # into '.;' and ';.', and winepath ignores them completely. 19356747b715Smrg func_stripname : : "$1" 19366747b715Smrg func_to_host_path_tmp1=$func_stripname_result 19376747b715Smrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 19386747b715Smrg func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 19396747b715Smrg func_to_host_path_result="$func_cygpath_result" 19406747b715Smrg func_convert_path_check : : \ 19416747b715Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 19426747b715Smrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 19436747b715Smrg fi 19446747b715Smrg} 19456747b715Smrg# end func_convert_path_nix_to_cygwin 19466747b715Smrg 19476747b715Smrg 19484642e01fSmrg# func_mode_compile arg... 19494642e01fSmrgfunc_mode_compile () 19504642e01fSmrg{ 19514642e01fSmrg $opt_debug 19524642e01fSmrg # Get the compilation command and the source file. 19534642e01fSmrg base_compile= 19544642e01fSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 19554642e01fSmrg suppress_opt=yes 19564642e01fSmrg suppress_output= 19574642e01fSmrg arg_mode=normal 19584642e01fSmrg libobj= 19594642e01fSmrg later= 19604642e01fSmrg pie_flag= 19614642e01fSmrg 19624642e01fSmrg for arg 19634642e01fSmrg do 19644642e01fSmrg case $arg_mode in 19654642e01fSmrg arg ) 19664642e01fSmrg # do not "continue". Instead, add this to base_compile 19674642e01fSmrg lastarg="$arg" 19684642e01fSmrg arg_mode=normal 19694642e01fSmrg ;; 19704642e01fSmrg 19714642e01fSmrg target ) 19724642e01fSmrg libobj="$arg" 19734642e01fSmrg arg_mode=normal 19744642e01fSmrg continue 19754642e01fSmrg ;; 19764642e01fSmrg 19774642e01fSmrg normal ) 19784642e01fSmrg # Accept any command-line options. 19794642e01fSmrg case $arg in 19804642e01fSmrg -o) 19814642e01fSmrg test -n "$libobj" && \ 19824642e01fSmrg func_fatal_error "you cannot specify \`-o' more than once" 19834642e01fSmrg arg_mode=target 19844642e01fSmrg continue 19854642e01fSmrg ;; 19864642e01fSmrg 19874642e01fSmrg -pie | -fpie | -fPIE) 19886747b715Smrg func_append pie_flag " $arg" 19894642e01fSmrg continue 19904642e01fSmrg ;; 19914642e01fSmrg 19924642e01fSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 19936747b715Smrg func_append later " $arg" 19944642e01fSmrg continue 19954642e01fSmrg ;; 19964642e01fSmrg 19974642e01fSmrg -no-suppress) 199805b261ecSmrg suppress_opt=no 199905b261ecSmrg continue 200005b261ecSmrg ;; 200105b261ecSmrg 200205b261ecSmrg -Xcompiler) 200305b261ecSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 200405b261ecSmrg continue # The current "srcfile" will either be retained or 200505b261ecSmrg ;; # replaced later. I would guess that would be a bug. 200605b261ecSmrg 200705b261ecSmrg -Wc,*) 20084642e01fSmrg func_stripname '-Wc,' '' "$arg" 20094642e01fSmrg args=$func_stripname_result 201005b261ecSmrg lastarg= 201105b261ecSmrg save_ifs="$IFS"; IFS=',' 20124642e01fSmrg for arg in $args; do 201305b261ecSmrg IFS="$save_ifs" 20146747b715Smrg func_append_quoted lastarg "$arg" 201505b261ecSmrg done 201605b261ecSmrg IFS="$save_ifs" 20174642e01fSmrg func_stripname ' ' '' "$lastarg" 20184642e01fSmrg lastarg=$func_stripname_result 201905b261ecSmrg 202005b261ecSmrg # Add the arguments to base_compile. 20216747b715Smrg func_append base_compile " $lastarg" 202205b261ecSmrg continue 202305b261ecSmrg ;; 202405b261ecSmrg 20254642e01fSmrg *) 202605b261ecSmrg # Accept the current argument as the source file. 202705b261ecSmrg # The previous "srcfile" becomes the current argument. 202805b261ecSmrg # 202905b261ecSmrg lastarg="$srcfile" 203005b261ecSmrg srcfile="$arg" 203105b261ecSmrg ;; 203205b261ecSmrg esac # case $arg 203305b261ecSmrg ;; 203405b261ecSmrg esac # case $arg_mode 203505b261ecSmrg 203605b261ecSmrg # Aesthetically quote the previous argument. 20376747b715Smrg func_append_quoted base_compile "$lastarg" 203805b261ecSmrg done # for arg 203905b261ecSmrg 204005b261ecSmrg case $arg_mode in 204105b261ecSmrg arg) 20424642e01fSmrg func_fatal_error "you must specify an argument for -Xcompile" 204305b261ecSmrg ;; 204405b261ecSmrg target) 20454642e01fSmrg func_fatal_error "you must specify a target with \`-o'" 204605b261ecSmrg ;; 204705b261ecSmrg *) 204805b261ecSmrg # Get the name of the library object. 20494642e01fSmrg test -z "$libobj" && { 20504642e01fSmrg func_basename "$srcfile" 20514642e01fSmrg libobj="$func_basename_result" 20524642e01fSmrg } 205305b261ecSmrg ;; 205405b261ecSmrg esac 205505b261ecSmrg 205605b261ecSmrg # Recognize several different file suffixes. 205705b261ecSmrg # If the user specifies -o file.o, it is replaced with file.lo 205805b261ecSmrg case $libobj in 20594642e01fSmrg *.[cCFSifmso] | \ 20604642e01fSmrg *.ada | *.adb | *.ads | *.asm | \ 20614642e01fSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 20626747b715Smrg *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) 20634642e01fSmrg func_xform "$libobj" 20644642e01fSmrg libobj=$func_xform_result 20654642e01fSmrg ;; 206605b261ecSmrg esac 206705b261ecSmrg 206805b261ecSmrg case $libobj in 20694642e01fSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 207005b261ecSmrg *) 20714642e01fSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 207205b261ecSmrg ;; 207305b261ecSmrg esac 207405b261ecSmrg 207505b261ecSmrg func_infer_tag $base_compile 207605b261ecSmrg 207705b261ecSmrg for arg in $later; do 207805b261ecSmrg case $arg in 20794642e01fSmrg -shared) 20804642e01fSmrg test "$build_libtool_libs" != yes && \ 20814642e01fSmrg func_fatal_configuration "can not build a shared library" 20824642e01fSmrg build_old_libs=no 20834642e01fSmrg continue 20844642e01fSmrg ;; 20854642e01fSmrg 208605b261ecSmrg -static) 20874642e01fSmrg build_libtool_libs=no 208805b261ecSmrg build_old_libs=yes 208905b261ecSmrg continue 209005b261ecSmrg ;; 209105b261ecSmrg 209205b261ecSmrg -prefer-pic) 209305b261ecSmrg pic_mode=yes 209405b261ecSmrg continue 209505b261ecSmrg ;; 209605b261ecSmrg 209705b261ecSmrg -prefer-non-pic) 209805b261ecSmrg pic_mode=no 209905b261ecSmrg continue 210005b261ecSmrg ;; 210105b261ecSmrg esac 210205b261ecSmrg done 210305b261ecSmrg 21044642e01fSmrg func_quote_for_eval "$libobj" 21054642e01fSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 21064642e01fSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 21074642e01fSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 21084642e01fSmrg func_dirname_and_basename "$obj" "/" "" 21094642e01fSmrg objname="$func_basename_result" 21104642e01fSmrg xdir="$func_dirname_result" 211105b261ecSmrg lobj=${xdir}$objdir/$objname 211205b261ecSmrg 21134642e01fSmrg test -z "$base_compile" && \ 21144642e01fSmrg func_fatal_help "you must specify a compilation command" 211505b261ecSmrg 211605b261ecSmrg # Delete any leftover library objects. 211705b261ecSmrg if test "$build_old_libs" = yes; then 211805b261ecSmrg removelist="$obj $lobj $libobj ${libobj}T" 211905b261ecSmrg else 212005b261ecSmrg removelist="$lobj $libobj ${libobj}T" 212105b261ecSmrg fi 212205b261ecSmrg 212305b261ecSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 212405b261ecSmrg case $host_os in 21254642e01fSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 212605b261ecSmrg pic_mode=default 212705b261ecSmrg ;; 212805b261ecSmrg esac 212905b261ecSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 213005b261ecSmrg # non-PIC code in shared libraries is not supported 213105b261ecSmrg pic_mode=default 213205b261ecSmrg fi 213305b261ecSmrg 213405b261ecSmrg # Calculate the filename of the output object if compiler does 213505b261ecSmrg # not support -o with -c 213605b261ecSmrg if test "$compiler_c_o" = no; then 21376747b715Smrg output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 213805b261ecSmrg lockfile="$output_obj.lock" 213905b261ecSmrg else 214005b261ecSmrg output_obj= 214105b261ecSmrg need_locks=no 214205b261ecSmrg lockfile= 214305b261ecSmrg fi 214405b261ecSmrg 214505b261ecSmrg # Lock this critical section if it is needed 214605b261ecSmrg # We use this script file to make the link, it avoids creating a new file 214705b261ecSmrg if test "$need_locks" = yes; then 21484642e01fSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 21494642e01fSmrg func_echo "Waiting for $lockfile to be removed" 215005b261ecSmrg sleep 2 215105b261ecSmrg done 215205b261ecSmrg elif test "$need_locks" = warn; then 215305b261ecSmrg if test -f "$lockfile"; then 21544642e01fSmrg $ECHO "\ 215505b261ecSmrg*** ERROR, $lockfile exists and contains: 215605b261ecSmrg`cat $lockfile 2>/dev/null` 215705b261ecSmrg 215805b261ecSmrgThis indicates that another process is trying to use the same 215905b261ecSmrgtemporary object file, and libtool could not work around it because 216005b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 216105b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 216205b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 216305b261ecSmrgcompiler." 216405b261ecSmrg 21654642e01fSmrg $opt_dry_run || $RM $removelist 216605b261ecSmrg exit $EXIT_FAILURE 216705b261ecSmrg fi 21686747b715Smrg func_append removelist " $output_obj" 21694642e01fSmrg $ECHO "$srcfile" > "$lockfile" 217005b261ecSmrg fi 217105b261ecSmrg 21724642e01fSmrg $opt_dry_run || $RM $removelist 21736747b715Smrg func_append removelist " $lockfile" 21744642e01fSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 21754642e01fSmrg 21766747b715Smrg func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 21776747b715Smrg srcfile=$func_to_tool_file_result 21784642e01fSmrg func_quote_for_eval "$srcfile" 21794642e01fSmrg qsrcfile=$func_quote_for_eval_result 218005b261ecSmrg 218105b261ecSmrg # Only build a PIC object if we are building libtool libraries. 218205b261ecSmrg if test "$build_libtool_libs" = yes; then 218305b261ecSmrg # Without this assignment, base_compile gets emptied. 218405b261ecSmrg fbsd_hideous_sh_bug=$base_compile 218505b261ecSmrg 218605b261ecSmrg if test "$pic_mode" != no; then 218705b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 218805b261ecSmrg else 218905b261ecSmrg # Don't build PIC code 219005b261ecSmrg command="$base_compile $qsrcfile" 219105b261ecSmrg fi 219205b261ecSmrg 21934642e01fSmrg func_mkdir_p "$xdir$objdir" 219405b261ecSmrg 219505b261ecSmrg if test -z "$output_obj"; then 219605b261ecSmrg # Place PIC objects in $objdir 21976747b715Smrg func_append command " -o $lobj" 219805b261ecSmrg fi 219905b261ecSmrg 22004642e01fSmrg func_show_eval_locale "$command" \ 22014642e01fSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 220205b261ecSmrg 220305b261ecSmrg if test "$need_locks" = warn && 220405b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22054642e01fSmrg $ECHO "\ 220605b261ecSmrg*** ERROR, $lockfile contains: 220705b261ecSmrg`cat $lockfile 2>/dev/null` 220805b261ecSmrg 220905b261ecSmrgbut it should contain: 221005b261ecSmrg$srcfile 221105b261ecSmrg 221205b261ecSmrgThis indicates that another process is trying to use the same 221305b261ecSmrgtemporary object file, and libtool could not work around it because 221405b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 221505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 221605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 221705b261ecSmrgcompiler." 221805b261ecSmrg 22194642e01fSmrg $opt_dry_run || $RM $removelist 222005b261ecSmrg exit $EXIT_FAILURE 222105b261ecSmrg fi 222205b261ecSmrg 222305b261ecSmrg # Just move the object if needed, then go on to compile the next one 222405b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 22254642e01fSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 22264642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 222705b261ecSmrg fi 222805b261ecSmrg 222905b261ecSmrg # Allow error messages only from the first compilation. 223005b261ecSmrg if test "$suppress_opt" = yes; then 22314642e01fSmrg suppress_output=' >/dev/null 2>&1' 223205b261ecSmrg fi 223305b261ecSmrg fi 223405b261ecSmrg 223505b261ecSmrg # Only build a position-dependent object if we build old libraries. 223605b261ecSmrg if test "$build_old_libs" = yes; then 223705b261ecSmrg if test "$pic_mode" != yes; then 223805b261ecSmrg # Don't build PIC code 22394642e01fSmrg command="$base_compile $qsrcfile$pie_flag" 224005b261ecSmrg else 224105b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 224205b261ecSmrg fi 224305b261ecSmrg if test "$compiler_c_o" = yes; then 22446747b715Smrg func_append command " -o $obj" 224505b261ecSmrg fi 224605b261ecSmrg 224705b261ecSmrg # Suppress compiler output if we already did a PIC compilation. 22486747b715Smrg func_append command "$suppress_output" 22494642e01fSmrg func_show_eval_locale "$command" \ 22504642e01fSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 225105b261ecSmrg 225205b261ecSmrg if test "$need_locks" = warn && 225305b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22544642e01fSmrg $ECHO "\ 225505b261ecSmrg*** ERROR, $lockfile contains: 225605b261ecSmrg`cat $lockfile 2>/dev/null` 225705b261ecSmrg 225805b261ecSmrgbut it should contain: 225905b261ecSmrg$srcfile 226005b261ecSmrg 226105b261ecSmrgThis indicates that another process is trying to use the same 226205b261ecSmrgtemporary object file, and libtool could not work around it because 226305b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 226405b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 226505b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 226605b261ecSmrgcompiler." 226705b261ecSmrg 22684642e01fSmrg $opt_dry_run || $RM $removelist 226905b261ecSmrg exit $EXIT_FAILURE 227005b261ecSmrg fi 227105b261ecSmrg 227205b261ecSmrg # Just move the object if needed 227305b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 22744642e01fSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 22754642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 227605b261ecSmrg fi 227705b261ecSmrg fi 227805b261ecSmrg 22794642e01fSmrg $opt_dry_run || { 22804642e01fSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 228105b261ecSmrg 22824642e01fSmrg # Unlock the critical section if it was locked 22834642e01fSmrg if test "$need_locks" != no; then 22844642e01fSmrg removelist=$lockfile 22854642e01fSmrg $RM "$lockfile" 22864642e01fSmrg fi 22874642e01fSmrg } 228805b261ecSmrg 228905b261ecSmrg exit $EXIT_SUCCESS 22904642e01fSmrg} 229105b261ecSmrg 22924642e01fSmrg$opt_help || { 22936747b715Smrg test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 22944642e01fSmrg} 229505b261ecSmrg 22964642e01fSmrgfunc_mode_help () 22974642e01fSmrg{ 22984642e01fSmrg # We need to display help for each of the modes. 22996747b715Smrg case $opt_mode in 23004642e01fSmrg "") 23014642e01fSmrg # Generic help is extracted from the usage comments 23024642e01fSmrg # at the start of this file. 23034642e01fSmrg func_help 23044642e01fSmrg ;; 230505b261ecSmrg 23064642e01fSmrg clean) 23074642e01fSmrg $ECHO \ 23084642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 230905b261ecSmrg 23104642e01fSmrgRemove files from the build directory. 231105b261ecSmrg 23124642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 23134642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 23144642e01fSmrgto RM. 231505b261ecSmrg 23164642e01fSmrgIf FILE is a libtool library, object or program, all the files associated 23174642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 23184642e01fSmrg ;; 231905b261ecSmrg 23204642e01fSmrg compile) 23214642e01fSmrg $ECHO \ 23224642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 232305b261ecSmrg 23244642e01fSmrgCompile a source file into a libtool library object. 232505b261ecSmrg 23264642e01fSmrgThis mode accepts the following additional options: 232705b261ecSmrg 23284642e01fSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 23294642e01fSmrg -no-suppress do not suppress compiler output for multiple passes 23306747b715Smrg -prefer-pic try to build PIC objects only 23316747b715Smrg -prefer-non-pic try to build non-PIC objects only 23324642e01fSmrg -shared do not build a \`.o' file suitable for static linking 23334642e01fSmrg -static only build a \`.o' file suitable for static linking 23346747b715Smrg -Wc,FLAG pass FLAG directly to the compiler 233505b261ecSmrg 23364642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 23374642e01fSmrgfrom the given SOURCEFILE. 233805b261ecSmrg 23394642e01fSmrgThe output file name is determined by removing the directory component from 23404642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 23414642e01fSmrglibrary object suffix, \`.lo'." 23424642e01fSmrg ;; 234305b261ecSmrg 23444642e01fSmrg execute) 23454642e01fSmrg $ECHO \ 23464642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 234705b261ecSmrg 23484642e01fSmrgAutomatically set library path, then run a program. 234905b261ecSmrg 23504642e01fSmrgThis mode accepts the following additional options: 235105b261ecSmrg 23524642e01fSmrg -dlopen FILE add the directory containing FILE to the library path 235305b261ecSmrg 23544642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen' 23554642e01fSmrgflags. 235605b261ecSmrg 23574642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 23584642e01fSmrginto their corresponding uninstalled binary, and any of their required library 23594642e01fSmrgdirectories are added to the library path. 236005b261ecSmrg 23614642e01fSmrgThen, COMMAND is executed, with ARGS as arguments." 23624642e01fSmrg ;; 236305b261ecSmrg 23644642e01fSmrg finish) 23654642e01fSmrg $ECHO \ 23664642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 236705b261ecSmrg 23684642e01fSmrgComplete the installation of libtool libraries. 236905b261ecSmrg 23704642e01fSmrgEach LIBDIR is a directory that contains libtool libraries. 237105b261ecSmrg 23724642e01fSmrgThe commands that this mode executes may require superuser privileges. Use 23734642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed." 23744642e01fSmrg ;; 237505b261ecSmrg 23764642e01fSmrg install) 23774642e01fSmrg $ECHO \ 23784642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 237905b261ecSmrg 23804642e01fSmrgInstall executables or libraries. 238105b261ecSmrg 23824642e01fSmrgINSTALL-COMMAND is the installation command. The first component should be 23834642e01fSmrgeither the \`install' or \`cp' program. 238405b261ecSmrg 23854642e01fSmrgThe following components of INSTALL-COMMAND are treated specially: 238605b261ecSmrg 23876747b715Smrg -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 238805b261ecSmrg 23894642e01fSmrgThe rest of the components are interpreted as arguments to that command (only 23904642e01fSmrgBSD-compatible install options are recognized)." 23914642e01fSmrg ;; 239205b261ecSmrg 23934642e01fSmrg link) 23944642e01fSmrg $ECHO \ 23954642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 239605b261ecSmrg 23974642e01fSmrgLink object files or libraries together to form another library, or to 23984642e01fSmrgcreate an executable program. 239905b261ecSmrg 24004642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create 24014642e01fSmrga program from several object files. 240205b261ecSmrg 24034642e01fSmrgThe following components of LINK-COMMAND are treated specially: 240405b261ecSmrg 24054642e01fSmrg -all-static do not do any dynamic linking at all 24064642e01fSmrg -avoid-version do not add a version suffix if possible 24076747b715Smrg -bindir BINDIR specify path to binaries directory (for systems where 24086747b715Smrg libraries must be found in the PATH setting at runtime) 24094642e01fSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 24104642e01fSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 24114642e01fSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 24124642e01fSmrg -export-symbols SYMFILE 24134642e01fSmrg try to export only the symbols listed in SYMFILE 24144642e01fSmrg -export-symbols-regex REGEX 24154642e01fSmrg try to export only the symbols matching REGEX 24164642e01fSmrg -LLIBDIR search LIBDIR for required installed libraries 24174642e01fSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 24184642e01fSmrg -module build a library that can dlopened 24194642e01fSmrg -no-fast-install disable the fast-install mode 24204642e01fSmrg -no-install link a not-installable executable 24214642e01fSmrg -no-undefined declare that a library does not refer to external symbols 24224642e01fSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 24234642e01fSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 24244642e01fSmrg -precious-files-regex REGEX 24254642e01fSmrg don't remove output files matching REGEX 24264642e01fSmrg -release RELEASE specify package release information 24274642e01fSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 24284642e01fSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 24294642e01fSmrg -shared only do dynamic linking of libtool libraries 24304642e01fSmrg -shrext SUFFIX override the standard shared library file extension 24314642e01fSmrg -static do not do any dynamic linking of uninstalled libtool libraries 24324642e01fSmrg -static-libtool-libs 24334642e01fSmrg do not do any dynamic linking of libtool libraries 24344642e01fSmrg -version-info CURRENT[:REVISION[:AGE]] 24354642e01fSmrg specify library version info [each variable defaults to 0] 24364642e01fSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 24376747b715Smrg -Wc,FLAG 24386747b715Smrg -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 24396747b715Smrg -Wl,FLAG 24406747b715Smrg -Xlinker FLAG pass linker-specific FLAG directly to the linker 24416747b715Smrg -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 244205b261ecSmrg 24434642e01fSmrgAll other options (arguments beginning with \`-') are ignored. 244405b261ecSmrg 24454642e01fSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 24464642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library 24474642e01fSmrgobject files. 244805b261ecSmrg 24494642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 24504642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 24514642e01fSmrgrequired, except when creating a convenience library. 245205b261ecSmrg 24534642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 24544642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 245505b261ecSmrg 24564642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 24574642e01fSmrgis created, otherwise an executable program is created." 245805b261ecSmrg ;; 245905b261ecSmrg 24604642e01fSmrg uninstall) 24614642e01fSmrg $ECHO \ 24624642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 246305b261ecSmrg 24644642e01fSmrgRemove libraries from an installation directory. 246505b261ecSmrg 24664642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 24674642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 24684642e01fSmrgto RM. 246905b261ecSmrg 24704642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted. 24714642e01fSmrgOtherwise, only FILE itself is deleted using RM." 24724642e01fSmrg ;; 247305b261ecSmrg 24744642e01fSmrg *) 24756747b715Smrg func_fatal_help "invalid operation mode \`$opt_mode'" 24764642e01fSmrg ;; 24774642e01fSmrg esac 247805b261ecSmrg 24796747b715Smrg echo 24804642e01fSmrg $ECHO "Try \`$progname --help' for more information about other modes." 24814642e01fSmrg} 248205b261ecSmrg 24836747b715Smrg# Now that we've collected a possible --mode arg, show help if necessary 24846747b715Smrgif $opt_help; then 24856747b715Smrg if test "$opt_help" = :; then 24866747b715Smrg func_mode_help 24876747b715Smrg else 24886747b715Smrg { 24896747b715Smrg func_help noexit 24906747b715Smrg for opt_mode in compile link execute install finish uninstall clean; do 24916747b715Smrg func_mode_help 24926747b715Smrg done 24936747b715Smrg } | sed -n '1p; 2,$s/^Usage:/ or: /p' 24946747b715Smrg { 24956747b715Smrg func_help noexit 24966747b715Smrg for opt_mode in compile link execute install finish uninstall clean; do 24976747b715Smrg echo 24986747b715Smrg func_mode_help 24996747b715Smrg done 25006747b715Smrg } | 25016747b715Smrg sed '1d 25026747b715Smrg /^When reporting/,/^Report/{ 25036747b715Smrg H 25046747b715Smrg d 25056747b715Smrg } 25066747b715Smrg $x 25076747b715Smrg /information about other modes/d 25086747b715Smrg /more detailed .*MODE/d 25096747b715Smrg s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 25106747b715Smrg fi 25116747b715Smrg exit $? 25126747b715Smrgfi 251305b261ecSmrg 251405b261ecSmrg 25154642e01fSmrg# func_mode_execute arg... 25164642e01fSmrgfunc_mode_execute () 25174642e01fSmrg{ 25184642e01fSmrg $opt_debug 25194642e01fSmrg # The first argument is the command name. 25204642e01fSmrg cmd="$nonopt" 25214642e01fSmrg test -z "$cmd" && \ 25224642e01fSmrg func_fatal_help "you must specify a COMMAND" 252305b261ecSmrg 25244642e01fSmrg # Handle -dlopen flags immediately. 25256747b715Smrg for file in $opt_dlopen; do 25264642e01fSmrg test -f "$file" \ 25274642e01fSmrg || func_fatal_help "\`$file' is not a file" 252805b261ecSmrg 25294642e01fSmrg dir= 25304642e01fSmrg case $file in 25314642e01fSmrg *.la) 25326747b715Smrg func_resolve_sysroot "$file" 25336747b715Smrg file=$func_resolve_sysroot_result 25346747b715Smrg 25354642e01fSmrg # Check to see that this really is a libtool archive. 25364642e01fSmrg func_lalib_unsafe_p "$file" \ 25374642e01fSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 253805b261ecSmrg 25394642e01fSmrg # Read the libtool library. 25404642e01fSmrg dlname= 25414642e01fSmrg library_names= 25424642e01fSmrg func_source "$file" 254305b261ecSmrg 25444642e01fSmrg # Skip this library if it cannot be dlopened. 25454642e01fSmrg if test -z "$dlname"; then 25464642e01fSmrg # Warn if it was a shared library. 25474642e01fSmrg test -n "$library_names" && \ 25484642e01fSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 25494642e01fSmrg continue 25504642e01fSmrg fi 255105b261ecSmrg 25524642e01fSmrg func_dirname "$file" "" "." 25534642e01fSmrg dir="$func_dirname_result" 255405b261ecSmrg 25554642e01fSmrg if test -f "$dir/$objdir/$dlname"; then 25566747b715Smrg func_append dir "/$objdir" 25574642e01fSmrg else 25584642e01fSmrg if test ! -f "$dir/$dlname"; then 25594642e01fSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 25604642e01fSmrg fi 25614642e01fSmrg fi 256205b261ecSmrg ;; 256305b261ecSmrg 25644642e01fSmrg *.lo) 25654642e01fSmrg # Just add the directory containing the .lo file. 25664642e01fSmrg func_dirname "$file" "" "." 25674642e01fSmrg dir="$func_dirname_result" 256805b261ecSmrg ;; 256905b261ecSmrg 25704642e01fSmrg *) 25714642e01fSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 257205b261ecSmrg continue 257305b261ecSmrg ;; 25744642e01fSmrg esac 257505b261ecSmrg 25764642e01fSmrg # Get the absolute pathname. 25774642e01fSmrg absdir=`cd "$dir" && pwd` 25784642e01fSmrg test -n "$absdir" && dir="$absdir" 257905b261ecSmrg 25804642e01fSmrg # Now add the directory to shlibpath_var. 25814642e01fSmrg if eval "test -z \"\$$shlibpath_var\""; then 25824642e01fSmrg eval "$shlibpath_var=\"\$dir\"" 25834642e01fSmrg else 25844642e01fSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 25854642e01fSmrg fi 25864642e01fSmrg done 258705b261ecSmrg 25884642e01fSmrg # This variable tells wrapper scripts just to set shlibpath_var 25894642e01fSmrg # rather than running their programs. 25904642e01fSmrg libtool_execute_magic="$magic" 259105b261ecSmrg 25924642e01fSmrg # Check if any of the arguments is a wrapper script. 25934642e01fSmrg args= 25944642e01fSmrg for file 25954642e01fSmrg do 25964642e01fSmrg case $file in 25976747b715Smrg -* | *.la | *.lo ) ;; 25984642e01fSmrg *) 25994642e01fSmrg # Do a test to see if this is really a libtool program. 26004642e01fSmrg if func_ltwrapper_script_p "$file"; then 26014642e01fSmrg func_source "$file" 26024642e01fSmrg # Transform arg to wrapped name. 26034642e01fSmrg file="$progdir/$program" 26044642e01fSmrg elif func_ltwrapper_executable_p "$file"; then 26054642e01fSmrg func_ltwrapper_scriptname "$file" 26064642e01fSmrg func_source "$func_ltwrapper_scriptname_result" 26074642e01fSmrg # Transform arg to wrapped name. 26084642e01fSmrg file="$progdir/$program" 26094642e01fSmrg fi 26104642e01fSmrg ;; 26114642e01fSmrg esac 26124642e01fSmrg # Quote arguments (to preserve shell metacharacters). 26136747b715Smrg func_append_quoted args "$file" 26144642e01fSmrg done 261505b261ecSmrg 26164642e01fSmrg if test "X$opt_dry_run" = Xfalse; then 26174642e01fSmrg if test -n "$shlibpath_var"; then 26184642e01fSmrg # Export the shlibpath_var. 26194642e01fSmrg eval "export $shlibpath_var" 26204642e01fSmrg fi 262105b261ecSmrg 26224642e01fSmrg # Restore saved environment variables 26234642e01fSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 26244642e01fSmrg do 26254642e01fSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 26264642e01fSmrg $lt_var=\$save_$lt_var; export $lt_var 262705b261ecSmrg else 26284642e01fSmrg $lt_unset $lt_var 26294642e01fSmrg fi" 26304642e01fSmrg done 263105b261ecSmrg 26324642e01fSmrg # Now prepare to actually exec the command. 26334642e01fSmrg exec_cmd="\$cmd$args" 26344642e01fSmrg else 26354642e01fSmrg # Display what would be done. 26364642e01fSmrg if test -n "$shlibpath_var"; then 26374642e01fSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 26386747b715Smrg echo "export $shlibpath_var" 26394642e01fSmrg fi 26404642e01fSmrg $ECHO "$cmd$args" 26414642e01fSmrg exit $EXIT_SUCCESS 26424642e01fSmrg fi 26434642e01fSmrg} 264405b261ecSmrg 26456747b715Smrgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 264605b261ecSmrg 264705b261ecSmrg 26484642e01fSmrg# func_mode_finish arg... 26494642e01fSmrgfunc_mode_finish () 26504642e01fSmrg{ 26514642e01fSmrg $opt_debug 26526747b715Smrg libs= 26536747b715Smrg libdirs= 26544642e01fSmrg admincmds= 265505b261ecSmrg 26566747b715Smrg for opt in "$nonopt" ${1+"$@"} 26576747b715Smrg do 26586747b715Smrg if test -d "$opt"; then 26596747b715Smrg func_append libdirs " $opt" 26606747b715Smrg 26616747b715Smrg elif test -f "$opt"; then 26626747b715Smrg if func_lalib_unsafe_p "$opt"; then 26636747b715Smrg func_append libs " $opt" 26646747b715Smrg else 26656747b715Smrg func_warning "\`$opt' is not a valid libtool archive" 26666747b715Smrg fi 26676747b715Smrg 26686747b715Smrg else 26696747b715Smrg func_fatal_error "invalid argument \`$opt'" 26706747b715Smrg fi 26716747b715Smrg done 26726747b715Smrg 26736747b715Smrg if test -n "$libs"; then 26746747b715Smrg if test -n "$lt_sysroot"; then 26756747b715Smrg sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 26766747b715Smrg sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 26776747b715Smrg else 26786747b715Smrg sysroot_cmd= 26796747b715Smrg fi 268005b261ecSmrg 26816747b715Smrg # Remove sysroot references 26826747b715Smrg if $opt_dry_run; then 26836747b715Smrg for lib in $libs; do 26846747b715Smrg echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 26856747b715Smrg done 26866747b715Smrg else 26876747b715Smrg tmpdir=`func_mktempdir` 26886747b715Smrg for lib in $libs; do 26896747b715Smrg sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 26906747b715Smrg > $tmpdir/tmp-la 26916747b715Smrg mv -f $tmpdir/tmp-la $lib 26926747b715Smrg done 26936747b715Smrg ${RM}r "$tmpdir" 26946747b715Smrg fi 26956747b715Smrg fi 26966747b715Smrg 26976747b715Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 26984642e01fSmrg for libdir in $libdirs; do 26994642e01fSmrg if test -n "$finish_cmds"; then 27004642e01fSmrg # Do each command in the finish commands. 27014642e01fSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 27024642e01fSmrg'"$cmd"'"' 270305b261ecSmrg fi 27044642e01fSmrg if test -n "$finish_eval"; then 27054642e01fSmrg # Do the single finish_eval. 27064642e01fSmrg eval cmds=\"$finish_eval\" 27076747b715Smrg $opt_dry_run || eval "$cmds" || func_append admincmds " 27084642e01fSmrg $cmds" 27094642e01fSmrg fi 27104642e01fSmrg done 27114642e01fSmrg fi 271205b261ecSmrg 27134642e01fSmrg # Exit here if they wanted silent mode. 27144642e01fSmrg $opt_silent && exit $EXIT_SUCCESS 271505b261ecSmrg 27166747b715Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 27176747b715Smrg echo "----------------------------------------------------------------------" 27186747b715Smrg echo "Libraries have been installed in:" 27196747b715Smrg for libdir in $libdirs; do 27206747b715Smrg $ECHO " $libdir" 27216747b715Smrg done 27226747b715Smrg echo 27236747b715Smrg echo "If you ever happen to want to link against installed libraries" 27246747b715Smrg echo "in a given directory, LIBDIR, you must either use libtool, and" 27256747b715Smrg echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 27266747b715Smrg echo "flag during linking and do at least one of the following:" 27276747b715Smrg if test -n "$shlibpath_var"; then 27286747b715Smrg echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 27296747b715Smrg echo " during execution" 27306747b715Smrg fi 27316747b715Smrg if test -n "$runpath_var"; then 27326747b715Smrg echo " - add LIBDIR to the \`$runpath_var' environment variable" 27336747b715Smrg echo " during linking" 27346747b715Smrg fi 27356747b715Smrg if test -n "$hardcode_libdir_flag_spec"; then 27366747b715Smrg libdir=LIBDIR 27376747b715Smrg eval flag=\"$hardcode_libdir_flag_spec\" 27384642e01fSmrg 27396747b715Smrg $ECHO " - use the \`$flag' linker flag" 27406747b715Smrg fi 27416747b715Smrg if test -n "$admincmds"; then 27426747b715Smrg $ECHO " - have your system administrator run these commands:$admincmds" 27436747b715Smrg fi 27446747b715Smrg if test -f /etc/ld.so.conf; then 27456747b715Smrg echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 27466747b715Smrg fi 27476747b715Smrg echo 27484642e01fSmrg 27496747b715Smrg echo "See any operating system documentation about shared libraries for" 27506747b715Smrg case $host in 27516747b715Smrg solaris2.[6789]|solaris2.1[0-9]) 27526747b715Smrg echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 27536747b715Smrg echo "pages." 27546747b715Smrg ;; 27556747b715Smrg *) 27566747b715Smrg echo "more information, such as the ld(1) and ld.so(8) manual pages." 27576747b715Smrg ;; 27586747b715Smrg esac 27596747b715Smrg echo "----------------------------------------------------------------------" 27606747b715Smrg fi 27614642e01fSmrg exit $EXIT_SUCCESS 27624642e01fSmrg} 27634642e01fSmrg 27646747b715Smrgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 27654642e01fSmrg 27664642e01fSmrg 27674642e01fSmrg# func_mode_install arg... 27684642e01fSmrgfunc_mode_install () 27694642e01fSmrg{ 27704642e01fSmrg $opt_debug 27714642e01fSmrg # There may be an optional sh(1) argument at the beginning of 27724642e01fSmrg # install_prog (especially on Windows NT). 27734642e01fSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 27744642e01fSmrg # Allow the use of GNU shtool's install command. 27756747b715Smrg case $nonopt in *shtool*) :;; *) false;; esac; then 27764642e01fSmrg # Aesthetically quote it. 27774642e01fSmrg func_quote_for_eval "$nonopt" 27784642e01fSmrg install_prog="$func_quote_for_eval_result " 27794642e01fSmrg arg=$1 27804642e01fSmrg shift 27814642e01fSmrg else 27824642e01fSmrg install_prog= 27834642e01fSmrg arg=$nonopt 27844642e01fSmrg fi 27854642e01fSmrg 27864642e01fSmrg # The real first argument should be the name of the installation program. 27874642e01fSmrg # Aesthetically quote it. 27884642e01fSmrg func_quote_for_eval "$arg" 27896747b715Smrg func_append install_prog "$func_quote_for_eval_result" 27906747b715Smrg install_shared_prog=$install_prog 27916747b715Smrg case " $install_prog " in 27926747b715Smrg *[\\\ /]cp\ *) install_cp=: ;; 27936747b715Smrg *) install_cp=false ;; 27946747b715Smrg esac 27954642e01fSmrg 27964642e01fSmrg # We need to accept at least all the BSD install flags. 27974642e01fSmrg dest= 27984642e01fSmrg files= 27994642e01fSmrg opts= 28004642e01fSmrg prev= 28014642e01fSmrg install_type= 28024642e01fSmrg isdir=no 28034642e01fSmrg stripme= 28046747b715Smrg no_mode=: 28054642e01fSmrg for arg 28064642e01fSmrg do 28076747b715Smrg arg2= 28084642e01fSmrg if test -n "$dest"; then 28096747b715Smrg func_append files " $dest" 28104642e01fSmrg dest=$arg 28114642e01fSmrg continue 28124642e01fSmrg fi 28134642e01fSmrg 28144642e01fSmrg case $arg in 28154642e01fSmrg -d) isdir=yes ;; 28164642e01fSmrg -f) 28176747b715Smrg if $install_cp; then :; else 28186747b715Smrg prev=$arg 28196747b715Smrg fi 28204642e01fSmrg ;; 28214642e01fSmrg -g | -m | -o) 28224642e01fSmrg prev=$arg 28234642e01fSmrg ;; 28244642e01fSmrg -s) 28254642e01fSmrg stripme=" -s" 28264642e01fSmrg continue 28274642e01fSmrg ;; 28284642e01fSmrg -*) 28294642e01fSmrg ;; 28304642e01fSmrg *) 28314642e01fSmrg # If the previous option needed an argument, then skip it. 28324642e01fSmrg if test -n "$prev"; then 28336747b715Smrg if test "x$prev" = x-m && test -n "$install_override_mode"; then 28346747b715Smrg arg2=$install_override_mode 28356747b715Smrg no_mode=false 28366747b715Smrg fi 283705b261ecSmrg prev= 283805b261ecSmrg else 28394642e01fSmrg dest=$arg 28404642e01fSmrg continue 284105b261ecSmrg fi 284205b261ecSmrg ;; 28434642e01fSmrg esac 284405b261ecSmrg 28454642e01fSmrg # Aesthetically quote the argument. 28464642e01fSmrg func_quote_for_eval "$arg" 28476747b715Smrg func_append install_prog " $func_quote_for_eval_result" 28486747b715Smrg if test -n "$arg2"; then 28496747b715Smrg func_quote_for_eval "$arg2" 28506747b715Smrg fi 28516747b715Smrg func_append install_shared_prog " $func_quote_for_eval_result" 28524642e01fSmrg done 285305b261ecSmrg 28544642e01fSmrg test -z "$install_prog" && \ 28554642e01fSmrg func_fatal_help "you must specify an install program" 285605b261ecSmrg 28574642e01fSmrg test -n "$prev" && \ 28584642e01fSmrg func_fatal_help "the \`$prev' option requires an argument" 285905b261ecSmrg 28606747b715Smrg if test -n "$install_override_mode" && $no_mode; then 28616747b715Smrg if $install_cp; then :; else 28626747b715Smrg func_quote_for_eval "$install_override_mode" 28636747b715Smrg func_append install_shared_prog " -m $func_quote_for_eval_result" 28646747b715Smrg fi 28656747b715Smrg fi 28666747b715Smrg 28674642e01fSmrg if test -z "$files"; then 28684642e01fSmrg if test -z "$dest"; then 28694642e01fSmrg func_fatal_help "no file or destination specified" 28704642e01fSmrg else 28714642e01fSmrg func_fatal_help "you must specify a destination" 28724642e01fSmrg fi 287305b261ecSmrg fi 287405b261ecSmrg 28754642e01fSmrg # Strip any trailing slash from the destination. 28764642e01fSmrg func_stripname '' '/' "$dest" 28774642e01fSmrg dest=$func_stripname_result 287805b261ecSmrg 28794642e01fSmrg # Check to see that the destination is a directory. 28804642e01fSmrg test -d "$dest" && isdir=yes 28814642e01fSmrg if test "$isdir" = yes; then 28824642e01fSmrg destdir="$dest" 28834642e01fSmrg destname= 288405b261ecSmrg else 28854642e01fSmrg func_dirname_and_basename "$dest" "" "." 28864642e01fSmrg destdir="$func_dirname_result" 28874642e01fSmrg destname="$func_basename_result" 288805b261ecSmrg 28894642e01fSmrg # Not a directory, so check to see that there is only one file specified. 28904642e01fSmrg set dummy $files; shift 28914642e01fSmrg test "$#" -gt 1 && \ 28924642e01fSmrg func_fatal_help "\`$dest' is not a directory" 289305b261ecSmrg fi 28944642e01fSmrg case $destdir in 28954642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 289605b261ecSmrg *) 28974642e01fSmrg for file in $files; do 28984642e01fSmrg case $file in 28994642e01fSmrg *.lo) ;; 29004642e01fSmrg *) 29014642e01fSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 29024642e01fSmrg ;; 29034642e01fSmrg esac 29044642e01fSmrg done 290505b261ecSmrg ;; 290605b261ecSmrg esac 290705b261ecSmrg 29084642e01fSmrg # This variable tells wrapper scripts just to set variables rather 29094642e01fSmrg # than running their programs. 29104642e01fSmrg libtool_install_magic="$magic" 291105b261ecSmrg 29124642e01fSmrg staticlibs= 29134642e01fSmrg future_libdirs= 29144642e01fSmrg current_libdirs= 29154642e01fSmrg for file in $files; do 291605b261ecSmrg 29174642e01fSmrg # Do each installation. 29184642e01fSmrg case $file in 29194642e01fSmrg *.$libext) 29204642e01fSmrg # Do the static libraries later. 29216747b715Smrg func_append staticlibs " $file" 29224642e01fSmrg ;; 29234642e01fSmrg 29244642e01fSmrg *.la) 29256747b715Smrg func_resolve_sysroot "$file" 29266747b715Smrg file=$func_resolve_sysroot_result 29276747b715Smrg 29284642e01fSmrg # Check to see that this really is a libtool archive. 29294642e01fSmrg func_lalib_unsafe_p "$file" \ 29304642e01fSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 29314642e01fSmrg 29324642e01fSmrg library_names= 29334642e01fSmrg old_library= 29344642e01fSmrg relink_command= 29354642e01fSmrg func_source "$file" 29364642e01fSmrg 29374642e01fSmrg # Add the libdir to current_libdirs if it is the destination. 29384642e01fSmrg if test "X$destdir" = "X$libdir"; then 29394642e01fSmrg case "$current_libdirs " in 29404642e01fSmrg *" $libdir "*) ;; 29416747b715Smrg *) func_append current_libdirs " $libdir" ;; 294205b261ecSmrg esac 29434642e01fSmrg else 29444642e01fSmrg # Note the libdir as a future libdir. 29454642e01fSmrg case "$future_libdirs " in 29464642e01fSmrg *" $libdir "*) ;; 29476747b715Smrg *) func_append future_libdirs " $libdir" ;; 29484642e01fSmrg esac 29494642e01fSmrg fi 295005b261ecSmrg 29514642e01fSmrg func_dirname "$file" "/" "" 29524642e01fSmrg dir="$func_dirname_result" 29536747b715Smrg func_append dir "$objdir" 29544642e01fSmrg 29554642e01fSmrg if test -n "$relink_command"; then 29564642e01fSmrg # Determine the prefix the user has applied to our future dir. 29576747b715Smrg inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 29584642e01fSmrg 29594642e01fSmrg # Don't allow the user to place us outside of our expected 29604642e01fSmrg # location b/c this prevents finding dependent libraries that 29614642e01fSmrg # are installed to the same prefix. 29624642e01fSmrg # At present, this check doesn't affect windows .dll's that 29634642e01fSmrg # are installed into $libdir/../bin (currently, that works fine) 29644642e01fSmrg # but it's something to keep an eye on. 29654642e01fSmrg test "$inst_prefix_dir" = "$destdir" && \ 29664642e01fSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 29674642e01fSmrg 29684642e01fSmrg if test -n "$inst_prefix_dir"; then 29694642e01fSmrg # Stick the inst_prefix_dir data into the link command. 29706747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 29714642e01fSmrg else 29726747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 29734642e01fSmrg fi 29744642e01fSmrg 29754642e01fSmrg func_warning "relinking \`$file'" 29764642e01fSmrg func_show_eval "$relink_command" \ 29774642e01fSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 29784642e01fSmrg fi 29794642e01fSmrg 29804642e01fSmrg # See the names of the shared library. 29814642e01fSmrg set dummy $library_names; shift 29824642e01fSmrg if test -n "$1"; then 29834642e01fSmrg realname="$1" 29844642e01fSmrg shift 29854642e01fSmrg 29864642e01fSmrg srcname="$realname" 29874642e01fSmrg test -n "$relink_command" && srcname="$realname"T 29884642e01fSmrg 29894642e01fSmrg # Install the shared library and build the symlinks. 29906747b715Smrg func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 29914642e01fSmrg 'exit $?' 29924642e01fSmrg tstripme="$stripme" 29934642e01fSmrg case $host_os in 29944642e01fSmrg cygwin* | mingw* | pw32* | cegcc*) 29954642e01fSmrg case $realname in 29964642e01fSmrg *.dll.a) 29974642e01fSmrg tstripme="" 29984642e01fSmrg ;; 29994642e01fSmrg esac 300005b261ecSmrg ;; 300105b261ecSmrg esac 30024642e01fSmrg if test -n "$tstripme" && test -n "$striplib"; then 30034642e01fSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 300405b261ecSmrg fi 30054642e01fSmrg 30064642e01fSmrg if test "$#" -gt 0; then 30074642e01fSmrg # Delete the old symlinks, and create new ones. 30084642e01fSmrg # Try `ln -sf' first, because the `ln' binary might depend on 30094642e01fSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 30104642e01fSmrg # so we also need to try rm && ln -s. 30114642e01fSmrg for linkname 30124642e01fSmrg do 30134642e01fSmrg test "$linkname" != "$realname" \ 30144642e01fSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 301505b261ecSmrg done 301605b261ecSmrg fi 301705b261ecSmrg 30184642e01fSmrg # Do each command in the postinstall commands. 30194642e01fSmrg lib="$destdir/$realname" 30204642e01fSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 302105b261ecSmrg fi 302205b261ecSmrg 30234642e01fSmrg # Install the pseudo-library for information purposes. 30244642e01fSmrg func_basename "$file" 30254642e01fSmrg name="$func_basename_result" 30264642e01fSmrg instname="$dir/$name"i 30274642e01fSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 302805b261ecSmrg 30294642e01fSmrg # Maybe install the static library, too. 30306747b715Smrg test -n "$old_library" && func_append staticlibs " $dir/$old_library" 30314642e01fSmrg ;; 303205b261ecSmrg 30334642e01fSmrg *.lo) 30344642e01fSmrg # Install (i.e. copy) a libtool object. 303505b261ecSmrg 30364642e01fSmrg # Figure out destination file name, if it wasn't already specified. 30374642e01fSmrg if test -n "$destname"; then 30384642e01fSmrg destfile="$destdir/$destname" 30394642e01fSmrg else 30404642e01fSmrg func_basename "$file" 30414642e01fSmrg destfile="$func_basename_result" 30424642e01fSmrg destfile="$destdir/$destfile" 30434642e01fSmrg fi 30444642e01fSmrg 30454642e01fSmrg # Deduce the name of the destination old-style object file. 30464642e01fSmrg case $destfile in 30474642e01fSmrg *.lo) 30484642e01fSmrg func_lo2o "$destfile" 30494642e01fSmrg staticdest=$func_lo2o_result 30504642e01fSmrg ;; 30514642e01fSmrg *.$objext) 30524642e01fSmrg staticdest="$destfile" 30534642e01fSmrg destfile= 30544642e01fSmrg ;; 30554642e01fSmrg *) 30564642e01fSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 30574642e01fSmrg ;; 305805b261ecSmrg esac 305905b261ecSmrg 30604642e01fSmrg # Install the libtool object if requested. 30614642e01fSmrg test -n "$destfile" && \ 30624642e01fSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 30634642e01fSmrg 30644642e01fSmrg # Install the old object if enabled. 30654642e01fSmrg if test "$build_old_libs" = yes; then 30664642e01fSmrg # Deduce the name of the old-style object file. 30674642e01fSmrg func_lo2o "$file" 30684642e01fSmrg staticobj=$func_lo2o_result 30694642e01fSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 307005b261ecSmrg fi 30714642e01fSmrg exit $EXIT_SUCCESS 30724642e01fSmrg ;; 307305b261ecSmrg 30744642e01fSmrg *) 30754642e01fSmrg # Figure out destination file name, if it wasn't already specified. 30764642e01fSmrg if test -n "$destname"; then 30774642e01fSmrg destfile="$destdir/$destname" 30784642e01fSmrg else 30794642e01fSmrg func_basename "$file" 30804642e01fSmrg destfile="$func_basename_result" 30814642e01fSmrg destfile="$destdir/$destfile" 30824642e01fSmrg fi 308305b261ecSmrg 30844642e01fSmrg # If the file is missing, and there is a .exe on the end, strip it 30854642e01fSmrg # because it is most likely a libtool script we actually want to 30864642e01fSmrg # install 30874642e01fSmrg stripped_ext="" 30884642e01fSmrg case $file in 30894642e01fSmrg *.exe) 30904642e01fSmrg if test ! -f "$file"; then 30914642e01fSmrg func_stripname '' '.exe' "$file" 30924642e01fSmrg file=$func_stripname_result 30934642e01fSmrg stripped_ext=".exe" 30944642e01fSmrg fi 30954642e01fSmrg ;; 30964642e01fSmrg esac 309705b261ecSmrg 30984642e01fSmrg # Do a test to see if this is really a libtool program. 30994642e01fSmrg case $host in 31004642e01fSmrg *cygwin* | *mingw*) 31014642e01fSmrg if func_ltwrapper_executable_p "$file"; then 31024642e01fSmrg func_ltwrapper_scriptname "$file" 31034642e01fSmrg wrapper=$func_ltwrapper_scriptname_result 31044642e01fSmrg else 31054642e01fSmrg func_stripname '' '.exe' "$file" 31064642e01fSmrg wrapper=$func_stripname_result 31074642e01fSmrg fi 31084642e01fSmrg ;; 31094642e01fSmrg *) 31104642e01fSmrg wrapper=$file 31114642e01fSmrg ;; 31124642e01fSmrg esac 31134642e01fSmrg if func_ltwrapper_script_p "$wrapper"; then 31144642e01fSmrg notinst_deplibs= 31154642e01fSmrg relink_command= 311605b261ecSmrg 31174642e01fSmrg func_source "$wrapper" 31184642e01fSmrg 31194642e01fSmrg # Check the variables that should have been set. 31204642e01fSmrg test -z "$generated_by_libtool_version" && \ 31214642e01fSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 31224642e01fSmrg 31234642e01fSmrg finalize=yes 31244642e01fSmrg for lib in $notinst_deplibs; do 31254642e01fSmrg # Check to see that each library is installed. 31264642e01fSmrg libdir= 31274642e01fSmrg if test -f "$lib"; then 31284642e01fSmrg func_source "$lib" 31294642e01fSmrg fi 31306747b715Smrg libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 31314642e01fSmrg if test -n "$libdir" && test ! -f "$libfile"; then 31324642e01fSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 31334642e01fSmrg finalize=no 31344642e01fSmrg fi 31354642e01fSmrg done 31364642e01fSmrg 31374642e01fSmrg relink_command= 31384642e01fSmrg func_source "$wrapper" 31394642e01fSmrg 31404642e01fSmrg outputname= 31414642e01fSmrg if test "$fast_install" = no && test -n "$relink_command"; then 31424642e01fSmrg $opt_dry_run || { 31434642e01fSmrg if test "$finalize" = yes; then 31444642e01fSmrg tmpdir=`func_mktempdir` 31454642e01fSmrg func_basename "$file$stripped_ext" 31464642e01fSmrg file="$func_basename_result" 31474642e01fSmrg outputname="$tmpdir/$file" 31484642e01fSmrg # Replace the output file specification. 31496747b715Smrg relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 31504642e01fSmrg 31514642e01fSmrg $opt_silent || { 31524642e01fSmrg func_quote_for_expand "$relink_command" 31534642e01fSmrg eval "func_echo $func_quote_for_expand_result" 31544642e01fSmrg } 31554642e01fSmrg if eval "$relink_command"; then : 31564642e01fSmrg else 31574642e01fSmrg func_error "error: relink \`$file' with the above command before installing it" 31584642e01fSmrg $opt_dry_run || ${RM}r "$tmpdir" 31594642e01fSmrg continue 31604642e01fSmrg fi 31614642e01fSmrg file="$outputname" 31624642e01fSmrg else 31634642e01fSmrg func_warning "cannot relink \`$file'" 31644642e01fSmrg fi 31654642e01fSmrg } 316605b261ecSmrg else 31674642e01fSmrg # Install the binary that we compiled earlier. 31686747b715Smrg file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 316905b261ecSmrg fi 31704642e01fSmrg fi 317105b261ecSmrg 31724642e01fSmrg # remove .exe since cygwin /usr/bin/install will append another 31734642e01fSmrg # one anyway 31744642e01fSmrg case $install_prog,$host in 31754642e01fSmrg */usr/bin/install*,*cygwin*) 31764642e01fSmrg case $file:$destfile in 31774642e01fSmrg *.exe:*.exe) 31784642e01fSmrg # this is ok 31794642e01fSmrg ;; 31804642e01fSmrg *.exe:*) 31814642e01fSmrg destfile=$destfile.exe 31824642e01fSmrg ;; 31834642e01fSmrg *:*.exe) 31844642e01fSmrg func_stripname '' '.exe' "$destfile" 31854642e01fSmrg destfile=$func_stripname_result 31864642e01fSmrg ;; 31874642e01fSmrg esac 318805b261ecSmrg ;; 318905b261ecSmrg esac 31904642e01fSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 31914642e01fSmrg $opt_dry_run || if test -n "$outputname"; then 31924642e01fSmrg ${RM}r "$tmpdir" 31934642e01fSmrg fi 31944642e01fSmrg ;; 31954642e01fSmrg esac 31964642e01fSmrg done 319705b261ecSmrg 31984642e01fSmrg for file in $staticlibs; do 31994642e01fSmrg func_basename "$file" 32004642e01fSmrg name="$func_basename_result" 32014642e01fSmrg 32024642e01fSmrg # Set up the ranlib parameters. 32034642e01fSmrg oldlib="$destdir/$name" 32044642e01fSmrg 32054642e01fSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 32064642e01fSmrg 32074642e01fSmrg if test -n "$stripme" && test -n "$old_striplib"; then 32084642e01fSmrg func_show_eval "$old_striplib $oldlib" 'exit $?' 32094642e01fSmrg fi 32104642e01fSmrg 32114642e01fSmrg # Do each command in the postinstall commands. 32124642e01fSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 32134642e01fSmrg done 32144642e01fSmrg 32154642e01fSmrg test -n "$future_libdirs" && \ 32164642e01fSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 32174642e01fSmrg 32184642e01fSmrg if test -n "$current_libdirs"; then 32194642e01fSmrg # Maybe just do a dry run. 32204642e01fSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 32214642e01fSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 32224642e01fSmrg else 32234642e01fSmrg exit $EXIT_SUCCESS 32244642e01fSmrg fi 32254642e01fSmrg} 32264642e01fSmrg 32276747b715Smrgtest "$opt_mode" = install && func_mode_install ${1+"$@"} 32284642e01fSmrg 32294642e01fSmrg 32304642e01fSmrg# func_generate_dlsyms outputname originator pic_p 32314642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 32324642e01fSmrg# a dlpreopen symbol table. 32334642e01fSmrgfunc_generate_dlsyms () 32344642e01fSmrg{ 32354642e01fSmrg $opt_debug 32364642e01fSmrg my_outputname="$1" 32374642e01fSmrg my_originator="$2" 32384642e01fSmrg my_pic_p="${3-no}" 32394642e01fSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 32404642e01fSmrg my_dlsyms= 32414642e01fSmrg 32424642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 32434642e01fSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 32444642e01fSmrg my_dlsyms="${my_outputname}S.c" 32454642e01fSmrg else 32464642e01fSmrg func_error "not configured to extract global symbols from dlpreopened files" 32474642e01fSmrg fi 32484642e01fSmrg fi 32494642e01fSmrg 32504642e01fSmrg if test -n "$my_dlsyms"; then 32514642e01fSmrg case $my_dlsyms in 32524642e01fSmrg "") ;; 32534642e01fSmrg *.c) 32544642e01fSmrg # Discover the nlist of each of the dlfiles. 32554642e01fSmrg nlist="$output_objdir/${my_outputname}.nm" 32564642e01fSmrg 32574642e01fSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 32584642e01fSmrg 32594642e01fSmrg # Parse the name list into a source file. 32604642e01fSmrg func_verbose "creating $output_objdir/$my_dlsyms" 32614642e01fSmrg 32624642e01fSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 32634642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 32644642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 32654642e01fSmrg 32664642e01fSmrg#ifdef __cplusplus 32674642e01fSmrgextern \"C\" { 32684642e01fSmrg#endif 32694642e01fSmrg 32706747b715Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 32716747b715Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 32726747b715Smrg#endif 32736747b715Smrg 32746747b715Smrg/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 32756747b715Smrg#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 32766747b715Smrg/* DATA imports from DLLs on WIN32 con't be const, because runtime 32776747b715Smrg relocations are performed -- see ld's documentation on pseudo-relocs. */ 32786747b715Smrg# define LT_DLSYM_CONST 32796747b715Smrg#elif defined(__osf__) 32806747b715Smrg/* This system does not cope well with relocations in const data. */ 32816747b715Smrg# define LT_DLSYM_CONST 32826747b715Smrg#else 32836747b715Smrg# define LT_DLSYM_CONST const 32846747b715Smrg#endif 32856747b715Smrg 32864642e01fSmrg/* External symbol declarations for the compiler. */\ 32874642e01fSmrg" 32884642e01fSmrg 32894642e01fSmrg if test "$dlself" = yes; then 32904642e01fSmrg func_verbose "generating symbol list for \`$output'" 32914642e01fSmrg 32924642e01fSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 32934642e01fSmrg 32944642e01fSmrg # Add our own program objects to the symbol list. 32956747b715Smrg progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 32964642e01fSmrg for progfile in $progfiles; do 32976747b715Smrg func_to_tool_file "$progfile" func_convert_file_msys_to_w32 32986747b715Smrg func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 32996747b715Smrg $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 33004642e01fSmrg done 33014642e01fSmrg 33024642e01fSmrg if test -n "$exclude_expsyms"; then 33034642e01fSmrg $opt_dry_run || { 33044642e01fSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 33054642e01fSmrg eval '$MV "$nlist"T "$nlist"' 33064642e01fSmrg } 330705b261ecSmrg fi 33084642e01fSmrg 33094642e01fSmrg if test -n "$export_symbols_regex"; then 33104642e01fSmrg $opt_dry_run || { 33114642e01fSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 33124642e01fSmrg eval '$MV "$nlist"T "$nlist"' 33134642e01fSmrg } 33144642e01fSmrg fi 33154642e01fSmrg 33164642e01fSmrg # Prepare the list of exported symbols 33174642e01fSmrg if test -z "$export_symbols"; then 33184642e01fSmrg export_symbols="$output_objdir/$outputname.exp" 33194642e01fSmrg $opt_dry_run || { 33204642e01fSmrg $RM $export_symbols 33214642e01fSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 33224642e01fSmrg case $host in 33234642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 33244642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33254642e01fSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 33264642e01fSmrg ;; 33274642e01fSmrg esac 33284642e01fSmrg } 332905b261ecSmrg else 33304642e01fSmrg $opt_dry_run || { 33314642e01fSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 33324642e01fSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 33334642e01fSmrg eval '$MV "$nlist"T "$nlist"' 33344642e01fSmrg case $host in 33356747b715Smrg *cygwin* | *mingw* | *cegcc* ) 33364642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33374642e01fSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 33384642e01fSmrg ;; 33394642e01fSmrg esac 33404642e01fSmrg } 334105b261ecSmrg fi 33424642e01fSmrg fi 334305b261ecSmrg 33444642e01fSmrg for dlprefile in $dlprefiles; do 33454642e01fSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 33464642e01fSmrg func_basename "$dlprefile" 33474642e01fSmrg name="$func_basename_result" 33486747b715Smrg case $host in 33496747b715Smrg *cygwin* | *mingw* | *cegcc* ) 33506747b715Smrg # if an import library, we need to obtain dlname 33516747b715Smrg if func_win32_import_lib_p "$dlprefile"; then 33526747b715Smrg func_tr_sh "$dlprefile" 33536747b715Smrg eval "curr_lafile=\$libfile_$func_tr_sh_result" 33546747b715Smrg dlprefile_dlbasename="" 33556747b715Smrg if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 33566747b715Smrg # Use subshell, to avoid clobbering current variable values 33576747b715Smrg dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 33586747b715Smrg if test -n "$dlprefile_dlname" ; then 33596747b715Smrg func_basename "$dlprefile_dlname" 33606747b715Smrg dlprefile_dlbasename="$func_basename_result" 33616747b715Smrg else 33626747b715Smrg # no lafile. user explicitly requested -dlpreopen <import library>. 33636747b715Smrg $sharedlib_from_linklib_cmd "$dlprefile" 33646747b715Smrg dlprefile_dlbasename=$sharedlib_from_linklib_result 33656747b715Smrg fi 33666747b715Smrg fi 33676747b715Smrg $opt_dry_run || { 33686747b715Smrg if test -n "$dlprefile_dlbasename" ; then 33696747b715Smrg eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 33706747b715Smrg else 33716747b715Smrg func_warning "Could not compute DLL name from $name" 33726747b715Smrg eval '$ECHO ": $name " >> "$nlist"' 33736747b715Smrg fi 33746747b715Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33756747b715Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 33766747b715Smrg $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 33776747b715Smrg } 33786747b715Smrg else # not an import lib 33796747b715Smrg $opt_dry_run || { 33806747b715Smrg eval '$ECHO ": $name " >> "$nlist"' 33816747b715Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33826747b715Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 33836747b715Smrg } 33846747b715Smrg fi 33856747b715Smrg ;; 33866747b715Smrg *) 33876747b715Smrg $opt_dry_run || { 33886747b715Smrg eval '$ECHO ": $name " >> "$nlist"' 33896747b715Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33906747b715Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 33916747b715Smrg } 33926747b715Smrg ;; 33936747b715Smrg esac 33944642e01fSmrg done 33954642e01fSmrg 33964642e01fSmrg $opt_dry_run || { 33974642e01fSmrg # Make sure we have at least an empty file. 33984642e01fSmrg test -f "$nlist" || : > "$nlist" 33994642e01fSmrg 34004642e01fSmrg if test -n "$exclude_expsyms"; then 34014642e01fSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 34024642e01fSmrg $MV "$nlist"T "$nlist" 340305b261ecSmrg fi 34044642e01fSmrg 34054642e01fSmrg # Try sorting and uniquifying the output. 34064642e01fSmrg if $GREP -v "^: " < "$nlist" | 34074642e01fSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 34084642e01fSmrg sort -k 3 34094642e01fSmrg else 34104642e01fSmrg sort +2 34114642e01fSmrg fi | 34124642e01fSmrg uniq > "$nlist"S; then 34134642e01fSmrg : 341405b261ecSmrg else 34154642e01fSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 341605b261ecSmrg fi 341705b261ecSmrg 34184642e01fSmrg if test -f "$nlist"S; then 34194642e01fSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 342005b261ecSmrg else 34216747b715Smrg echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 342205b261ecSmrg fi 342305b261ecSmrg 34246747b715Smrg echo >> "$output_objdir/$my_dlsyms" "\ 342505b261ecSmrg 34264642e01fSmrg/* The mapping between symbol names and symbols. */ 34274642e01fSmrgtypedef struct { 34284642e01fSmrg const char *name; 34294642e01fSmrg void *address; 34304642e01fSmrg} lt_dlsymlist; 34316747b715Smrgextern LT_DLSYM_CONST lt_dlsymlist 34324642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 34336747b715SmrgLT_DLSYM_CONST lt_dlsymlist 34344642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 34354642e01fSmrg{\ 34364642e01fSmrg { \"$my_originator\", (void *) 0 }," 343705b261ecSmrg 34384642e01fSmrg case $need_lib_prefix in 34394642e01fSmrg no) 34404642e01fSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 34414642e01fSmrg ;; 34424642e01fSmrg *) 34434642e01fSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 34444642e01fSmrg ;; 34454642e01fSmrg esac 34466747b715Smrg echo >> "$output_objdir/$my_dlsyms" "\ 34474642e01fSmrg {0, (void *) 0} 34484642e01fSmrg}; 344905b261ecSmrg 34504642e01fSmrg/* This works around a problem in FreeBSD linker */ 34514642e01fSmrg#ifdef FREEBSD_WORKAROUND 34524642e01fSmrgstatic const void *lt_preloaded_setup() { 34534642e01fSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 34544642e01fSmrg} 34554642e01fSmrg#endif 34564642e01fSmrg 34574642e01fSmrg#ifdef __cplusplus 34584642e01fSmrg} 34594642e01fSmrg#endif\ 34604642e01fSmrg" 34614642e01fSmrg } # !$opt_dry_run 34624642e01fSmrg 34634642e01fSmrg pic_flag_for_symtable= 34644642e01fSmrg case "$compile_command " in 34654642e01fSmrg *" -static "*) ;; 34664642e01fSmrg *) 34674642e01fSmrg case $host in 34684642e01fSmrg # compiling the symbol table file with pic_flag works around 34694642e01fSmrg # a FreeBSD bug that causes programs to crash when -lm is 34704642e01fSmrg # linked before any other PIC object. But we must not use 34714642e01fSmrg # pic_flag when linking with -static. The problem exists in 34724642e01fSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 34734642e01fSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 34744642e01fSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 34754642e01fSmrg *-*-hpux*) 34764642e01fSmrg pic_flag_for_symtable=" $pic_flag" ;; 34774642e01fSmrg *) 34784642e01fSmrg if test "X$my_pic_p" != Xno; then 34794642e01fSmrg pic_flag_for_symtable=" $pic_flag" 348005b261ecSmrg fi 34814642e01fSmrg ;; 34824642e01fSmrg esac 34834642e01fSmrg ;; 34844642e01fSmrg esac 34854642e01fSmrg symtab_cflags= 34864642e01fSmrg for arg in $LTCFLAGS; do 34874642e01fSmrg case $arg in 34884642e01fSmrg -pie | -fpie | -fPIE) ;; 34896747b715Smrg *) func_append symtab_cflags " $arg" ;; 34904642e01fSmrg esac 34914642e01fSmrg done 349205b261ecSmrg 34934642e01fSmrg # Now compile the dynamic symbol file. 34944642e01fSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 349505b261ecSmrg 34964642e01fSmrg # Clean up the generated files. 34974642e01fSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 349805b261ecSmrg 34994642e01fSmrg # Transform the symbol file into the correct name. 35004642e01fSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 35014642e01fSmrg case $host in 35024642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 35034642e01fSmrg if test -f "$output_objdir/$my_outputname.def"; then 35046747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 35056747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 35064642e01fSmrg else 35076747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35086747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 350905b261ecSmrg fi 35104642e01fSmrg ;; 35114642e01fSmrg *) 35126747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35136747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35144642e01fSmrg ;; 35154642e01fSmrg esac 35164642e01fSmrg ;; 35174642e01fSmrg *) 35184642e01fSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 35194642e01fSmrg ;; 35204642e01fSmrg esac 35214642e01fSmrg else 35224642e01fSmrg # We keep going just in case the user didn't refer to 35234642e01fSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 35244642e01fSmrg # really was required. 352505b261ecSmrg 35264642e01fSmrg # Nullify the symbol file. 35276747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 35286747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 35294642e01fSmrg fi 35304642e01fSmrg} 353105b261ecSmrg 35324642e01fSmrg# func_win32_libid arg 35334642e01fSmrg# return the library type of file 'arg' 35344642e01fSmrg# 35354642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs 35364642e01fSmrg# Has to be a shell function in order to 'eat' the argument 35374642e01fSmrg# that is supplied when $file_magic_command is called. 35386747b715Smrg# Despite the name, also deal with 64 bit binaries. 35394642e01fSmrgfunc_win32_libid () 35404642e01fSmrg{ 35414642e01fSmrg $opt_debug 35424642e01fSmrg win32_libid_type="unknown" 35434642e01fSmrg win32_fileres=`file -L $1 2>/dev/null` 35444642e01fSmrg case $win32_fileres in 35454642e01fSmrg *ar\ archive\ import\ library*) # definitely import 35464642e01fSmrg win32_libid_type="x86 archive import" 35474642e01fSmrg ;; 35484642e01fSmrg *ar\ archive*) # could be an import, or static 35496747b715Smrg # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 35504642e01fSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 35516747b715Smrg $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 35526747b715Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 35536747b715Smrg win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 35544642e01fSmrg $SED -n -e ' 35554642e01fSmrg 1,100{ 35564642e01fSmrg / I /{ 35574642e01fSmrg s,.*,import, 35584642e01fSmrg p 35594642e01fSmrg q 35604642e01fSmrg } 35614642e01fSmrg }'` 35624642e01fSmrg case $win32_nmres in 35634642e01fSmrg import*) win32_libid_type="x86 archive import";; 35644642e01fSmrg *) win32_libid_type="x86 archive static";; 35654642e01fSmrg esac 35664642e01fSmrg fi 35674642e01fSmrg ;; 35684642e01fSmrg *DLL*) 35694642e01fSmrg win32_libid_type="x86 DLL" 35704642e01fSmrg ;; 35714642e01fSmrg *executable*) # but shell scripts are "executable" too... 35724642e01fSmrg case $win32_fileres in 35734642e01fSmrg *MS\ Windows\ PE\ Intel*) 35744642e01fSmrg win32_libid_type="x86 DLL" 35754642e01fSmrg ;; 35764642e01fSmrg esac 35774642e01fSmrg ;; 35784642e01fSmrg esac 35794642e01fSmrg $ECHO "$win32_libid_type" 35804642e01fSmrg} 358105b261ecSmrg 35826747b715Smrg# func_cygming_dll_for_implib ARG 35836747b715Smrg# 35846747b715Smrg# Platform-specific function to extract the 35856747b715Smrg# name of the DLL associated with the specified 35866747b715Smrg# import library ARG. 35876747b715Smrg# Invoked by eval'ing the libtool variable 35886747b715Smrg# $sharedlib_from_linklib_cmd 35896747b715Smrg# Result is available in the variable 35906747b715Smrg# $sharedlib_from_linklib_result 35916747b715Smrgfunc_cygming_dll_for_implib () 35926747b715Smrg{ 35936747b715Smrg $opt_debug 35946747b715Smrg sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 35956747b715Smrg} 35966747b715Smrg 35976747b715Smrg# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 35986747b715Smrg# 35996747b715Smrg# The is the core of a fallback implementation of a 36006747b715Smrg# platform-specific function to extract the name of the 36016747b715Smrg# DLL associated with the specified import library LIBNAME. 36026747b715Smrg# 36036747b715Smrg# SECTION_NAME is either .idata$6 or .idata$7, depending 36046747b715Smrg# on the platform and compiler that created the implib. 36056747b715Smrg# 36066747b715Smrg# Echos the name of the DLL associated with the 36076747b715Smrg# specified import library. 36086747b715Smrgfunc_cygming_dll_for_implib_fallback_core () 36096747b715Smrg{ 36106747b715Smrg $opt_debug 36116747b715Smrg match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 36126747b715Smrg $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 36136747b715Smrg $SED '/^Contents of section '"$match_literal"':/{ 36146747b715Smrg # Place marker at beginning of archive member dllname section 36156747b715Smrg s/.*/====MARK====/ 36166747b715Smrg p 36176747b715Smrg d 36186747b715Smrg } 36196747b715Smrg # These lines can sometimes be longer than 43 characters, but 36206747b715Smrg # are always uninteresting 36216747b715Smrg /:[ ]*file format pe[i]\{,1\}-/d 36226747b715Smrg /^In archive [^:]*:/d 36236747b715Smrg # Ensure marker is printed 36246747b715Smrg /^====MARK====/p 36256747b715Smrg # Remove all lines with less than 43 characters 36266747b715Smrg /^.\{43\}/!d 36276747b715Smrg # From remaining lines, remove first 43 characters 36286747b715Smrg s/^.\{43\}//' | 36296747b715Smrg $SED -n ' 36306747b715Smrg # Join marker and all lines until next marker into a single line 36316747b715Smrg /^====MARK====/ b para 36326747b715Smrg H 36336747b715Smrg $ b para 36346747b715Smrg b 36356747b715Smrg :para 36366747b715Smrg x 36376747b715Smrg s/\n//g 36386747b715Smrg # Remove the marker 36396747b715Smrg s/^====MARK====// 36406747b715Smrg # Remove trailing dots and whitespace 36416747b715Smrg s/[\. \t]*$// 36426747b715Smrg # Print 36436747b715Smrg /./p' | 36446747b715Smrg # we now have a list, one entry per line, of the stringified 36456747b715Smrg # contents of the appropriate section of all members of the 36466747b715Smrg # archive which possess that section. Heuristic: eliminate 36476747b715Smrg # all those which have a first or second character that is 36486747b715Smrg # a '.' (that is, objdump's representation of an unprintable 36496747b715Smrg # character.) This should work for all archives with less than 36506747b715Smrg # 0x302f exports -- but will fail for DLLs whose name actually 36516747b715Smrg # begins with a literal '.' or a single character followed by 36526747b715Smrg # a '.'. 36536747b715Smrg # 36546747b715Smrg # Of those that remain, print the first one. 36556747b715Smrg $SED -e '/^\./d;/^.\./d;q' 36566747b715Smrg} 36576747b715Smrg 36586747b715Smrg# func_cygming_gnu_implib_p ARG 36596747b715Smrg# This predicate returns with zero status (TRUE) if 36606747b715Smrg# ARG is a GNU/binutils-style import library. Returns 36616747b715Smrg# with nonzero status (FALSE) otherwise. 36626747b715Smrgfunc_cygming_gnu_implib_p () 36636747b715Smrg{ 36646747b715Smrg $opt_debug 36656747b715Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 36666747b715Smrg 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)$'` 36676747b715Smrg test -n "$func_cygming_gnu_implib_tmp" 36686747b715Smrg} 36696747b715Smrg 36706747b715Smrg# func_cygming_ms_implib_p ARG 36716747b715Smrg# This predicate returns with zero status (TRUE) if 36726747b715Smrg# ARG is an MS-style import library. Returns 36736747b715Smrg# with nonzero status (FALSE) otherwise. 36746747b715Smrgfunc_cygming_ms_implib_p () 36756747b715Smrg{ 36766747b715Smrg $opt_debug 36776747b715Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 36786747b715Smrg func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 36796747b715Smrg test -n "$func_cygming_ms_implib_tmp" 36806747b715Smrg} 36816747b715Smrg 36826747b715Smrg# func_cygming_dll_for_implib_fallback ARG 36836747b715Smrg# Platform-specific function to extract the 36846747b715Smrg# name of the DLL associated with the specified 36856747b715Smrg# import library ARG. 36866747b715Smrg# 36876747b715Smrg# This fallback implementation is for use when $DLLTOOL 36886747b715Smrg# does not support the --identify-strict option. 36896747b715Smrg# Invoked by eval'ing the libtool variable 36906747b715Smrg# $sharedlib_from_linklib_cmd 36916747b715Smrg# Result is available in the variable 36926747b715Smrg# $sharedlib_from_linklib_result 36936747b715Smrgfunc_cygming_dll_for_implib_fallback () 36946747b715Smrg{ 36956747b715Smrg $opt_debug 36966747b715Smrg if func_cygming_gnu_implib_p "$1" ; then 36976747b715Smrg # binutils import library 36986747b715Smrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 36996747b715Smrg elif func_cygming_ms_implib_p "$1" ; then 37006747b715Smrg # ms-generated import library 37016747b715Smrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 37026747b715Smrg else 37036747b715Smrg # unknown 37046747b715Smrg sharedlib_from_linklib_result="" 37056747b715Smrg fi 37066747b715Smrg} 370705b261ecSmrg 370805b261ecSmrg 37094642e01fSmrg# func_extract_an_archive dir oldlib 37104642e01fSmrgfunc_extract_an_archive () 37114642e01fSmrg{ 37124642e01fSmrg $opt_debug 37134642e01fSmrg f_ex_an_ar_dir="$1"; shift 37144642e01fSmrg f_ex_an_ar_oldlib="$1" 37156747b715Smrg if test "$lock_old_archive_extraction" = yes; then 37166747b715Smrg lockfile=$f_ex_an_ar_oldlib.lock 37176747b715Smrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 37186747b715Smrg func_echo "Waiting for $lockfile to be removed" 37196747b715Smrg sleep 2 37206747b715Smrg done 37216747b715Smrg fi 37226747b715Smrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 37236747b715Smrg 'stat=$?; rm -f "$lockfile"; exit $stat' 37246747b715Smrg if test "$lock_old_archive_extraction" = yes; then 37256747b715Smrg $opt_dry_run || rm -f "$lockfile" 37266747b715Smrg fi 37274642e01fSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 37284642e01fSmrg : 37294642e01fSmrg else 37304642e01fSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 37314642e01fSmrg fi 37324642e01fSmrg} 373305b261ecSmrg 373405b261ecSmrg 37354642e01fSmrg# func_extract_archives gentop oldlib ... 37364642e01fSmrgfunc_extract_archives () 37374642e01fSmrg{ 37384642e01fSmrg $opt_debug 37394642e01fSmrg my_gentop="$1"; shift 37404642e01fSmrg my_oldlibs=${1+"$@"} 37414642e01fSmrg my_oldobjs="" 37424642e01fSmrg my_xlib="" 37434642e01fSmrg my_xabs="" 37444642e01fSmrg my_xdir="" 374505b261ecSmrg 37464642e01fSmrg for my_xlib in $my_oldlibs; do 37474642e01fSmrg # Extract the objects. 37484642e01fSmrg case $my_xlib in 37494642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 37504642e01fSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 37514642e01fSmrg esac 37524642e01fSmrg func_basename "$my_xlib" 37534642e01fSmrg my_xlib="$func_basename_result" 37544642e01fSmrg my_xlib_u=$my_xlib 37554642e01fSmrg while :; do 37564642e01fSmrg case " $extracted_archives " in 37574642e01fSmrg *" $my_xlib_u "*) 37584642e01fSmrg func_arith $extracted_serial + 1 37594642e01fSmrg extracted_serial=$func_arith_result 37604642e01fSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 37614642e01fSmrg *) break ;; 37624642e01fSmrg esac 37634642e01fSmrg done 37644642e01fSmrg extracted_archives="$extracted_archives $my_xlib_u" 37654642e01fSmrg my_xdir="$my_gentop/$my_xlib_u" 376605b261ecSmrg 37674642e01fSmrg func_mkdir_p "$my_xdir" 376805b261ecSmrg 37694642e01fSmrg case $host in 37704642e01fSmrg *-darwin*) 37714642e01fSmrg func_verbose "Extracting $my_xabs" 37724642e01fSmrg # Do not bother doing anything if just a dry run 37734642e01fSmrg $opt_dry_run || { 37744642e01fSmrg darwin_orig_dir=`pwd` 37754642e01fSmrg cd $my_xdir || exit $? 37764642e01fSmrg darwin_archive=$my_xabs 37774642e01fSmrg darwin_curdir=`pwd` 37784642e01fSmrg darwin_base_archive=`basename "$darwin_archive"` 37794642e01fSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 37804642e01fSmrg if test -n "$darwin_arches"; then 37814642e01fSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 37824642e01fSmrg darwin_arch= 37834642e01fSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 37844642e01fSmrg for darwin_arch in $darwin_arches ; do 37854642e01fSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37864642e01fSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 37874642e01fSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37884642e01fSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 37894642e01fSmrg cd "$darwin_curdir" 37904642e01fSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 37914642e01fSmrg done # $darwin_arches 37924642e01fSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 37934642e01fSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 37944642e01fSmrg darwin_file= 37954642e01fSmrg darwin_files= 37964642e01fSmrg for darwin_file in $darwin_filelist; do 37976747b715Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 37984642e01fSmrg $LIPO -create -output "$darwin_file" $darwin_files 37994642e01fSmrg done # $darwin_filelist 38004642e01fSmrg $RM -rf unfat-$$ 38014642e01fSmrg cd "$darwin_orig_dir" 380205b261ecSmrg else 38034642e01fSmrg cd $darwin_orig_dir 38044642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 38054642e01fSmrg fi # $darwin_arches 38064642e01fSmrg } # !$opt_dry_run 38074642e01fSmrg ;; 38084642e01fSmrg *) 38094642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 38104642e01fSmrg ;; 38114642e01fSmrg esac 38126747b715Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 38134642e01fSmrg done 381405b261ecSmrg 38154642e01fSmrg func_extract_archives_result="$my_oldobjs" 38164642e01fSmrg} 381705b261ecSmrg 381805b261ecSmrg 38196747b715Smrg# func_emit_wrapper [arg=no] 38206747b715Smrg# 38216747b715Smrg# Emit a libtool wrapper script on stdout. 38226747b715Smrg# Don't directly open a file because we may want to 38236747b715Smrg# incorporate the script contents within a cygwin/mingw 38246747b715Smrg# wrapper executable. Must ONLY be called from within 38256747b715Smrg# func_mode_link because it depends on a number of variables 38266747b715Smrg# set therein. 38274642e01fSmrg# 38286747b715Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 38296747b715Smrg# variable will take. If 'yes', then the emitted script 38306747b715Smrg# will assume that the directory in which it is stored is 38316747b715Smrg# the $objdir directory. This is a cygwin/mingw-specific 38326747b715Smrg# behavior. 38336747b715Smrgfunc_emit_wrapper () 38344642e01fSmrg{ 38356747b715Smrg func_emit_wrapper_arg1=${1-no} 383605b261ecSmrg 38374642e01fSmrg $ECHO "\ 38384642e01fSmrg#! $SHELL 383905b261ecSmrg 38404642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname 38414642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 38424642e01fSmrg# 38434642e01fSmrg# The $output program cannot be directly executed until all the libtool 38444642e01fSmrg# libraries that it depends on are installed. 38454642e01fSmrg# 38464642e01fSmrg# This wrapper script should never be moved out of the build directory. 38474642e01fSmrg# If it is, it will not operate correctly. 384805b261ecSmrg 38494642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 38504642e01fSmrg# metacharacters that are still active within double-quoted strings. 38514642e01fSmrgsed_quote_subst='$sed_quote_subst' 385205b261ecSmrg 38534642e01fSmrg# Be Bourne compatible 38544642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 38554642e01fSmrg emulate sh 38564642e01fSmrg NULLCMD=: 38574642e01fSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 38584642e01fSmrg # is contrary to our usage. Disable this feature. 38594642e01fSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 38604642e01fSmrg setopt NO_GLOB_SUBST 38614642e01fSmrgelse 38624642e01fSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 38634642e01fSmrgfi 38644642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 38654642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh 386605b261ecSmrg 38674642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 38684642e01fSmrg# if CDPATH is set. 38694642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 387005b261ecSmrg 38714642e01fSmrgrelink_command=\"$relink_command\" 387205b261ecSmrg 38734642e01fSmrg# This environment variable determines our operation mode. 38744642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 38754642e01fSmrg # install mode needs the following variables: 38764642e01fSmrg generated_by_libtool_version='$macro_version' 38774642e01fSmrg notinst_deplibs='$notinst_deplibs' 38784642e01fSmrgelse 38794642e01fSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 38804642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 38816747b715Smrg file=\"\$0\"" 38826747b715Smrg 38836747b715Smrg qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 38846747b715Smrg $ECHO "\ 38856747b715Smrg 38866747b715Smrg# A function that is used when there is no print builtin or printf. 38876747b715Smrgfunc_fallback_echo () 38886747b715Smrg{ 38896747b715Smrg eval 'cat <<_LTECHO_EOF 38906747b715Smrg\$1 38916747b715Smrg_LTECHO_EOF' 38926747b715Smrg} 38936747b715Smrg ECHO=\"$qECHO\" 38946747b715Smrg fi 38956747b715Smrg 38966747b715Smrg# Very basic option parsing. These options are (a) specific to 38976747b715Smrg# the libtool wrapper, (b) are identical between the wrapper 38986747b715Smrg# /script/ and the wrapper /executable/ which is used only on 38996747b715Smrg# windows platforms, and (c) all begin with the string "--lt-" 39006747b715Smrg# (application programs are unlikely to have options which match 39016747b715Smrg# this pattern). 39026747b715Smrg# 39036747b715Smrg# There are only two supported options: --lt-debug and 39046747b715Smrg# --lt-dump-script. There is, deliberately, no --lt-help. 39056747b715Smrg# 39066747b715Smrg# The first argument to this parsing function should be the 39076747b715Smrg# script's $0 value, followed by "$@". 39086747b715Smrglt_option_debug= 39096747b715Smrgfunc_parse_lt_options () 39106747b715Smrg{ 39116747b715Smrg lt_script_arg0=\$0 39126747b715Smrg shift 39136747b715Smrg for lt_opt 39146747b715Smrg do 39156747b715Smrg case \"\$lt_opt\" in 39166747b715Smrg --lt-debug) lt_option_debug=1 ;; 39176747b715Smrg --lt-dump-script) 39186747b715Smrg lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 39196747b715Smrg test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 39206747b715Smrg lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 39216747b715Smrg cat \"\$lt_dump_D/\$lt_dump_F\" 39226747b715Smrg exit 0 39236747b715Smrg ;; 39246747b715Smrg --lt-*) 39256747b715Smrg \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 39266747b715Smrg exit 1 39276747b715Smrg ;; 39286747b715Smrg esac 39296747b715Smrg done 39306747b715Smrg 39316747b715Smrg # Print the debug banner immediately: 39326747b715Smrg if test -n \"\$lt_option_debug\"; then 39336747b715Smrg echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 39346747b715Smrg fi 39356747b715Smrg} 39366747b715Smrg 39376747b715Smrg# Used when --lt-debug. Prints its arguments to stdout 39386747b715Smrg# (redirection is the responsibility of the caller) 39396747b715Smrgfunc_lt_dump_args () 39406747b715Smrg{ 39416747b715Smrg lt_dump_args_N=1; 39426747b715Smrg for lt_arg 39436747b715Smrg do 39446747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 39456747b715Smrg lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 39466747b715Smrg done 39476747b715Smrg} 39486747b715Smrg 39496747b715Smrg# Core function for launching the target application 39506747b715Smrgfunc_exec_program_core () 39516747b715Smrg{ 39524642e01fSmrg" 39536747b715Smrg case $host in 39546747b715Smrg # Backslashes separate directories on plain windows 39556747b715Smrg *-*-mingw | *-*-os2* | *-cegcc*) 39566747b715Smrg $ECHO "\ 39576747b715Smrg if test -n \"\$lt_option_debug\"; then 39586747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 39596747b715Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 39606747b715Smrg fi 39616747b715Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 39626747b715Smrg" 39636747b715Smrg ;; 39646747b715Smrg 39656747b715Smrg *) 39666747b715Smrg $ECHO "\ 39676747b715Smrg if test -n \"\$lt_option_debug\"; then 39686747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 39696747b715Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 39706747b715Smrg fi 39716747b715Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 39726747b715Smrg" 39736747b715Smrg ;; 39746747b715Smrg esac 39756747b715Smrg $ECHO "\ 39766747b715Smrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 39776747b715Smrg exit 1 39786747b715Smrg} 39796747b715Smrg 39806747b715Smrg# A function to encapsulate launching the target application 39816747b715Smrg# Strips options in the --lt-* namespace from \$@ and 39826747b715Smrg# launches target application with the remaining arguments. 39836747b715Smrgfunc_exec_program () 39846747b715Smrg{ 39856747b715Smrg for lt_wr_arg 39866747b715Smrg do 39876747b715Smrg case \$lt_wr_arg in 39886747b715Smrg --lt-*) ;; 39896747b715Smrg *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 39906747b715Smrg esac 39916747b715Smrg shift 39926747b715Smrg done 39936747b715Smrg func_exec_program_core \${1+\"\$@\"} 39946747b715Smrg} 39956747b715Smrg 39966747b715Smrg # Parse options 39976747b715Smrg func_parse_lt_options \"\$0\" \${1+\"\$@\"} 399805b261ecSmrg 39994642e01fSmrg # Find the directory that this script lives in. 40006747b715Smrg thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 40014642e01fSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 400205b261ecSmrg 40034642e01fSmrg # Follow symbolic links until we get to the real thisdir. 40046747b715Smrg file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 40054642e01fSmrg while test -n \"\$file\"; do 40066747b715Smrg destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 400705b261ecSmrg 40084642e01fSmrg # If there was a directory component, then change thisdir. 40094642e01fSmrg if test \"x\$destdir\" != \"x\$file\"; then 40104642e01fSmrg case \"\$destdir\" in 40114642e01fSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 40124642e01fSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 401305b261ecSmrg esac 40144642e01fSmrg fi 401505b261ecSmrg 40166747b715Smrg file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 40176747b715Smrg file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 40184642e01fSmrg done 401905b261ecSmrg 40204642e01fSmrg # Usually 'no', except on cygwin/mingw when embedded into 40214642e01fSmrg # the cwrapper. 40226747b715Smrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 40234642e01fSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 40244642e01fSmrg # special case for '.' 40254642e01fSmrg if test \"\$thisdir\" = \".\"; then 40264642e01fSmrg thisdir=\`pwd\` 40274642e01fSmrg fi 40284642e01fSmrg # remove .libs from thisdir 40294642e01fSmrg case \"\$thisdir\" in 40306747b715Smrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 40314642e01fSmrg $objdir ) thisdir=. ;; 40324642e01fSmrg esac 40334642e01fSmrg fi 40344642e01fSmrg 40354642e01fSmrg # Try to get the absolute directory name. 40364642e01fSmrg absdir=\`cd \"\$thisdir\" && pwd\` 40374642e01fSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 40384642e01fSmrg" 40394642e01fSmrg 40404642e01fSmrg if test "$fast_install" = yes; then 40414642e01fSmrg $ECHO "\ 40424642e01fSmrg program=lt-'$outputname'$exeext 40434642e01fSmrg progdir=\"\$thisdir/$objdir\" 40444642e01fSmrg 40454642e01fSmrg if test ! -f \"\$progdir/\$program\" || 40464642e01fSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 40474642e01fSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 40484642e01fSmrg 40494642e01fSmrg file=\"\$\$-\$program\" 40504642e01fSmrg 40514642e01fSmrg if test ! -d \"\$progdir\"; then 40524642e01fSmrg $MKDIR \"\$progdir\" 40534642e01fSmrg else 40544642e01fSmrg $RM \"\$progdir/\$file\" 40554642e01fSmrg fi" 40564642e01fSmrg 40574642e01fSmrg $ECHO "\ 40584642e01fSmrg 40594642e01fSmrg # relink executable if necessary 40604642e01fSmrg if test -n \"\$relink_command\"; then 40614642e01fSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 40624642e01fSmrg else 40634642e01fSmrg $ECHO \"\$relink_command_output\" >&2 40644642e01fSmrg $RM \"\$progdir/\$file\" 40654642e01fSmrg exit 1 406605b261ecSmrg fi 40674642e01fSmrg fi 406805b261ecSmrg 40694642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 40704642e01fSmrg { $RM \"\$progdir/\$program\"; 40714642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 40724642e01fSmrg $RM \"\$progdir/\$file\" 40734642e01fSmrg fi" 40744642e01fSmrg else 40754642e01fSmrg $ECHO "\ 40764642e01fSmrg program='$outputname' 40774642e01fSmrg progdir=\"\$thisdir/$objdir\" 40784642e01fSmrg" 407905b261ecSmrg fi 408005b261ecSmrg 40814642e01fSmrg $ECHO "\ 408205b261ecSmrg 40834642e01fSmrg if test -f \"\$progdir/\$program\"; then" 408405b261ecSmrg 40856747b715Smrg # fixup the dll searchpath if we need to. 40866747b715Smrg # 40876747b715Smrg # Fix the DLL searchpath if we need to. Do this before prepending 40886747b715Smrg # to shlibpath, because on Windows, both are PATH and uninstalled 40896747b715Smrg # libraries must come first. 40906747b715Smrg if test -n "$dllsearchpath"; then 40916747b715Smrg $ECHO "\ 40926747b715Smrg # Add the dll search path components to the executable PATH 40936747b715Smrg PATH=$dllsearchpath:\$PATH 40946747b715Smrg" 40956747b715Smrg fi 40966747b715Smrg 40974642e01fSmrg # Export our shlibpath_var if we have one. 40984642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 40994642e01fSmrg $ECHO "\ 41004642e01fSmrg # Add our own library path to $shlibpath_var 41014642e01fSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 410205b261ecSmrg 41034642e01fSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 41044642e01fSmrg # The second colon is a workaround for a bug in BeOS R4 sed 41056747b715Smrg $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 41064642e01fSmrg 41074642e01fSmrg export $shlibpath_var 41084642e01fSmrg" 410905b261ecSmrg fi 411005b261ecSmrg 41114642e01fSmrg $ECHO "\ 41124642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 41134642e01fSmrg # Run the actual program with our arguments. 41146747b715Smrg func_exec_program \${1+\"\$@\"} 41154642e01fSmrg fi 41164642e01fSmrg else 41174642e01fSmrg # The program doesn't exist. 41184642e01fSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 41194642e01fSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 41206747b715Smrg \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 41214642e01fSmrg exit 1 41224642e01fSmrg fi 41234642e01fSmrgfi\ 41244642e01fSmrg" 41254642e01fSmrg} 412605b261ecSmrg 412705b261ecSmrg 41284642e01fSmrg# func_emit_cwrapperexe_src 41294642e01fSmrg# emit the source code for a wrapper executable on stdout 41304642e01fSmrg# Must ONLY be called from within func_mode_link because 41314642e01fSmrg# it depends on a number of variable set therein. 41324642e01fSmrgfunc_emit_cwrapperexe_src () 41334642e01fSmrg{ 41344642e01fSmrg cat <<EOF 413505b261ecSmrg 41364642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 41374642e01fSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 413805b261ecSmrg 41394642e01fSmrg The $output program cannot be directly executed until all the libtool 41404642e01fSmrg libraries that it depends on are installed. 414105b261ecSmrg 41424642e01fSmrg This wrapper executable should never be moved out of the build directory. 41434642e01fSmrg If it is, it will not operate correctly. 41444642e01fSmrg*/ 41454642e01fSmrgEOF 41464642e01fSmrg cat <<"EOF" 41476747b715Smrg#ifdef _MSC_VER 41486747b715Smrg# define _CRT_SECURE_NO_DEPRECATE 1 41496747b715Smrg#endif 41504642e01fSmrg#include <stdio.h> 41514642e01fSmrg#include <stdlib.h> 41524642e01fSmrg#ifdef _MSC_VER 41534642e01fSmrg# include <direct.h> 41544642e01fSmrg# include <process.h> 41554642e01fSmrg# include <io.h> 41564642e01fSmrg#else 41574642e01fSmrg# include <unistd.h> 41584642e01fSmrg# include <stdint.h> 41594642e01fSmrg# ifdef __CYGWIN__ 41604642e01fSmrg# include <io.h> 41616747b715Smrg# endif 41626747b715Smrg#endif 41636747b715Smrg#include <malloc.h> 41646747b715Smrg#include <stdarg.h> 41656747b715Smrg#include <assert.h> 41666747b715Smrg#include <string.h> 41676747b715Smrg#include <ctype.h> 41686747b715Smrg#include <errno.h> 41696747b715Smrg#include <fcntl.h> 41706747b715Smrg#include <sys/stat.h> 41716747b715Smrg 41726747b715Smrg/* declarations of non-ANSI functions */ 41736747b715Smrg#if defined(__MINGW32__) 41746747b715Smrg# ifdef __STRICT_ANSI__ 41756747b715Smrgint _putenv (const char *); 41766747b715Smrg# endif 41776747b715Smrg#elif defined(__CYGWIN__) 41786747b715Smrg# ifdef __STRICT_ANSI__ 41794642e01fSmrgchar *realpath (const char *, char *); 41804642e01fSmrgint putenv (char *); 41814642e01fSmrgint setenv (const char *, const char *, int); 41824642e01fSmrg# endif 41836747b715Smrg/* #elif defined (other platforms) ... */ 41846747b715Smrg#endif 41856747b715Smrg 41866747b715Smrg/* portability defines, excluding path handling macros */ 41876747b715Smrg#if defined(_MSC_VER) 41886747b715Smrg# define setmode _setmode 41896747b715Smrg# define stat _stat 41906747b715Smrg# define chmod _chmod 41916747b715Smrg# define getcwd _getcwd 41926747b715Smrg# define putenv _putenv 41936747b715Smrg# define S_IXUSR _S_IEXEC 41946747b715Smrg# ifndef _INTPTR_T_DEFINED 41956747b715Smrg# define _INTPTR_T_DEFINED 41966747b715Smrg# define intptr_t int 41976747b715Smrg# endif 41986747b715Smrg#elif defined(__MINGW32__) 41996747b715Smrg# define setmode _setmode 42006747b715Smrg# define stat _stat 42016747b715Smrg# define chmod _chmod 42026747b715Smrg# define getcwd _getcwd 42036747b715Smrg# define putenv _putenv 42046747b715Smrg#elif defined(__CYGWIN__) 42056747b715Smrg# define HAVE_SETENV 42066747b715Smrg# define FOPEN_WB "wb" 42076747b715Smrg/* #elif defined (other platforms) ... */ 42084642e01fSmrg#endif 420905b261ecSmrg 42104642e01fSmrg#if defined(PATH_MAX) 42114642e01fSmrg# define LT_PATHMAX PATH_MAX 42124642e01fSmrg#elif defined(MAXPATHLEN) 42134642e01fSmrg# define LT_PATHMAX MAXPATHLEN 42144642e01fSmrg#else 42154642e01fSmrg# define LT_PATHMAX 1024 42164642e01fSmrg#endif 421705b261ecSmrg 42184642e01fSmrg#ifndef S_IXOTH 42194642e01fSmrg# define S_IXOTH 0 42204642e01fSmrg#endif 42214642e01fSmrg#ifndef S_IXGRP 42224642e01fSmrg# define S_IXGRP 0 42234642e01fSmrg#endif 422405b261ecSmrg 42256747b715Smrg/* path handling portability macros */ 42264642e01fSmrg#ifndef DIR_SEPARATOR 42274642e01fSmrg# define DIR_SEPARATOR '/' 42284642e01fSmrg# define PATH_SEPARATOR ':' 42294642e01fSmrg#endif 423005b261ecSmrg 42314642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 42324642e01fSmrg defined (__OS2__) 42334642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 42344642e01fSmrg# define FOPEN_WB "wb" 42354642e01fSmrg# ifndef DIR_SEPARATOR_2 42364642e01fSmrg# define DIR_SEPARATOR_2 '\\' 42374642e01fSmrg# endif 42384642e01fSmrg# ifndef PATH_SEPARATOR_2 42394642e01fSmrg# define PATH_SEPARATOR_2 ';' 42404642e01fSmrg# endif 42414642e01fSmrg#endif 424205b261ecSmrg 42434642e01fSmrg#ifndef DIR_SEPARATOR_2 42444642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 42454642e01fSmrg#else /* DIR_SEPARATOR_2 */ 42464642e01fSmrg# define IS_DIR_SEPARATOR(ch) \ 42474642e01fSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 42484642e01fSmrg#endif /* DIR_SEPARATOR_2 */ 424905b261ecSmrg 42504642e01fSmrg#ifndef PATH_SEPARATOR_2 42514642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 42524642e01fSmrg#else /* PATH_SEPARATOR_2 */ 42534642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 42544642e01fSmrg#endif /* PATH_SEPARATOR_2 */ 425505b261ecSmrg 42564642e01fSmrg#ifndef FOPEN_WB 42574642e01fSmrg# define FOPEN_WB "w" 42584642e01fSmrg#endif 42594642e01fSmrg#ifndef _O_BINARY 42604642e01fSmrg# define _O_BINARY 0 42614642e01fSmrg#endif 426205b261ecSmrg 42634642e01fSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 42644642e01fSmrg#define XFREE(stale) do { \ 42654642e01fSmrg if (stale) { free ((void *) stale); stale = 0; } \ 42664642e01fSmrg} while (0) 426705b261ecSmrg 42686747b715Smrg#if defined(LT_DEBUGWRAPPER) 42696747b715Smrgstatic int lt_debug = 1; 42704642e01fSmrg#else 42716747b715Smrgstatic int lt_debug = 0; 42724642e01fSmrg#endif 427305b261ecSmrg 42746747b715Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 427505b261ecSmrg 42764642e01fSmrgvoid *xmalloc (size_t num); 42774642e01fSmrgchar *xstrdup (const char *string); 42784642e01fSmrgconst char *base_name (const char *name); 42794642e01fSmrgchar *find_executable (const char *wrapper); 42804642e01fSmrgchar *chase_symlinks (const char *pathspec); 42814642e01fSmrgint make_executable (const char *path); 42824642e01fSmrgint check_executable (const char *path); 42834642e01fSmrgchar *strendzap (char *str, const char *pat); 42846747b715Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 42856747b715Smrgvoid lt_fatal (const char *file, int line, const char *message, ...); 42866747b715Smrgstatic const char *nonnull (const char *s); 42876747b715Smrgstatic const char *nonempty (const char *s); 42884642e01fSmrgvoid lt_setenv (const char *name, const char *value); 42894642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 42904642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value); 42914642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value); 42926747b715Smrgchar **prepare_spawn (char **argv); 42936747b715Smrgvoid lt_dump_script (FILE *f); 42944642e01fSmrgEOF 42954642e01fSmrg 42964642e01fSmrg cat <<EOF 42976747b715Smrgvolatile const char * MAGIC_EXE = "$magic_exe"; 42984642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 42994642e01fSmrgEOF 430005b261ecSmrg 43014642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 43026747b715Smrg func_to_host_path "$temp_rpath" 43034642e01fSmrg cat <<EOF 43046747b715Smrgconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 43054642e01fSmrgEOF 43064642e01fSmrg else 43074642e01fSmrg cat <<"EOF" 43084642e01fSmrgconst char * LIB_PATH_VALUE = ""; 43094642e01fSmrgEOF 431005b261ecSmrg fi 431105b261ecSmrg 43124642e01fSmrg if test -n "$dllsearchpath"; then 43136747b715Smrg func_to_host_path "$dllsearchpath:" 43144642e01fSmrg cat <<EOF 43154642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH"; 43166747b715Smrgconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 431705b261ecSmrgEOF 431805b261ecSmrg else 43194642e01fSmrg cat <<"EOF" 43204642e01fSmrgconst char * EXE_PATH_VARNAME = ""; 43214642e01fSmrgconst char * EXE_PATH_VALUE = ""; 43224642e01fSmrgEOF 432305b261ecSmrg fi 43244642e01fSmrg 43254642e01fSmrg if test "$fast_install" = yes; then 43264642e01fSmrg cat <<EOF 43274642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 43284642e01fSmrgEOF 432905b261ecSmrg else 43304642e01fSmrg cat <<EOF 43314642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 43324642e01fSmrgEOF 433305b261ecSmrg fi 433405b261ecSmrg 433505b261ecSmrg 43364642e01fSmrg cat <<"EOF" 433705b261ecSmrg 43384642e01fSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 433905b261ecSmrg 43404642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 43414642e01fSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 43426747b715Smrgstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 434305b261ecSmrg 43444642e01fSmrgint 43454642e01fSmrgmain (int argc, char *argv[]) 43464642e01fSmrg{ 43474642e01fSmrg char **newargz; 43484642e01fSmrg int newargc; 43494642e01fSmrg char *tmp_pathspec; 43504642e01fSmrg char *actual_cwrapper_path; 43514642e01fSmrg char *actual_cwrapper_name; 43524642e01fSmrg char *target_name; 43534642e01fSmrg char *lt_argv_zero; 43544642e01fSmrg intptr_t rval = 127; 435505b261ecSmrg 43564642e01fSmrg int i; 435705b261ecSmrg 43584642e01fSmrg program_name = (char *) xstrdup (base_name (argv[0])); 43596747b715Smrg newargz = XMALLOC (char *, argc + 1); 436005b261ecSmrg 43616747b715Smrg /* very simple arg parsing; don't want to rely on getopt 43626747b715Smrg * also, copy all non cwrapper options to newargz, except 43636747b715Smrg * argz[0], which is handled differently 43646747b715Smrg */ 43656747b715Smrg newargc=0; 43664642e01fSmrg for (i = 1; i < argc; i++) 43674642e01fSmrg { 43684642e01fSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 43694642e01fSmrg { 43704642e01fSmrgEOF 43714642e01fSmrg case "$host" in 43724642e01fSmrg *mingw* | *cygwin* ) 43734642e01fSmrg # make stdout use "unix" line endings 43744642e01fSmrg echo " setmode(1,_O_BINARY);" 43754642e01fSmrg ;; 43764642e01fSmrg esac 437705b261ecSmrg 43784642e01fSmrg cat <<"EOF" 43796747b715Smrg lt_dump_script (stdout); 43804642e01fSmrg return 0; 43814642e01fSmrg } 43826747b715Smrg if (strcmp (argv[i], debug_opt) == 0) 43836747b715Smrg { 43846747b715Smrg lt_debug = 1; 43856747b715Smrg continue; 43866747b715Smrg } 43876747b715Smrg if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 43886747b715Smrg { 43896747b715Smrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 43906747b715Smrg namespace, but it is not one of the ones we know about and 43916747b715Smrg have already dealt with, above (inluding dump-script), then 43926747b715Smrg report an error. Otherwise, targets might begin to believe 43936747b715Smrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 43946747b715Smrg namespace. The first time any user complains about this, we'll 43956747b715Smrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 43966747b715Smrg or a configure.ac-settable value. 43976747b715Smrg */ 43986747b715Smrg lt_fatal (__FILE__, __LINE__, 43996747b715Smrg "unrecognized %s option: '%s'", 44006747b715Smrg ltwrapper_option_prefix, argv[i]); 44016747b715Smrg } 44026747b715Smrg /* otherwise ... */ 44036747b715Smrg newargz[++newargc] = xstrdup (argv[i]); 44044642e01fSmrg } 44056747b715Smrg newargz[++newargc] = NULL; 44066747b715Smrg 44076747b715SmrgEOF 44086747b715Smrg cat <<EOF 44096747b715Smrg /* The GNU banner must be the first non-error debug message */ 44106747b715Smrg lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 44116747b715SmrgEOF 44126747b715Smrg cat <<"EOF" 44136747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 44146747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 441505b261ecSmrg 44164642e01fSmrg tmp_pathspec = find_executable (argv[0]); 44174642e01fSmrg if (tmp_pathspec == NULL) 44186747b715Smrg lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 44196747b715Smrg lt_debugprintf (__FILE__, __LINE__, 44206747b715Smrg "(main) found exe (before symlink chase) at: %s\n", 44216747b715Smrg tmp_pathspec); 44224642e01fSmrg 44234642e01fSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 44246747b715Smrg lt_debugprintf (__FILE__, __LINE__, 44256747b715Smrg "(main) found exe (after symlink chase) at: %s\n", 44266747b715Smrg actual_cwrapper_path); 44274642e01fSmrg XFREE (tmp_pathspec); 44284642e01fSmrg 44296747b715Smrg actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 44304642e01fSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 44314642e01fSmrg 44324642e01fSmrg /* wrapper name transforms */ 44334642e01fSmrg strendzap (actual_cwrapper_name, ".exe"); 44344642e01fSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 44354642e01fSmrg XFREE (actual_cwrapper_name); 44364642e01fSmrg actual_cwrapper_name = tmp_pathspec; 44374642e01fSmrg tmp_pathspec = 0; 44384642e01fSmrg 44394642e01fSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 44404642e01fSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 44414642e01fSmrg strendzap (target_name, ".exe"); 44424642e01fSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 44434642e01fSmrg XFREE (target_name); 44444642e01fSmrg target_name = tmp_pathspec; 44454642e01fSmrg tmp_pathspec = 0; 44464642e01fSmrg 44476747b715Smrg lt_debugprintf (__FILE__, __LINE__, 44486747b715Smrg "(main) libtool target name: %s\n", 44496747b715Smrg target_name); 44504642e01fSmrgEOF 445105b261ecSmrg 44524642e01fSmrg cat <<EOF 44534642e01fSmrg newargz[0] = 44544642e01fSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 44554642e01fSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 44564642e01fSmrg strcpy (newargz[0], actual_cwrapper_path); 44574642e01fSmrg strcat (newargz[0], "$objdir"); 44584642e01fSmrg strcat (newargz[0], "/"); 44594642e01fSmrgEOF 446005b261ecSmrg 44614642e01fSmrg cat <<"EOF" 44624642e01fSmrg /* stop here, and copy so we don't have to do this twice */ 44634642e01fSmrg tmp_pathspec = xstrdup (newargz[0]); 446405b261ecSmrg 44654642e01fSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 44664642e01fSmrg strcat (newargz[0], actual_cwrapper_name); 446705b261ecSmrg 44684642e01fSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 44694642e01fSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 44704642e01fSmrg XFREE (tmp_pathspec); 44714642e01fSmrg tmp_pathspec = NULL; 44724642e01fSmrgEOF 447305b261ecSmrg 44744642e01fSmrg case $host_os in 44754642e01fSmrg mingw*) 44764642e01fSmrg cat <<"EOF" 44774642e01fSmrg { 44784642e01fSmrg char* p; 44794642e01fSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 44804642e01fSmrg { 44814642e01fSmrg *p = '/'; 44824642e01fSmrg } 44834642e01fSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 44844642e01fSmrg { 44854642e01fSmrg *p = '/'; 44864642e01fSmrg } 44874642e01fSmrg } 44884642e01fSmrgEOF 44894642e01fSmrg ;; 44904642e01fSmrg esac 449105b261ecSmrg 44924642e01fSmrg cat <<"EOF" 44934642e01fSmrg XFREE (target_name); 44944642e01fSmrg XFREE (actual_cwrapper_path); 44954642e01fSmrg XFREE (actual_cwrapper_name); 449605b261ecSmrg 44974642e01fSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 44984642e01fSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 44996747b715Smrg /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 45006747b715Smrg be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 45016747b715Smrg because on Windows, both *_VARNAMEs are PATH but uninstalled 45026747b715Smrg libraries must come first. */ 45034642e01fSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 45046747b715Smrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 450505b261ecSmrg 45066747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 45076747b715Smrg nonnull (lt_argv_zero)); 45084642e01fSmrg for (i = 0; i < newargc; i++) 45094642e01fSmrg { 45106747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 45116747b715Smrg i, nonnull (newargz[i])); 45124642e01fSmrg } 451305b261ecSmrg 45144642e01fSmrgEOF 451505b261ecSmrg 45164642e01fSmrg case $host_os in 45174642e01fSmrg mingw*) 45184642e01fSmrg cat <<"EOF" 45194642e01fSmrg /* execv doesn't actually work on mingw as expected on unix */ 45206747b715Smrg newargz = prepare_spawn (newargz); 45214642e01fSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 45224642e01fSmrg if (rval == -1) 45234642e01fSmrg { 45244642e01fSmrg /* failed to start process */ 45256747b715Smrg lt_debugprintf (__FILE__, __LINE__, 45266747b715Smrg "(main) failed to launch target \"%s\": %s\n", 45276747b715Smrg lt_argv_zero, nonnull (strerror (errno))); 45284642e01fSmrg return 127; 45294642e01fSmrg } 45304642e01fSmrg return rval; 45314642e01fSmrgEOF 45324642e01fSmrg ;; 45334642e01fSmrg *) 45344642e01fSmrg cat <<"EOF" 45354642e01fSmrg execv (lt_argv_zero, newargz); 45364642e01fSmrg return rval; /* =127, but avoids unused variable warning */ 45374642e01fSmrgEOF 45384642e01fSmrg ;; 45394642e01fSmrg esac 454005b261ecSmrg 45414642e01fSmrg cat <<"EOF" 45424642e01fSmrg} 454305b261ecSmrg 45444642e01fSmrgvoid * 45454642e01fSmrgxmalloc (size_t num) 45464642e01fSmrg{ 45474642e01fSmrg void *p = (void *) malloc (num); 45484642e01fSmrg if (!p) 45496747b715Smrg lt_fatal (__FILE__, __LINE__, "memory exhausted"); 455005b261ecSmrg 45514642e01fSmrg return p; 45524642e01fSmrg} 455305b261ecSmrg 45544642e01fSmrgchar * 45554642e01fSmrgxstrdup (const char *string) 45564642e01fSmrg{ 45574642e01fSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 45584642e01fSmrg string) : NULL; 45594642e01fSmrg} 456005b261ecSmrg 45614642e01fSmrgconst char * 45624642e01fSmrgbase_name (const char *name) 45634642e01fSmrg{ 45644642e01fSmrg const char *base; 456505b261ecSmrg 45664642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 45674642e01fSmrg /* Skip over the disk name in MSDOS pathnames. */ 45684642e01fSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 45694642e01fSmrg name += 2; 45704642e01fSmrg#endif 457105b261ecSmrg 45724642e01fSmrg for (base = name; *name; name++) 45734642e01fSmrg if (IS_DIR_SEPARATOR (*name)) 45744642e01fSmrg base = name + 1; 45754642e01fSmrg return base; 45764642e01fSmrg} 457705b261ecSmrg 45784642e01fSmrgint 45794642e01fSmrgcheck_executable (const char *path) 45804642e01fSmrg{ 45814642e01fSmrg struct stat st; 458205b261ecSmrg 45836747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 45846747b715Smrg nonempty (path)); 45854642e01fSmrg if ((!path) || (!*path)) 45864642e01fSmrg return 0; 458705b261ecSmrg 45884642e01fSmrg if ((stat (path, &st) >= 0) 45894642e01fSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 45904642e01fSmrg return 1; 45914642e01fSmrg else 45924642e01fSmrg return 0; 45934642e01fSmrg} 459405b261ecSmrg 45954642e01fSmrgint 45964642e01fSmrgmake_executable (const char *path) 45974642e01fSmrg{ 45984642e01fSmrg int rval = 0; 45994642e01fSmrg struct stat st; 460005b261ecSmrg 46016747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 46026747b715Smrg nonempty (path)); 46034642e01fSmrg if ((!path) || (!*path)) 46044642e01fSmrg return 0; 460505b261ecSmrg 46064642e01fSmrg if (stat (path, &st) >= 0) 46074642e01fSmrg { 46084642e01fSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 46094642e01fSmrg } 46104642e01fSmrg return rval; 46114642e01fSmrg} 461205b261ecSmrg 46134642e01fSmrg/* Searches for the full path of the wrapper. Returns 46144642e01fSmrg newly allocated full path name if found, NULL otherwise 46154642e01fSmrg Does not chase symlinks, even on platforms that support them. 46164642e01fSmrg*/ 46174642e01fSmrgchar * 46184642e01fSmrgfind_executable (const char *wrapper) 46194642e01fSmrg{ 46204642e01fSmrg int has_slash = 0; 46214642e01fSmrg const char *p; 46224642e01fSmrg const char *p_next; 46234642e01fSmrg /* static buffer for getcwd */ 46244642e01fSmrg char tmp[LT_PATHMAX + 1]; 46254642e01fSmrg int tmp_len; 46264642e01fSmrg char *concat_name; 462705b261ecSmrg 46286747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 46296747b715Smrg nonempty (wrapper)); 463005b261ecSmrg 46314642e01fSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 46324642e01fSmrg return NULL; 463305b261ecSmrg 46344642e01fSmrg /* Absolute path? */ 46354642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46364642e01fSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 46374642e01fSmrg { 46384642e01fSmrg concat_name = xstrdup (wrapper); 46394642e01fSmrg if (check_executable (concat_name)) 46404642e01fSmrg return concat_name; 46414642e01fSmrg XFREE (concat_name); 46424642e01fSmrg } 46434642e01fSmrg else 46444642e01fSmrg { 46454642e01fSmrg#endif 46464642e01fSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 46474642e01fSmrg { 46484642e01fSmrg concat_name = xstrdup (wrapper); 46494642e01fSmrg if (check_executable (concat_name)) 46504642e01fSmrg return concat_name; 46514642e01fSmrg XFREE (concat_name); 46524642e01fSmrg } 46534642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46544642e01fSmrg } 46554642e01fSmrg#endif 465605b261ecSmrg 46574642e01fSmrg for (p = wrapper; *p; p++) 46584642e01fSmrg if (*p == '/') 46594642e01fSmrg { 46604642e01fSmrg has_slash = 1; 46614642e01fSmrg break; 46624642e01fSmrg } 46634642e01fSmrg if (!has_slash) 46644642e01fSmrg { 46654642e01fSmrg /* no slashes; search PATH */ 46664642e01fSmrg const char *path = getenv ("PATH"); 46674642e01fSmrg if (path != NULL) 46684642e01fSmrg { 46694642e01fSmrg for (p = path; *p; p = p_next) 46704642e01fSmrg { 46714642e01fSmrg const char *q; 46724642e01fSmrg size_t p_len; 46734642e01fSmrg for (q = p; *q; q++) 46744642e01fSmrg if (IS_PATH_SEPARATOR (*q)) 46754642e01fSmrg break; 46764642e01fSmrg p_len = q - p; 46774642e01fSmrg p_next = (*q == '\0' ? q : q + 1); 46784642e01fSmrg if (p_len == 0) 46794642e01fSmrg { 46804642e01fSmrg /* empty path: current directory */ 46814642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 46826747b715Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 46836747b715Smrg nonnull (strerror (errno))); 46844642e01fSmrg tmp_len = strlen (tmp); 46854642e01fSmrg concat_name = 46864642e01fSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 46874642e01fSmrg memcpy (concat_name, tmp, tmp_len); 46884642e01fSmrg concat_name[tmp_len] = '/'; 46894642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 46904642e01fSmrg } 46914642e01fSmrg else 46924642e01fSmrg { 46934642e01fSmrg concat_name = 46944642e01fSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 46954642e01fSmrg memcpy (concat_name, p, p_len); 46964642e01fSmrg concat_name[p_len] = '/'; 46974642e01fSmrg strcpy (concat_name + p_len + 1, wrapper); 46984642e01fSmrg } 46994642e01fSmrg if (check_executable (concat_name)) 47004642e01fSmrg return concat_name; 47014642e01fSmrg XFREE (concat_name); 47024642e01fSmrg } 47034642e01fSmrg } 47044642e01fSmrg /* not found in PATH; assume curdir */ 47054642e01fSmrg } 47064642e01fSmrg /* Relative path | not found in path: prepend cwd */ 47074642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 47086747b715Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 47096747b715Smrg nonnull (strerror (errno))); 47104642e01fSmrg tmp_len = strlen (tmp); 47114642e01fSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 47124642e01fSmrg memcpy (concat_name, tmp, tmp_len); 47134642e01fSmrg concat_name[tmp_len] = '/'; 47144642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 471505b261ecSmrg 47164642e01fSmrg if (check_executable (concat_name)) 47174642e01fSmrg return concat_name; 47184642e01fSmrg XFREE (concat_name); 47194642e01fSmrg return NULL; 47204642e01fSmrg} 472105b261ecSmrg 47224642e01fSmrgchar * 47234642e01fSmrgchase_symlinks (const char *pathspec) 47244642e01fSmrg{ 47254642e01fSmrg#ifndef S_ISLNK 47264642e01fSmrg return xstrdup (pathspec); 47274642e01fSmrg#else 47284642e01fSmrg char buf[LT_PATHMAX]; 47294642e01fSmrg struct stat s; 47304642e01fSmrg char *tmp_pathspec = xstrdup (pathspec); 47314642e01fSmrg char *p; 47324642e01fSmrg int has_symlinks = 0; 47334642e01fSmrg while (strlen (tmp_pathspec) && !has_symlinks) 47344642e01fSmrg { 47356747b715Smrg lt_debugprintf (__FILE__, __LINE__, 47366747b715Smrg "checking path component for symlinks: %s\n", 47376747b715Smrg tmp_pathspec); 47384642e01fSmrg if (lstat (tmp_pathspec, &s) == 0) 47394642e01fSmrg { 47404642e01fSmrg if (S_ISLNK (s.st_mode) != 0) 47414642e01fSmrg { 47424642e01fSmrg has_symlinks = 1; 47434642e01fSmrg break; 47444642e01fSmrg } 474505b261ecSmrg 47464642e01fSmrg /* search backwards for last DIR_SEPARATOR */ 47474642e01fSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 47484642e01fSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47494642e01fSmrg p--; 47504642e01fSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47514642e01fSmrg { 47524642e01fSmrg /* no more DIR_SEPARATORS left */ 47534642e01fSmrg break; 47544642e01fSmrg } 47554642e01fSmrg *p = '\0'; 47564642e01fSmrg } 47574642e01fSmrg else 47584642e01fSmrg { 47596747b715Smrg lt_fatal (__FILE__, __LINE__, 47606747b715Smrg "error accessing file \"%s\": %s", 47616747b715Smrg tmp_pathspec, nonnull (strerror (errno))); 47624642e01fSmrg } 47634642e01fSmrg } 47644642e01fSmrg XFREE (tmp_pathspec); 476505b261ecSmrg 47664642e01fSmrg if (!has_symlinks) 47674642e01fSmrg { 47684642e01fSmrg return xstrdup (pathspec); 47694642e01fSmrg } 477005b261ecSmrg 47714642e01fSmrg tmp_pathspec = realpath (pathspec, buf); 47724642e01fSmrg if (tmp_pathspec == 0) 47734642e01fSmrg { 47746747b715Smrg lt_fatal (__FILE__, __LINE__, 47756747b715Smrg "could not follow symlinks for %s", pathspec); 47764642e01fSmrg } 47774642e01fSmrg return xstrdup (tmp_pathspec); 47784642e01fSmrg#endif 47794642e01fSmrg} 478005b261ecSmrg 47814642e01fSmrgchar * 47824642e01fSmrgstrendzap (char *str, const char *pat) 47834642e01fSmrg{ 47844642e01fSmrg size_t len, patlen; 478505b261ecSmrg 47864642e01fSmrg assert (str != NULL); 47874642e01fSmrg assert (pat != NULL); 478805b261ecSmrg 47894642e01fSmrg len = strlen (str); 47904642e01fSmrg patlen = strlen (pat); 479105b261ecSmrg 47924642e01fSmrg if (patlen <= len) 47934642e01fSmrg { 47944642e01fSmrg str += len - patlen; 47954642e01fSmrg if (strcmp (str, pat) == 0) 47964642e01fSmrg *str = '\0'; 47974642e01fSmrg } 47984642e01fSmrg return str; 47994642e01fSmrg} 480005b261ecSmrg 48016747b715Smrgvoid 48026747b715Smrglt_debugprintf (const char *file, int line, const char *fmt, ...) 48036747b715Smrg{ 48046747b715Smrg va_list args; 48056747b715Smrg if (lt_debug) 48066747b715Smrg { 48076747b715Smrg (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 48086747b715Smrg va_start (args, fmt); 48096747b715Smrg (void) vfprintf (stderr, fmt, args); 48106747b715Smrg va_end (args); 48116747b715Smrg } 48126747b715Smrg} 48136747b715Smrg 48144642e01fSmrgstatic void 48156747b715Smrglt_error_core (int exit_status, const char *file, 48166747b715Smrg int line, const char *mode, 48174642e01fSmrg const char *message, va_list ap) 48184642e01fSmrg{ 48196747b715Smrg fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 48204642e01fSmrg vfprintf (stderr, message, ap); 48214642e01fSmrg fprintf (stderr, ".\n"); 482205b261ecSmrg 48234642e01fSmrg if (exit_status >= 0) 48244642e01fSmrg exit (exit_status); 48254642e01fSmrg} 482605b261ecSmrg 48274642e01fSmrgvoid 48286747b715Smrglt_fatal (const char *file, int line, const char *message, ...) 48294642e01fSmrg{ 48304642e01fSmrg va_list ap; 48314642e01fSmrg va_start (ap, message); 48326747b715Smrg lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 48334642e01fSmrg va_end (ap); 48344642e01fSmrg} 483505b261ecSmrg 48366747b715Smrgstatic const char * 48376747b715Smrgnonnull (const char *s) 48386747b715Smrg{ 48396747b715Smrg return s ? s : "(null)"; 48406747b715Smrg} 48416747b715Smrg 48426747b715Smrgstatic const char * 48436747b715Smrgnonempty (const char *s) 48446747b715Smrg{ 48456747b715Smrg return (s && !*s) ? "(empty)" : nonnull (s); 48466747b715Smrg} 48476747b715Smrg 48484642e01fSmrgvoid 48494642e01fSmrglt_setenv (const char *name, const char *value) 48504642e01fSmrg{ 48516747b715Smrg lt_debugprintf (__FILE__, __LINE__, 48526747b715Smrg "(lt_setenv) setting '%s' to '%s'\n", 48536747b715Smrg nonnull (name), nonnull (value)); 48544642e01fSmrg { 48554642e01fSmrg#ifdef HAVE_SETENV 48564642e01fSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 48574642e01fSmrg char *str = xstrdup (value); 48584642e01fSmrg setenv (name, str, 1); 48594642e01fSmrg#else 48604642e01fSmrg int len = strlen (name) + 1 + strlen (value) + 1; 48614642e01fSmrg char *str = XMALLOC (char, len); 48624642e01fSmrg sprintf (str, "%s=%s", name, value); 48634642e01fSmrg if (putenv (str) != EXIT_SUCCESS) 48644642e01fSmrg { 48654642e01fSmrg XFREE (str); 48664642e01fSmrg } 48674642e01fSmrg#endif 48684642e01fSmrg } 48694642e01fSmrg} 487005b261ecSmrg 48714642e01fSmrgchar * 48724642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 48734642e01fSmrg{ 48744642e01fSmrg char *new_value; 48754642e01fSmrg if (orig_value && *orig_value) 48764642e01fSmrg { 48774642e01fSmrg int orig_value_len = strlen (orig_value); 48784642e01fSmrg int add_len = strlen (add); 48794642e01fSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 48804642e01fSmrg if (to_end) 48814642e01fSmrg { 48824642e01fSmrg strcpy (new_value, orig_value); 48834642e01fSmrg strcpy (new_value + orig_value_len, add); 48844642e01fSmrg } 48854642e01fSmrg else 48864642e01fSmrg { 48874642e01fSmrg strcpy (new_value, add); 48884642e01fSmrg strcpy (new_value + add_len, orig_value); 48894642e01fSmrg } 48904642e01fSmrg } 48914642e01fSmrg else 48924642e01fSmrg { 48934642e01fSmrg new_value = xstrdup (add); 48944642e01fSmrg } 48954642e01fSmrg return new_value; 48964642e01fSmrg} 489705b261ecSmrg 48984642e01fSmrgvoid 48994642e01fSmrglt_update_exe_path (const char *name, const char *value) 49004642e01fSmrg{ 49016747b715Smrg lt_debugprintf (__FILE__, __LINE__, 49026747b715Smrg "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 49036747b715Smrg nonnull (name), nonnull (value)); 490405b261ecSmrg 49054642e01fSmrg if (name && *name && value && *value) 49064642e01fSmrg { 49074642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 49084642e01fSmrg /* some systems can't cope with a ':'-terminated path #' */ 49094642e01fSmrg int len = strlen (new_value); 49104642e01fSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 49114642e01fSmrg { 49124642e01fSmrg new_value[len-1] = '\0'; 49134642e01fSmrg } 49144642e01fSmrg lt_setenv (name, new_value); 49154642e01fSmrg XFREE (new_value); 49164642e01fSmrg } 49174642e01fSmrg} 491805b261ecSmrg 49194642e01fSmrgvoid 49204642e01fSmrglt_update_lib_path (const char *name, const char *value) 49214642e01fSmrg{ 49226747b715Smrg lt_debugprintf (__FILE__, __LINE__, 49236747b715Smrg "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 49246747b715Smrg nonnull (name), nonnull (value)); 492505b261ecSmrg 49264642e01fSmrg if (name && *name && value && *value) 49274642e01fSmrg { 49284642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 49294642e01fSmrg lt_setenv (name, new_value); 49304642e01fSmrg XFREE (new_value); 49314642e01fSmrg } 49324642e01fSmrg} 493305b261ecSmrg 49346747b715SmrgEOF 49356747b715Smrg case $host_os in 49366747b715Smrg mingw*) 49376747b715Smrg cat <<"EOF" 49386747b715Smrg 49396747b715Smrg/* Prepares an argument vector before calling spawn(). 49406747b715Smrg Note that spawn() does not by itself call the command interpreter 49416747b715Smrg (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 49426747b715Smrg ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 49436747b715Smrg GetVersionEx(&v); 49446747b715Smrg v.dwPlatformId == VER_PLATFORM_WIN32_NT; 49456747b715Smrg }) ? "cmd.exe" : "command.com"). 49466747b715Smrg Instead it simply concatenates the arguments, separated by ' ', and calls 49476747b715Smrg CreateProcess(). We must quote the arguments since Win32 CreateProcess() 49486747b715Smrg interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 49496747b715Smrg special way: 49506747b715Smrg - Space and tab are interpreted as delimiters. They are not treated as 49516747b715Smrg delimiters if they are surrounded by double quotes: "...". 49526747b715Smrg - Unescaped double quotes are removed from the input. Their only effect is 49536747b715Smrg that within double quotes, space and tab are treated like normal 49546747b715Smrg characters. 49556747b715Smrg - Backslashes not followed by double quotes are not special. 49566747b715Smrg - But 2*n+1 backslashes followed by a double quote become 49576747b715Smrg n backslashes followed by a double quote (n >= 0): 49586747b715Smrg \" -> " 49596747b715Smrg \\\" -> \" 49606747b715Smrg \\\\\" -> \\" 49616747b715Smrg */ 49626747b715Smrg#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" 49636747b715Smrg#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" 49646747b715Smrgchar ** 49656747b715Smrgprepare_spawn (char **argv) 49666747b715Smrg{ 49676747b715Smrg size_t argc; 49686747b715Smrg char **new_argv; 49696747b715Smrg size_t i; 49706747b715Smrg 49716747b715Smrg /* Count number of arguments. */ 49726747b715Smrg for (argc = 0; argv[argc] != NULL; argc++) 49736747b715Smrg ; 49746747b715Smrg 49756747b715Smrg /* Allocate new argument vector. */ 49766747b715Smrg new_argv = XMALLOC (char *, argc + 1); 49776747b715Smrg 49786747b715Smrg /* Put quoted arguments into the new argument vector. */ 49796747b715Smrg for (i = 0; i < argc; i++) 49806747b715Smrg { 49816747b715Smrg const char *string = argv[i]; 49826747b715Smrg 49836747b715Smrg if (string[0] == '\0') 49846747b715Smrg new_argv[i] = xstrdup ("\"\""); 49856747b715Smrg else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 49866747b715Smrg { 49876747b715Smrg int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 49886747b715Smrg size_t length; 49896747b715Smrg unsigned int backslashes; 49906747b715Smrg const char *s; 49916747b715Smrg char *quoted_string; 49926747b715Smrg char *p; 49936747b715Smrg 49946747b715Smrg length = 0; 49956747b715Smrg backslashes = 0; 49966747b715Smrg if (quote_around) 49976747b715Smrg length++; 49986747b715Smrg for (s = string; *s != '\0'; s++) 49996747b715Smrg { 50006747b715Smrg char c = *s; 50016747b715Smrg if (c == '"') 50026747b715Smrg length += backslashes + 1; 50036747b715Smrg length++; 50046747b715Smrg if (c == '\\') 50056747b715Smrg backslashes++; 50066747b715Smrg else 50076747b715Smrg backslashes = 0; 50086747b715Smrg } 50096747b715Smrg if (quote_around) 50106747b715Smrg length += backslashes + 1; 50116747b715Smrg 50126747b715Smrg quoted_string = XMALLOC (char, length + 1); 50136747b715Smrg 50146747b715Smrg p = quoted_string; 50156747b715Smrg backslashes = 0; 50166747b715Smrg if (quote_around) 50176747b715Smrg *p++ = '"'; 50186747b715Smrg for (s = string; *s != '\0'; s++) 50196747b715Smrg { 50206747b715Smrg char c = *s; 50216747b715Smrg if (c == '"') 50226747b715Smrg { 50236747b715Smrg unsigned int j; 50246747b715Smrg for (j = backslashes + 1; j > 0; j--) 50256747b715Smrg *p++ = '\\'; 50266747b715Smrg } 50276747b715Smrg *p++ = c; 50286747b715Smrg if (c == '\\') 50296747b715Smrg backslashes++; 50306747b715Smrg else 50316747b715Smrg backslashes = 0; 50326747b715Smrg } 50336747b715Smrg if (quote_around) 50346747b715Smrg { 50356747b715Smrg unsigned int j; 50366747b715Smrg for (j = backslashes; j > 0; j--) 50376747b715Smrg *p++ = '\\'; 50386747b715Smrg *p++ = '"'; 50396747b715Smrg } 50406747b715Smrg *p = '\0'; 50416747b715Smrg 50426747b715Smrg new_argv[i] = quoted_string; 50436747b715Smrg } 50446747b715Smrg else 50456747b715Smrg new_argv[i] = (char *) string; 50466747b715Smrg } 50476747b715Smrg new_argv[argc] = NULL; 50486747b715Smrg 50496747b715Smrg return new_argv; 50506747b715Smrg} 50516747b715SmrgEOF 50526747b715Smrg ;; 50536747b715Smrg esac 50546747b715Smrg 50556747b715Smrg cat <<"EOF" 50566747b715Smrgvoid lt_dump_script (FILE* f) 50576747b715Smrg{ 50586747b715SmrgEOF 50596747b715Smrg func_emit_wrapper yes | 50606747b715Smrg $SED -e 's/\([\\"]\)/\\\1/g' \ 50616747b715Smrg -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' 506205b261ecSmrg 50636747b715Smrg cat <<"EOF" 50646747b715Smrg} 50654642e01fSmrgEOF 50664642e01fSmrg} 50674642e01fSmrg# end: func_emit_cwrapperexe_src 506805b261ecSmrg 50696747b715Smrg# func_win32_import_lib_p ARG 50706747b715Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd 50716747b715Smrgfunc_win32_import_lib_p () 50726747b715Smrg{ 50736747b715Smrg $opt_debug 50746747b715Smrg case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 50756747b715Smrg *import*) : ;; 50766747b715Smrg *) false ;; 50776747b715Smrg esac 50786747b715Smrg} 50796747b715Smrg 50804642e01fSmrg# func_mode_link arg... 50814642e01fSmrgfunc_mode_link () 50824642e01fSmrg{ 50834642e01fSmrg $opt_debug 50844642e01fSmrg case $host in 50854642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 50864642e01fSmrg # It is impossible to link a dll without this setting, and 50874642e01fSmrg # we shouldn't force the makefile maintainer to figure out 50884642e01fSmrg # which system we are compiling for in order to pass an extra 50894642e01fSmrg # flag for every libtool invocation. 50904642e01fSmrg # allow_undefined=no 509105b261ecSmrg 50924642e01fSmrg # FIXME: Unfortunately, there are problems with the above when trying 50934642e01fSmrg # to make a dll which has undefined symbols, in which case not 50944642e01fSmrg # even a static library is built. For now, we need to specify 50954642e01fSmrg # -no-undefined on the libtool link line when we can be certain 50964642e01fSmrg # that all symbols are satisfied, otherwise we get a static library. 50974642e01fSmrg allow_undefined=yes 50984642e01fSmrg ;; 50994642e01fSmrg *) 51004642e01fSmrg allow_undefined=yes 51014642e01fSmrg ;; 51024642e01fSmrg esac 51034642e01fSmrg libtool_args=$nonopt 51044642e01fSmrg base_compile="$nonopt $@" 51054642e01fSmrg compile_command=$nonopt 51064642e01fSmrg finalize_command=$nonopt 510705b261ecSmrg 51084642e01fSmrg compile_rpath= 51094642e01fSmrg finalize_rpath= 51104642e01fSmrg compile_shlibpath= 51114642e01fSmrg finalize_shlibpath= 51124642e01fSmrg convenience= 51134642e01fSmrg old_convenience= 51144642e01fSmrg deplibs= 51154642e01fSmrg old_deplibs= 51164642e01fSmrg compiler_flags= 51174642e01fSmrg linker_flags= 51184642e01fSmrg dllsearchpath= 51194642e01fSmrg lib_search_path=`pwd` 51204642e01fSmrg inst_prefix_dir= 51214642e01fSmrg new_inherited_linker_flags= 512205b261ecSmrg 51234642e01fSmrg avoid_version=no 51246747b715Smrg bindir= 51254642e01fSmrg dlfiles= 51264642e01fSmrg dlprefiles= 51274642e01fSmrg dlself=no 51284642e01fSmrg export_dynamic=no 51294642e01fSmrg export_symbols= 51304642e01fSmrg export_symbols_regex= 51314642e01fSmrg generated= 51324642e01fSmrg libobjs= 51334642e01fSmrg ltlibs= 51344642e01fSmrg module=no 51354642e01fSmrg no_install=no 51364642e01fSmrg objs= 51374642e01fSmrg non_pic_objects= 51384642e01fSmrg precious_files_regex= 51394642e01fSmrg prefer_static_libs=no 51404642e01fSmrg preload=no 51414642e01fSmrg prev= 51424642e01fSmrg prevarg= 51434642e01fSmrg release= 51444642e01fSmrg rpath= 51454642e01fSmrg xrpath= 51464642e01fSmrg perm_rpath= 51474642e01fSmrg temp_rpath= 51484642e01fSmrg thread_safe=no 51494642e01fSmrg vinfo= 51504642e01fSmrg vinfo_number=no 51514642e01fSmrg weak_libs= 51524642e01fSmrg single_module="${wl}-single_module" 51534642e01fSmrg func_infer_tag $base_compile 515405b261ecSmrg 51554642e01fSmrg # We need to know -static, to get the right output filenames. 51564642e01fSmrg for arg 51574642e01fSmrg do 51584642e01fSmrg case $arg in 51594642e01fSmrg -shared) 51604642e01fSmrg test "$build_libtool_libs" != yes && \ 51614642e01fSmrg func_fatal_configuration "can not build a shared library" 51624642e01fSmrg build_old_libs=no 51634642e01fSmrg break 51644642e01fSmrg ;; 51654642e01fSmrg -all-static | -static | -static-libtool-libs) 51664642e01fSmrg case $arg in 51674642e01fSmrg -all-static) 51684642e01fSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 51694642e01fSmrg func_warning "complete static linking is impossible in this configuration" 51704642e01fSmrg fi 51714642e01fSmrg if test -n "$link_static_flag"; then 51724642e01fSmrg dlopen_self=$dlopen_self_static 51734642e01fSmrg fi 51744642e01fSmrg prefer_static_libs=yes 51754642e01fSmrg ;; 51764642e01fSmrg -static) 51774642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 51784642e01fSmrg dlopen_self=$dlopen_self_static 51794642e01fSmrg fi 51804642e01fSmrg prefer_static_libs=built 51814642e01fSmrg ;; 51824642e01fSmrg -static-libtool-libs) 51834642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 51844642e01fSmrg dlopen_self=$dlopen_self_static 51854642e01fSmrg fi 51864642e01fSmrg prefer_static_libs=yes 51874642e01fSmrg ;; 51884642e01fSmrg esac 51894642e01fSmrg build_libtool_libs=no 51904642e01fSmrg build_old_libs=yes 51914642e01fSmrg break 51924642e01fSmrg ;; 51934642e01fSmrg esac 51944642e01fSmrg done 519505b261ecSmrg 51964642e01fSmrg # See if our shared archives depend on static archives. 51974642e01fSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 519805b261ecSmrg 51994642e01fSmrg # Go through the arguments, transforming them on the way. 52004642e01fSmrg while test "$#" -gt 0; do 52014642e01fSmrg arg="$1" 52024642e01fSmrg shift 52034642e01fSmrg func_quote_for_eval "$arg" 52044642e01fSmrg qarg=$func_quote_for_eval_unquoted_result 52054642e01fSmrg func_append libtool_args " $func_quote_for_eval_result" 520605b261ecSmrg 52074642e01fSmrg # If the previous option needs an argument, assign it. 52084642e01fSmrg if test -n "$prev"; then 52094642e01fSmrg case $prev in 52104642e01fSmrg output) 52114642e01fSmrg func_append compile_command " @OUTPUT@" 52124642e01fSmrg func_append finalize_command " @OUTPUT@" 52134642e01fSmrg ;; 52144642e01fSmrg esac 521505b261ecSmrg 52164642e01fSmrg case $prev in 52176747b715Smrg bindir) 52186747b715Smrg bindir="$arg" 52196747b715Smrg prev= 52206747b715Smrg continue 52216747b715Smrg ;; 52224642e01fSmrg dlfiles|dlprefiles) 52234642e01fSmrg if test "$preload" = no; then 52244642e01fSmrg # Add the symbol object into the linking commands. 52254642e01fSmrg func_append compile_command " @SYMFILE@" 52264642e01fSmrg func_append finalize_command " @SYMFILE@" 52274642e01fSmrg preload=yes 522805b261ecSmrg fi 52294642e01fSmrg case $arg in 52304642e01fSmrg *.la | *.lo) ;; # We handle these cases below. 52314642e01fSmrg force) 52324642e01fSmrg if test "$dlself" = no; then 52334642e01fSmrg dlself=needless 52344642e01fSmrg export_dynamic=yes 52354642e01fSmrg fi 52364642e01fSmrg prev= 52374642e01fSmrg continue 52384642e01fSmrg ;; 52394642e01fSmrg self) 52404642e01fSmrg if test "$prev" = dlprefiles; then 52414642e01fSmrg dlself=yes 52424642e01fSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 52434642e01fSmrg dlself=yes 52444642e01fSmrg else 52454642e01fSmrg dlself=needless 52464642e01fSmrg export_dynamic=yes 52474642e01fSmrg fi 52484642e01fSmrg prev= 52494642e01fSmrg continue 52504642e01fSmrg ;; 52514642e01fSmrg *) 52524642e01fSmrg if test "$prev" = dlfiles; then 52536747b715Smrg func_append dlfiles " $arg" 52544642e01fSmrg else 52556747b715Smrg func_append dlprefiles " $arg" 52564642e01fSmrg fi 52574642e01fSmrg prev= 52584642e01fSmrg continue 52594642e01fSmrg ;; 52604642e01fSmrg esac 52614642e01fSmrg ;; 52624642e01fSmrg expsyms) 52634642e01fSmrg export_symbols="$arg" 52644642e01fSmrg test -f "$arg" \ 52654642e01fSmrg || func_fatal_error "symbol file \`$arg' does not exist" 52664642e01fSmrg prev= 52674642e01fSmrg continue 52684642e01fSmrg ;; 52694642e01fSmrg expsyms_regex) 52704642e01fSmrg export_symbols_regex="$arg" 52714642e01fSmrg prev= 52724642e01fSmrg continue 52734642e01fSmrg ;; 52744642e01fSmrg framework) 527505b261ecSmrg case $host in 52764642e01fSmrg *-*-darwin*) 52774642e01fSmrg case "$deplibs " in 52784642e01fSmrg *" $qarg.ltframework "*) ;; 52796747b715Smrg *) func_append deplibs " $qarg.ltframework" # this is fixed later 52804642e01fSmrg ;; 52814642e01fSmrg esac 52824642e01fSmrg ;; 528305b261ecSmrg esac 52844642e01fSmrg prev= 52854642e01fSmrg continue 528605b261ecSmrg ;; 52874642e01fSmrg inst_prefix) 52884642e01fSmrg inst_prefix_dir="$arg" 52894642e01fSmrg prev= 52904642e01fSmrg continue 529105b261ecSmrg ;; 52924642e01fSmrg objectlist) 52934642e01fSmrg if test -f "$arg"; then 52944642e01fSmrg save_arg=$arg 52954642e01fSmrg moreargs= 52964642e01fSmrg for fil in `cat "$save_arg"` 52974642e01fSmrg do 52986747b715Smrg# func_append moreargs " $fil" 52994642e01fSmrg arg=$fil 53004642e01fSmrg # A libtool-controlled object. 530105b261ecSmrg 53024642e01fSmrg # Check to see that this really is a libtool object. 53034642e01fSmrg if func_lalib_unsafe_p "$arg"; then 53044642e01fSmrg pic_object= 53054642e01fSmrg non_pic_object= 530605b261ecSmrg 53074642e01fSmrg # Read the .lo file 53084642e01fSmrg func_source "$arg" 530905b261ecSmrg 53104642e01fSmrg if test -z "$pic_object" || 53114642e01fSmrg test -z "$non_pic_object" || 53124642e01fSmrg test "$pic_object" = none && 53134642e01fSmrg test "$non_pic_object" = none; then 53144642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 53154642e01fSmrg fi 531605b261ecSmrg 53174642e01fSmrg # Extract subdirectory from the argument. 53184642e01fSmrg func_dirname "$arg" "/" "" 53194642e01fSmrg xdir="$func_dirname_result" 532005b261ecSmrg 53214642e01fSmrg if test "$pic_object" != none; then 53224642e01fSmrg # Prepend the subdirectory the object is found in. 53234642e01fSmrg pic_object="$xdir$pic_object" 532405b261ecSmrg 53254642e01fSmrg if test "$prev" = dlfiles; then 53264642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 53276747b715Smrg func_append dlfiles " $pic_object" 53284642e01fSmrg prev= 53294642e01fSmrg continue 53304642e01fSmrg else 53314642e01fSmrg # If libtool objects are unsupported, then we need to preload. 53324642e01fSmrg prev=dlprefiles 53334642e01fSmrg fi 53344642e01fSmrg fi 533505b261ecSmrg 53364642e01fSmrg # CHECK ME: I think I busted this. -Ossama 53374642e01fSmrg if test "$prev" = dlprefiles; then 53384642e01fSmrg # Preload the old-style object. 53396747b715Smrg func_append dlprefiles " $pic_object" 53404642e01fSmrg prev= 53414642e01fSmrg fi 534205b261ecSmrg 53434642e01fSmrg # A PIC object. 53444642e01fSmrg func_append libobjs " $pic_object" 53454642e01fSmrg arg="$pic_object" 53464642e01fSmrg fi 534705b261ecSmrg 53484642e01fSmrg # Non-PIC object. 53494642e01fSmrg if test "$non_pic_object" != none; then 53504642e01fSmrg # Prepend the subdirectory the object is found in. 53514642e01fSmrg non_pic_object="$xdir$non_pic_object" 535205b261ecSmrg 53534642e01fSmrg # A standard non-PIC object 53544642e01fSmrg func_append non_pic_objects " $non_pic_object" 53554642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 53564642e01fSmrg arg="$non_pic_object" 53574642e01fSmrg fi 53584642e01fSmrg else 53594642e01fSmrg # If the PIC object exists, use it instead. 53604642e01fSmrg # $xdir was prepended to $pic_object above. 53614642e01fSmrg non_pic_object="$pic_object" 53624642e01fSmrg func_append non_pic_objects " $non_pic_object" 53634642e01fSmrg fi 53644642e01fSmrg else 53654642e01fSmrg # Only an error if not doing a dry-run. 53664642e01fSmrg if $opt_dry_run; then 53674642e01fSmrg # Extract subdirectory from the argument. 53684642e01fSmrg func_dirname "$arg" "/" "" 53694642e01fSmrg xdir="$func_dirname_result" 53704642e01fSmrg 53714642e01fSmrg func_lo2o "$arg" 53724642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 53734642e01fSmrg non_pic_object=$xdir$func_lo2o_result 53744642e01fSmrg func_append libobjs " $pic_object" 53754642e01fSmrg func_append non_pic_objects " $non_pic_object" 53764642e01fSmrg else 53774642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 53784642e01fSmrg fi 53794642e01fSmrg fi 53804642e01fSmrg done 538105b261ecSmrg else 53824642e01fSmrg func_fatal_error "link input file \`$arg' does not exist" 538305b261ecSmrg fi 53844642e01fSmrg arg=$save_arg 53854642e01fSmrg prev= 53864642e01fSmrg continue 53874642e01fSmrg ;; 53884642e01fSmrg precious_regex) 53894642e01fSmrg precious_files_regex="$arg" 53904642e01fSmrg prev= 53914642e01fSmrg continue 53924642e01fSmrg ;; 53934642e01fSmrg release) 53944642e01fSmrg release="-$arg" 53954642e01fSmrg prev= 53964642e01fSmrg continue 53974642e01fSmrg ;; 53984642e01fSmrg rpath | xrpath) 53994642e01fSmrg # We need an absolute path. 54004642e01fSmrg case $arg in 54014642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 54024642e01fSmrg *) 54034642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 54044642e01fSmrg ;; 54054642e01fSmrg esac 54064642e01fSmrg if test "$prev" = rpath; then 54074642e01fSmrg case "$rpath " in 54084642e01fSmrg *" $arg "*) ;; 54096747b715Smrg *) func_append rpath " $arg" ;; 54104642e01fSmrg esac 541105b261ecSmrg else 54124642e01fSmrg case "$xrpath " in 54134642e01fSmrg *" $arg "*) ;; 54146747b715Smrg *) func_append xrpath " $arg" ;; 54154642e01fSmrg esac 541605b261ecSmrg fi 54174642e01fSmrg prev= 54184642e01fSmrg continue 54194642e01fSmrg ;; 54204642e01fSmrg shrext) 54214642e01fSmrg shrext_cmds="$arg" 54224642e01fSmrg prev= 54234642e01fSmrg continue 54244642e01fSmrg ;; 54254642e01fSmrg weak) 54266747b715Smrg func_append weak_libs " $arg" 54274642e01fSmrg prev= 54284642e01fSmrg continue 54294642e01fSmrg ;; 54304642e01fSmrg xcclinker) 54316747b715Smrg func_append linker_flags " $qarg" 54326747b715Smrg func_append compiler_flags " $qarg" 54334642e01fSmrg prev= 54344642e01fSmrg func_append compile_command " $qarg" 54354642e01fSmrg func_append finalize_command " $qarg" 54364642e01fSmrg continue 54374642e01fSmrg ;; 54384642e01fSmrg xcompiler) 54396747b715Smrg func_append compiler_flags " $qarg" 54404642e01fSmrg prev= 54414642e01fSmrg func_append compile_command " $qarg" 54424642e01fSmrg func_append finalize_command " $qarg" 54434642e01fSmrg continue 54444642e01fSmrg ;; 54454642e01fSmrg xlinker) 54466747b715Smrg func_append linker_flags " $qarg" 54476747b715Smrg func_append compiler_flags " $wl$qarg" 54484642e01fSmrg prev= 54494642e01fSmrg func_append compile_command " $wl$qarg" 54504642e01fSmrg func_append finalize_command " $wl$qarg" 54514642e01fSmrg continue 54524642e01fSmrg ;; 54534642e01fSmrg *) 54544642e01fSmrg eval "$prev=\"\$arg\"" 54554642e01fSmrg prev= 54564642e01fSmrg continue 54574642e01fSmrg ;; 545805b261ecSmrg esac 54594642e01fSmrg fi # test -n "$prev" 546005b261ecSmrg 54614642e01fSmrg prevarg="$arg" 546205b261ecSmrg 54634642e01fSmrg case $arg in 54644642e01fSmrg -all-static) 54654642e01fSmrg if test -n "$link_static_flag"; then 54664642e01fSmrg # See comment for -static flag below, for more details. 54674642e01fSmrg func_append compile_command " $link_static_flag" 54684642e01fSmrg func_append finalize_command " $link_static_flag" 54694642e01fSmrg fi 54704642e01fSmrg continue 54714642e01fSmrg ;; 547205b261ecSmrg 54734642e01fSmrg -allow-undefined) 54744642e01fSmrg # FIXME: remove this flag sometime in the future. 54754642e01fSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 54764642e01fSmrg ;; 547705b261ecSmrg 54784642e01fSmrg -avoid-version) 54794642e01fSmrg avoid_version=yes 54804642e01fSmrg continue 54814642e01fSmrg ;; 548205b261ecSmrg 54836747b715Smrg -bindir) 54846747b715Smrg prev=bindir 54856747b715Smrg continue 54866747b715Smrg ;; 54876747b715Smrg 54884642e01fSmrg -dlopen) 54894642e01fSmrg prev=dlfiles 54904642e01fSmrg continue 54914642e01fSmrg ;; 549205b261ecSmrg 54934642e01fSmrg -dlpreopen) 54944642e01fSmrg prev=dlprefiles 54954642e01fSmrg continue 54964642e01fSmrg ;; 549705b261ecSmrg 54984642e01fSmrg -export-dynamic) 54994642e01fSmrg export_dynamic=yes 55004642e01fSmrg continue 55014642e01fSmrg ;; 550205b261ecSmrg 55034642e01fSmrg -export-symbols | -export-symbols-regex) 55044642e01fSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 55054642e01fSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 55064642e01fSmrg fi 55074642e01fSmrg if test "X$arg" = "X-export-symbols"; then 55084642e01fSmrg prev=expsyms 55094642e01fSmrg else 55104642e01fSmrg prev=expsyms_regex 55114642e01fSmrg fi 55124642e01fSmrg continue 55134642e01fSmrg ;; 551405b261ecSmrg 55154642e01fSmrg -framework) 55164642e01fSmrg prev=framework 55174642e01fSmrg continue 55184642e01fSmrg ;; 551905b261ecSmrg 55204642e01fSmrg -inst-prefix-dir) 55214642e01fSmrg prev=inst_prefix 55224642e01fSmrg continue 55234642e01fSmrg ;; 552405b261ecSmrg 55254642e01fSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 55264642e01fSmrg # so, if we see these flags be careful not to treat them like -L 55274642e01fSmrg -L[A-Z][A-Z]*:*) 55284642e01fSmrg case $with_gcc/$host in 55294642e01fSmrg no/*-*-irix* | /*-*-irix*) 55304642e01fSmrg func_append compile_command " $arg" 55314642e01fSmrg func_append finalize_command " $arg" 55324642e01fSmrg ;; 55334642e01fSmrg esac 55344642e01fSmrg continue 55354642e01fSmrg ;; 553605b261ecSmrg 55374642e01fSmrg -L*) 55386747b715Smrg func_stripname "-L" '' "$arg" 55396747b715Smrg if test -z "$func_stripname_result"; then 55404642e01fSmrg if test "$#" -gt 0; then 55414642e01fSmrg func_fatal_error "require no space between \`-L' and \`$1'" 55424642e01fSmrg else 55434642e01fSmrg func_fatal_error "need path for \`-L' option" 55444642e01fSmrg fi 55454642e01fSmrg fi 55466747b715Smrg func_resolve_sysroot "$func_stripname_result" 55476747b715Smrg dir=$func_resolve_sysroot_result 55484642e01fSmrg # We need an absolute path. 55494642e01fSmrg case $dir in 55504642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 55514642e01fSmrg *) 55524642e01fSmrg absdir=`cd "$dir" && pwd` 55534642e01fSmrg test -z "$absdir" && \ 55544642e01fSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 55554642e01fSmrg dir="$absdir" 55564642e01fSmrg ;; 55574642e01fSmrg esac 55584642e01fSmrg case "$deplibs " in 55596747b715Smrg *" -L$dir "* | *" $arg "*) 55606747b715Smrg # Will only happen for absolute or sysroot arguments 55616747b715Smrg ;; 55624642e01fSmrg *) 55636747b715Smrg # Preserve sysroot, but never include relative directories 55646747b715Smrg case $dir in 55656747b715Smrg [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 55666747b715Smrg *) func_append deplibs " -L$dir" ;; 55676747b715Smrg esac 55686747b715Smrg func_append lib_search_path " $dir" 55694642e01fSmrg ;; 55704642e01fSmrg esac 55714642e01fSmrg case $host in 55724642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 55736747b715Smrg testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 55744642e01fSmrg case :$dllsearchpath: in 55754642e01fSmrg *":$dir:"*) ;; 55764642e01fSmrg ::) dllsearchpath=$dir;; 55776747b715Smrg *) func_append dllsearchpath ":$dir";; 55784642e01fSmrg esac 55794642e01fSmrg case :$dllsearchpath: in 55804642e01fSmrg *":$testbindir:"*) ;; 55814642e01fSmrg ::) dllsearchpath=$testbindir;; 55826747b715Smrg *) func_append dllsearchpath ":$testbindir";; 55834642e01fSmrg esac 55844642e01fSmrg ;; 55854642e01fSmrg esac 55864642e01fSmrg continue 55874642e01fSmrg ;; 558805b261ecSmrg 55894642e01fSmrg -l*) 55904642e01fSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 55914642e01fSmrg case $host in 55926747b715Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 55934642e01fSmrg # These systems don't actually have a C or math library (as such) 55944642e01fSmrg continue 55954642e01fSmrg ;; 55964642e01fSmrg *-*-os2*) 55974642e01fSmrg # These systems don't actually have a C library (as such) 55984642e01fSmrg test "X$arg" = "X-lc" && continue 55994642e01fSmrg ;; 56004642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56014642e01fSmrg # Do not include libc due to us having libc/libc_r. 56024642e01fSmrg test "X$arg" = "X-lc" && continue 56034642e01fSmrg ;; 56044642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 56054642e01fSmrg # Rhapsody C and math libraries are in the System framework 56066747b715Smrg func_append deplibs " System.ltframework" 56074642e01fSmrg continue 56084642e01fSmrg ;; 56094642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 56104642e01fSmrg # Causes problems with __ctype 56114642e01fSmrg test "X$arg" = "X-lc" && continue 56124642e01fSmrg ;; 56134642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 56144642e01fSmrg # Compiler inserts libc in the correct place for threads to work 56154642e01fSmrg test "X$arg" = "X-lc" && continue 56164642e01fSmrg ;; 56174642e01fSmrg esac 56184642e01fSmrg elif test "X$arg" = "X-lc_r"; then 56194642e01fSmrg case $host in 56204642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56214642e01fSmrg # Do not include libc_r directly, use -pthread flag. 56224642e01fSmrg continue 56234642e01fSmrg ;; 56244642e01fSmrg esac 56254642e01fSmrg fi 56266747b715Smrg func_append deplibs " $arg" 56274642e01fSmrg continue 56284642e01fSmrg ;; 562905b261ecSmrg 56304642e01fSmrg -module) 56314642e01fSmrg module=yes 56324642e01fSmrg continue 56334642e01fSmrg ;; 563405b261ecSmrg 56354642e01fSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 56364642e01fSmrg # classes, name mangling, and exception handling. 56374642e01fSmrg # Darwin uses the -arch flag to determine output architecture. 56386747b715Smrg -model|-arch|-isysroot|--sysroot) 56396747b715Smrg func_append compiler_flags " $arg" 56404642e01fSmrg func_append compile_command " $arg" 56414642e01fSmrg func_append finalize_command " $arg" 56424642e01fSmrg prev=xcompiler 56434642e01fSmrg continue 56444642e01fSmrg ;; 564505b261ecSmrg 56464642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 56476747b715Smrg func_append compiler_flags " $arg" 56484642e01fSmrg func_append compile_command " $arg" 56494642e01fSmrg func_append finalize_command " $arg" 56504642e01fSmrg case "$new_inherited_linker_flags " in 56514642e01fSmrg *" $arg "*) ;; 56526747b715Smrg * ) func_append new_inherited_linker_flags " $arg" ;; 56534642e01fSmrg esac 56544642e01fSmrg continue 56554642e01fSmrg ;; 565605b261ecSmrg 56574642e01fSmrg -multi_module) 56584642e01fSmrg single_module="${wl}-multi_module" 56594642e01fSmrg continue 56604642e01fSmrg ;; 566105b261ecSmrg 56624642e01fSmrg -no-fast-install) 56634642e01fSmrg fast_install=no 56644642e01fSmrg continue 56654642e01fSmrg ;; 566605b261ecSmrg 56674642e01fSmrg -no-install) 56684642e01fSmrg case $host in 56694642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 56704642e01fSmrg # The PATH hackery in wrapper scripts is required on Windows 56714642e01fSmrg # and Darwin in order for the loader to find any dlls it needs. 56724642e01fSmrg func_warning "\`-no-install' is ignored for $host" 56734642e01fSmrg func_warning "assuming \`-no-fast-install' instead" 56744642e01fSmrg fast_install=no 56754642e01fSmrg ;; 56764642e01fSmrg *) no_install=yes ;; 56774642e01fSmrg esac 56784642e01fSmrg continue 56794642e01fSmrg ;; 568005b261ecSmrg 56814642e01fSmrg -no-undefined) 56824642e01fSmrg allow_undefined=no 56834642e01fSmrg continue 56844642e01fSmrg ;; 568505b261ecSmrg 56864642e01fSmrg -objectlist) 56874642e01fSmrg prev=objectlist 56884642e01fSmrg continue 56894642e01fSmrg ;; 569005b261ecSmrg 56914642e01fSmrg -o) prev=output ;; 569205b261ecSmrg 56934642e01fSmrg -precious-files-regex) 56944642e01fSmrg prev=precious_regex 56954642e01fSmrg continue 56964642e01fSmrg ;; 569705b261ecSmrg 56984642e01fSmrg -release) 56994642e01fSmrg prev=release 57004642e01fSmrg continue 57014642e01fSmrg ;; 570205b261ecSmrg 57034642e01fSmrg -rpath) 57044642e01fSmrg prev=rpath 57054642e01fSmrg continue 57064642e01fSmrg ;; 570705b261ecSmrg 57084642e01fSmrg -R) 57094642e01fSmrg prev=xrpath 57104642e01fSmrg continue 57114642e01fSmrg ;; 571205b261ecSmrg 57134642e01fSmrg -R*) 57144642e01fSmrg func_stripname '-R' '' "$arg" 57154642e01fSmrg dir=$func_stripname_result 57164642e01fSmrg # We need an absolute path. 57174642e01fSmrg case $dir in 57184642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 57196747b715Smrg =*) 57206747b715Smrg func_stripname '=' '' "$dir" 57216747b715Smrg dir=$lt_sysroot$func_stripname_result 57226747b715Smrg ;; 57234642e01fSmrg *) 57244642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 57254642e01fSmrg ;; 57264642e01fSmrg esac 57274642e01fSmrg case "$xrpath " in 57284642e01fSmrg *" $dir "*) ;; 57296747b715Smrg *) func_append xrpath " $dir" ;; 57304642e01fSmrg esac 57314642e01fSmrg continue 57324642e01fSmrg ;; 573305b261ecSmrg 57344642e01fSmrg -shared) 57354642e01fSmrg # The effects of -shared are defined in a previous loop. 57364642e01fSmrg continue 57374642e01fSmrg ;; 573805b261ecSmrg 57394642e01fSmrg -shrext) 57404642e01fSmrg prev=shrext 57414642e01fSmrg continue 57424642e01fSmrg ;; 574305b261ecSmrg 57444642e01fSmrg -static | -static-libtool-libs) 57454642e01fSmrg # The effects of -static are defined in a previous loop. 57464642e01fSmrg # We used to do the same as -all-static on platforms that 57474642e01fSmrg # didn't have a PIC flag, but the assumption that the effects 57484642e01fSmrg # would be equivalent was wrong. It would break on at least 57494642e01fSmrg # Digital Unix and AIX. 57504642e01fSmrg continue 57514642e01fSmrg ;; 575205b261ecSmrg 57534642e01fSmrg -thread-safe) 57544642e01fSmrg thread_safe=yes 57554642e01fSmrg continue 57564642e01fSmrg ;; 575705b261ecSmrg 57584642e01fSmrg -version-info) 57594642e01fSmrg prev=vinfo 57604642e01fSmrg continue 57614642e01fSmrg ;; 576205b261ecSmrg 57634642e01fSmrg -version-number) 57644642e01fSmrg prev=vinfo 57654642e01fSmrg vinfo_number=yes 57664642e01fSmrg continue 57674642e01fSmrg ;; 576805b261ecSmrg 57694642e01fSmrg -weak) 57704642e01fSmrg prev=weak 57714642e01fSmrg continue 57724642e01fSmrg ;; 577305b261ecSmrg 57744642e01fSmrg -Wc,*) 57754642e01fSmrg func_stripname '-Wc,' '' "$arg" 57764642e01fSmrg args=$func_stripname_result 57774642e01fSmrg arg= 57784642e01fSmrg save_ifs="$IFS"; IFS=',' 57794642e01fSmrg for flag in $args; do 57804642e01fSmrg IFS="$save_ifs" 57814642e01fSmrg func_quote_for_eval "$flag" 57826747b715Smrg func_append arg " $func_quote_for_eval_result" 57836747b715Smrg func_append compiler_flags " $func_quote_for_eval_result" 57844642e01fSmrg done 57854642e01fSmrg IFS="$save_ifs" 57864642e01fSmrg func_stripname ' ' '' "$arg" 57874642e01fSmrg arg=$func_stripname_result 57884642e01fSmrg ;; 578905b261ecSmrg 57904642e01fSmrg -Wl,*) 57914642e01fSmrg func_stripname '-Wl,' '' "$arg" 57924642e01fSmrg args=$func_stripname_result 57934642e01fSmrg arg= 57944642e01fSmrg save_ifs="$IFS"; IFS=',' 57954642e01fSmrg for flag in $args; do 57964642e01fSmrg IFS="$save_ifs" 57974642e01fSmrg func_quote_for_eval "$flag" 57986747b715Smrg func_append arg " $wl$func_quote_for_eval_result" 57996747b715Smrg func_append compiler_flags " $wl$func_quote_for_eval_result" 58006747b715Smrg func_append linker_flags " $func_quote_for_eval_result" 58014642e01fSmrg done 58024642e01fSmrg IFS="$save_ifs" 58034642e01fSmrg func_stripname ' ' '' "$arg" 58044642e01fSmrg arg=$func_stripname_result 58054642e01fSmrg ;; 580605b261ecSmrg 58074642e01fSmrg -Xcompiler) 58084642e01fSmrg prev=xcompiler 58094642e01fSmrg continue 58104642e01fSmrg ;; 581105b261ecSmrg 58124642e01fSmrg -Xlinker) 58134642e01fSmrg prev=xlinker 58144642e01fSmrg continue 58154642e01fSmrg ;; 581605b261ecSmrg 58174642e01fSmrg -XCClinker) 58184642e01fSmrg prev=xcclinker 58194642e01fSmrg continue 58204642e01fSmrg ;; 582105b261ecSmrg 58224642e01fSmrg # -msg_* for osf cc 58234642e01fSmrg -msg_*) 58244642e01fSmrg func_quote_for_eval "$arg" 58254642e01fSmrg arg="$func_quote_for_eval_result" 58264642e01fSmrg ;; 582705b261ecSmrg 58286747b715Smrg # Flags to be passed through unchanged, with rationale: 58296747b715Smrg # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 58306747b715Smrg # -r[0-9][0-9]* specify processor for the SGI compiler 58316747b715Smrg # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 58326747b715Smrg # +DA*, +DD* enable 64-bit mode for the HP compiler 58336747b715Smrg # -q* compiler args for the IBM compiler 58346747b715Smrg # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 58356747b715Smrg # -F/path path to uninstalled frameworks, gcc on darwin 58366747b715Smrg # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 58376747b715Smrg # @file GCC response files 58386747b715Smrg # -tp=* Portland pgcc target processor selection 58396747b715Smrg # --sysroot=* for sysroot support 58406747b715Smrg # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 58414642e01fSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 58426747b715Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 58436747b715Smrg -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 58444642e01fSmrg func_quote_for_eval "$arg" 58454642e01fSmrg arg="$func_quote_for_eval_result" 58464642e01fSmrg func_append compile_command " $arg" 58474642e01fSmrg func_append finalize_command " $arg" 58486747b715Smrg func_append compiler_flags " $arg" 58494642e01fSmrg continue 58504642e01fSmrg ;; 585105b261ecSmrg 58524642e01fSmrg # Some other compiler flag. 58534642e01fSmrg -* | +*) 58544642e01fSmrg func_quote_for_eval "$arg" 58554642e01fSmrg arg="$func_quote_for_eval_result" 58564642e01fSmrg ;; 585705b261ecSmrg 58584642e01fSmrg *.$objext) 58594642e01fSmrg # A standard object. 58606747b715Smrg func_append objs " $arg" 58614642e01fSmrg ;; 586205b261ecSmrg 58634642e01fSmrg *.lo) 58644642e01fSmrg # A libtool-controlled object. 586505b261ecSmrg 58664642e01fSmrg # Check to see that this really is a libtool object. 58674642e01fSmrg if func_lalib_unsafe_p "$arg"; then 58684642e01fSmrg pic_object= 58694642e01fSmrg non_pic_object= 587005b261ecSmrg 58714642e01fSmrg # Read the .lo file 58724642e01fSmrg func_source "$arg" 587305b261ecSmrg 58744642e01fSmrg if test -z "$pic_object" || 58754642e01fSmrg test -z "$non_pic_object" || 58764642e01fSmrg test "$pic_object" = none && 58774642e01fSmrg test "$non_pic_object" = none; then 58784642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 58794642e01fSmrg fi 588005b261ecSmrg 58814642e01fSmrg # Extract subdirectory from the argument. 58824642e01fSmrg func_dirname "$arg" "/" "" 58834642e01fSmrg xdir="$func_dirname_result" 588405b261ecSmrg 58854642e01fSmrg if test "$pic_object" != none; then 58864642e01fSmrg # Prepend the subdirectory the object is found in. 58874642e01fSmrg pic_object="$xdir$pic_object" 588805b261ecSmrg 58894642e01fSmrg if test "$prev" = dlfiles; then 58904642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 58916747b715Smrg func_append dlfiles " $pic_object" 58924642e01fSmrg prev= 58934642e01fSmrg continue 58944642e01fSmrg else 58954642e01fSmrg # If libtool objects are unsupported, then we need to preload. 58964642e01fSmrg prev=dlprefiles 58974642e01fSmrg fi 58984642e01fSmrg fi 589905b261ecSmrg 59004642e01fSmrg # CHECK ME: I think I busted this. -Ossama 59014642e01fSmrg if test "$prev" = dlprefiles; then 59024642e01fSmrg # Preload the old-style object. 59036747b715Smrg func_append dlprefiles " $pic_object" 59044642e01fSmrg prev= 59054642e01fSmrg fi 590605b261ecSmrg 59074642e01fSmrg # A PIC object. 59084642e01fSmrg func_append libobjs " $pic_object" 59094642e01fSmrg arg="$pic_object" 59104642e01fSmrg fi 591105b261ecSmrg 59124642e01fSmrg # Non-PIC object. 59134642e01fSmrg if test "$non_pic_object" != none; then 59144642e01fSmrg # Prepend the subdirectory the object is found in. 59154642e01fSmrg non_pic_object="$xdir$non_pic_object" 591605b261ecSmrg 59174642e01fSmrg # A standard non-PIC object 59184642e01fSmrg func_append non_pic_objects " $non_pic_object" 59194642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 59204642e01fSmrg arg="$non_pic_object" 59214642e01fSmrg fi 59224642e01fSmrg else 59234642e01fSmrg # If the PIC object exists, use it instead. 59244642e01fSmrg # $xdir was prepended to $pic_object above. 59254642e01fSmrg non_pic_object="$pic_object" 59264642e01fSmrg func_append non_pic_objects " $non_pic_object" 59274642e01fSmrg fi 59284642e01fSmrg else 59294642e01fSmrg # Only an error if not doing a dry-run. 59304642e01fSmrg if $opt_dry_run; then 59314642e01fSmrg # Extract subdirectory from the argument. 59324642e01fSmrg func_dirname "$arg" "/" "" 59334642e01fSmrg xdir="$func_dirname_result" 59344642e01fSmrg 59354642e01fSmrg func_lo2o "$arg" 59364642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 59374642e01fSmrg non_pic_object=$xdir$func_lo2o_result 59384642e01fSmrg func_append libobjs " $pic_object" 59394642e01fSmrg func_append non_pic_objects " $non_pic_object" 59404642e01fSmrg else 59414642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 59424642e01fSmrg fi 59434642e01fSmrg fi 59444642e01fSmrg ;; 59454642e01fSmrg 59464642e01fSmrg *.$libext) 59474642e01fSmrg # An archive. 59486747b715Smrg func_append deplibs " $arg" 59496747b715Smrg func_append old_deplibs " $arg" 59504642e01fSmrg continue 59514642e01fSmrg ;; 59524642e01fSmrg 59534642e01fSmrg *.la) 59544642e01fSmrg # A libtool-controlled library. 59554642e01fSmrg 59566747b715Smrg func_resolve_sysroot "$arg" 59574642e01fSmrg if test "$prev" = dlfiles; then 59584642e01fSmrg # This library was specified with -dlopen. 59596747b715Smrg func_append dlfiles " $func_resolve_sysroot_result" 59604642e01fSmrg prev= 59614642e01fSmrg elif test "$prev" = dlprefiles; then 59624642e01fSmrg # The library was specified with -dlpreopen. 59636747b715Smrg func_append dlprefiles " $func_resolve_sysroot_result" 59644642e01fSmrg prev= 59654642e01fSmrg else 59666747b715Smrg func_append deplibs " $func_resolve_sysroot_result" 59674642e01fSmrg fi 59684642e01fSmrg continue 59694642e01fSmrg ;; 59704642e01fSmrg 59714642e01fSmrg # Some other compiler argument. 59724642e01fSmrg *) 59734642e01fSmrg # Unknown arguments in both finalize_command and compile_command need 59744642e01fSmrg # to be aesthetically quoted because they are evaled later. 59754642e01fSmrg func_quote_for_eval "$arg" 59764642e01fSmrg arg="$func_quote_for_eval_result" 59774642e01fSmrg ;; 59784642e01fSmrg esac # arg 59794642e01fSmrg 59804642e01fSmrg # Now actually substitute the argument into the commands. 59814642e01fSmrg if test -n "$arg"; then 59824642e01fSmrg func_append compile_command " $arg" 59834642e01fSmrg func_append finalize_command " $arg" 59844642e01fSmrg fi 59854642e01fSmrg done # argument parsing loop 59864642e01fSmrg 59874642e01fSmrg test -n "$prev" && \ 59884642e01fSmrg func_fatal_help "the \`$prevarg' option requires an argument" 59894642e01fSmrg 59904642e01fSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 59914642e01fSmrg eval arg=\"$export_dynamic_flag_spec\" 59924642e01fSmrg func_append compile_command " $arg" 59934642e01fSmrg func_append finalize_command " $arg" 59944642e01fSmrg fi 59954642e01fSmrg 59964642e01fSmrg oldlibs= 59974642e01fSmrg # calculate the name of the file, without its directory 59984642e01fSmrg func_basename "$output" 59994642e01fSmrg outputname="$func_basename_result" 60004642e01fSmrg libobjs_save="$libobjs" 60014642e01fSmrg 60024642e01fSmrg if test -n "$shlibpath_var"; then 60034642e01fSmrg # get the directories listed in $shlibpath_var 60046747b715Smrg eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 60054642e01fSmrg else 60064642e01fSmrg shlib_search_path= 60074642e01fSmrg fi 60084642e01fSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 60094642e01fSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 60104642e01fSmrg 60114642e01fSmrg func_dirname "$output" "/" "" 60124642e01fSmrg output_objdir="$func_dirname_result$objdir" 60136747b715Smrg func_to_tool_file "$output_objdir/" 60146747b715Smrg tool_output_objdir=$func_to_tool_file_result 60154642e01fSmrg # Create the object directory. 60164642e01fSmrg func_mkdir_p "$output_objdir" 60174642e01fSmrg 60184642e01fSmrg # Determine the type of output 60194642e01fSmrg case $output in 60204642e01fSmrg "") 60214642e01fSmrg func_fatal_help "you must specify an output file" 60224642e01fSmrg ;; 60234642e01fSmrg *.$libext) linkmode=oldlib ;; 60244642e01fSmrg *.lo | *.$objext) linkmode=obj ;; 60254642e01fSmrg *.la) linkmode=lib ;; 60264642e01fSmrg *) linkmode=prog ;; # Anything else should be a program. 60274642e01fSmrg esac 60284642e01fSmrg 60294642e01fSmrg specialdeplibs= 60304642e01fSmrg 60314642e01fSmrg libs= 60324642e01fSmrg # Find all interdependent deplibs by searching for libraries 60334642e01fSmrg # that are linked more than once (e.g. -la -lb -la) 60344642e01fSmrg for deplib in $deplibs; do 60356747b715Smrg if $opt_preserve_dup_deps ; then 60364642e01fSmrg case "$libs " in 60376747b715Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 60384642e01fSmrg esac 60394642e01fSmrg fi 60406747b715Smrg func_append libs " $deplib" 60414642e01fSmrg done 60424642e01fSmrg 60434642e01fSmrg if test "$linkmode" = lib; then 60444642e01fSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 60454642e01fSmrg 60464642e01fSmrg # Compute libraries that are listed more than once in $predeps 60474642e01fSmrg # $postdeps and mark them as special (i.e., whose duplicates are 60484642e01fSmrg # not to be eliminated). 60494642e01fSmrg pre_post_deps= 60504642e01fSmrg if $opt_duplicate_compiler_generated_deps; then 60514642e01fSmrg for pre_post_dep in $predeps $postdeps; do 60524642e01fSmrg case "$pre_post_deps " in 60536747b715Smrg *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 60544642e01fSmrg esac 60556747b715Smrg func_append pre_post_deps " $pre_post_dep" 60564642e01fSmrg done 60574642e01fSmrg fi 60584642e01fSmrg pre_post_deps= 60594642e01fSmrg fi 60604642e01fSmrg 60614642e01fSmrg deplibs= 60624642e01fSmrg newdependency_libs= 60634642e01fSmrg newlib_search_path= 60644642e01fSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 60654642e01fSmrg notinst_deplibs= # not-installed libtool libraries 60664642e01fSmrg notinst_path= # paths that contain not-installed libtool libraries 60674642e01fSmrg 60684642e01fSmrg case $linkmode in 60694642e01fSmrg lib) 60704642e01fSmrg passes="conv dlpreopen link" 60714642e01fSmrg for file in $dlfiles $dlprefiles; do 60724642e01fSmrg case $file in 60734642e01fSmrg *.la) ;; 60744642e01fSmrg *) 60754642e01fSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 60764642e01fSmrg ;; 60774642e01fSmrg esac 60784642e01fSmrg done 60794642e01fSmrg ;; 60804642e01fSmrg prog) 60814642e01fSmrg compile_deplibs= 60824642e01fSmrg finalize_deplibs= 60834642e01fSmrg alldeplibs=no 60844642e01fSmrg newdlfiles= 60854642e01fSmrg newdlprefiles= 60864642e01fSmrg passes="conv scan dlopen dlpreopen link" 60874642e01fSmrg ;; 60884642e01fSmrg *) passes="conv" 60894642e01fSmrg ;; 60904642e01fSmrg esac 60914642e01fSmrg 60924642e01fSmrg for pass in $passes; do 60934642e01fSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 60944642e01fSmrg # so that -L comes before libs that need it for instance... 60954642e01fSmrg if test "$linkmode,$pass" = "lib,link"; then 60964642e01fSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 60974642e01fSmrg ## order, and fix it there properly 60984642e01fSmrg tmp_deplibs= 60994642e01fSmrg for deplib in $deplibs; do 61004642e01fSmrg tmp_deplibs="$deplib $tmp_deplibs" 61014642e01fSmrg done 61024642e01fSmrg deplibs="$tmp_deplibs" 61034642e01fSmrg fi 61044642e01fSmrg 61054642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 61064642e01fSmrg test "$linkmode,$pass" = "prog,scan"; then 61074642e01fSmrg libs="$deplibs" 61084642e01fSmrg deplibs= 61094642e01fSmrg fi 61104642e01fSmrg if test "$linkmode" = prog; then 61114642e01fSmrg case $pass in 61124642e01fSmrg dlopen) libs="$dlfiles" ;; 61134642e01fSmrg dlpreopen) libs="$dlprefiles" ;; 61146747b715Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 61154642e01fSmrg esac 61164642e01fSmrg fi 61174642e01fSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 61184642e01fSmrg # Collect and forward deplibs of preopened libtool libs 61194642e01fSmrg for lib in $dlprefiles; do 61204642e01fSmrg # Ignore non-libtool-libs 61214642e01fSmrg dependency_libs= 61226747b715Smrg func_resolve_sysroot "$lib" 61234642e01fSmrg case $lib in 61246747b715Smrg *.la) func_source "$func_resolve_sysroot_result" ;; 61254642e01fSmrg esac 61264642e01fSmrg 61274642e01fSmrg # Collect preopened libtool deplibs, except any this library 61284642e01fSmrg # has declared as weak libs 61294642e01fSmrg for deplib in $dependency_libs; do 61306747b715Smrg func_basename "$deplib" 61316747b715Smrg deplib_base=$func_basename_result 61324642e01fSmrg case " $weak_libs " in 61334642e01fSmrg *" $deplib_base "*) ;; 61346747b715Smrg *) func_append deplibs " $deplib" ;; 61354642e01fSmrg esac 61364642e01fSmrg done 61374642e01fSmrg done 61384642e01fSmrg libs="$dlprefiles" 61394642e01fSmrg fi 61404642e01fSmrg if test "$pass" = dlopen; then 61414642e01fSmrg # Collect dlpreopened libraries 61424642e01fSmrg save_deplibs="$deplibs" 61434642e01fSmrg deplibs= 61444642e01fSmrg fi 61454642e01fSmrg 61464642e01fSmrg for deplib in $libs; do 61474642e01fSmrg lib= 61484642e01fSmrg found=no 61494642e01fSmrg case $deplib in 61504642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 61514642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 61524642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 61534642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 61544642e01fSmrg else 61556747b715Smrg func_append compiler_flags " $deplib" 61564642e01fSmrg if test "$linkmode" = lib ; then 61574642e01fSmrg case "$new_inherited_linker_flags " in 61584642e01fSmrg *" $deplib "*) ;; 61596747b715Smrg * ) func_append new_inherited_linker_flags " $deplib" ;; 61604642e01fSmrg esac 61614642e01fSmrg fi 61624642e01fSmrg fi 61634642e01fSmrg continue 61644642e01fSmrg ;; 61654642e01fSmrg -l*) 61664642e01fSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 61674642e01fSmrg func_warning "\`-l' is ignored for archives/objects" 61684642e01fSmrg continue 61694642e01fSmrg fi 61704642e01fSmrg func_stripname '-l' '' "$deplib" 61714642e01fSmrg name=$func_stripname_result 61724642e01fSmrg if test "$linkmode" = lib; then 61734642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 61744642e01fSmrg else 61754642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 61764642e01fSmrg fi 61774642e01fSmrg for searchdir in $searchdirs; do 61784642e01fSmrg for search_ext in .la $std_shrext .so .a; do 61794642e01fSmrg # Search the libtool library 61804642e01fSmrg lib="$searchdir/lib${name}${search_ext}" 61814642e01fSmrg if test -f "$lib"; then 61824642e01fSmrg if test "$search_ext" = ".la"; then 61834642e01fSmrg found=yes 61844642e01fSmrg else 61854642e01fSmrg found=no 61864642e01fSmrg fi 61874642e01fSmrg break 2 61884642e01fSmrg fi 61894642e01fSmrg done 61904642e01fSmrg done 61914642e01fSmrg if test "$found" != yes; then 61924642e01fSmrg # deplib doesn't seem to be a libtool library 61934642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 61944642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 61954642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 61964642e01fSmrg else 61974642e01fSmrg deplibs="$deplib $deplibs" 61984642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 61994642e01fSmrg fi 62004642e01fSmrg continue 62014642e01fSmrg else # deplib is a libtool library 62024642e01fSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 62034642e01fSmrg # We need to do some special things here, and not later. 62044642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 62054642e01fSmrg case " $predeps $postdeps " in 62064642e01fSmrg *" $deplib "*) 62074642e01fSmrg if func_lalib_p "$lib"; then 62084642e01fSmrg library_names= 62094642e01fSmrg old_library= 62104642e01fSmrg func_source "$lib" 62114642e01fSmrg for l in $old_library $library_names; do 62124642e01fSmrg ll="$l" 62134642e01fSmrg done 62144642e01fSmrg if test "X$ll" = "X$old_library" ; then # only static version available 62154642e01fSmrg found=no 62164642e01fSmrg func_dirname "$lib" "" "." 62174642e01fSmrg ladir="$func_dirname_result" 62184642e01fSmrg lib=$ladir/$old_library 62194642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 62204642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 62214642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 62224642e01fSmrg else 62234642e01fSmrg deplibs="$deplib $deplibs" 62244642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 62254642e01fSmrg fi 62264642e01fSmrg continue 62274642e01fSmrg fi 62284642e01fSmrg fi 62294642e01fSmrg ;; 62304642e01fSmrg *) ;; 62314642e01fSmrg esac 62324642e01fSmrg fi 62334642e01fSmrg fi 62344642e01fSmrg ;; # -l 62354642e01fSmrg *.ltframework) 62364642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 62374642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 62384642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 62394642e01fSmrg else 62404642e01fSmrg deplibs="$deplib $deplibs" 62414642e01fSmrg if test "$linkmode" = lib ; then 62424642e01fSmrg case "$new_inherited_linker_flags " in 62434642e01fSmrg *" $deplib "*) ;; 62446747b715Smrg * ) func_append new_inherited_linker_flags " $deplib" ;; 62454642e01fSmrg esac 62464642e01fSmrg fi 62474642e01fSmrg fi 62484642e01fSmrg continue 62494642e01fSmrg ;; 62504642e01fSmrg -L*) 62514642e01fSmrg case $linkmode in 62524642e01fSmrg lib) 62534642e01fSmrg deplibs="$deplib $deplibs" 62544642e01fSmrg test "$pass" = conv && continue 62554642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 62564642e01fSmrg func_stripname '-L' '' "$deplib" 62576747b715Smrg func_resolve_sysroot "$func_stripname_result" 62586747b715Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 62594642e01fSmrg ;; 62604642e01fSmrg prog) 62614642e01fSmrg if test "$pass" = conv; then 62624642e01fSmrg deplibs="$deplib $deplibs" 62634642e01fSmrg continue 62644642e01fSmrg fi 62654642e01fSmrg if test "$pass" = scan; then 62664642e01fSmrg deplibs="$deplib $deplibs" 62674642e01fSmrg else 62684642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 62694642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 62704642e01fSmrg fi 62714642e01fSmrg func_stripname '-L' '' "$deplib" 62726747b715Smrg func_resolve_sysroot "$func_stripname_result" 62736747b715Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 62744642e01fSmrg ;; 62754642e01fSmrg *) 62764642e01fSmrg func_warning "\`-L' is ignored for archives/objects" 62774642e01fSmrg ;; 62784642e01fSmrg esac # linkmode 62794642e01fSmrg continue 62804642e01fSmrg ;; # -L 62814642e01fSmrg -R*) 62824642e01fSmrg if test "$pass" = link; then 62834642e01fSmrg func_stripname '-R' '' "$deplib" 62846747b715Smrg func_resolve_sysroot "$func_stripname_result" 62856747b715Smrg dir=$func_resolve_sysroot_result 62864642e01fSmrg # Make sure the xrpath contains only unique directories. 62874642e01fSmrg case "$xrpath " in 62884642e01fSmrg *" $dir "*) ;; 62896747b715Smrg *) func_append xrpath " $dir" ;; 62904642e01fSmrg esac 62914642e01fSmrg fi 62924642e01fSmrg deplibs="$deplib $deplibs" 62934642e01fSmrg continue 62944642e01fSmrg ;; 62956747b715Smrg *.la) 62966747b715Smrg func_resolve_sysroot "$deplib" 62976747b715Smrg lib=$func_resolve_sysroot_result 62986747b715Smrg ;; 62994642e01fSmrg *.$libext) 63004642e01fSmrg if test "$pass" = conv; then 63014642e01fSmrg deplibs="$deplib $deplibs" 63024642e01fSmrg continue 63034642e01fSmrg fi 63044642e01fSmrg case $linkmode in 63054642e01fSmrg lib) 63064642e01fSmrg # Linking convenience modules into shared libraries is allowed, 63074642e01fSmrg # but linking other static libraries is non-portable. 63084642e01fSmrg case " $dlpreconveniencelibs " in 63094642e01fSmrg *" $deplib "*) ;; 63104642e01fSmrg *) 63114642e01fSmrg valid_a_lib=no 63124642e01fSmrg case $deplibs_check_method in 63134642e01fSmrg match_pattern*) 63144642e01fSmrg set dummy $deplibs_check_method; shift 63154642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 63166747b715Smrg if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 63174642e01fSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 63184642e01fSmrg valid_a_lib=yes 63194642e01fSmrg fi 63204642e01fSmrg ;; 63214642e01fSmrg pass_all) 63224642e01fSmrg valid_a_lib=yes 63234642e01fSmrg ;; 63244642e01fSmrg esac 63254642e01fSmrg if test "$valid_a_lib" != yes; then 63266747b715Smrg echo 63274642e01fSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 63286747b715Smrg echo "*** I have the capability to make that library automatically link in when" 63296747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 63306747b715Smrg echo "*** shared version of the library, which you do not appear to have" 63316747b715Smrg echo "*** because the file extensions .$libext of this argument makes me believe" 63326747b715Smrg echo "*** that it is just a static archive that I should not use here." 63334642e01fSmrg else 63346747b715Smrg echo 63354642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the" 63364642e01fSmrg $ECHO "*** static library $deplib is not portable!" 63374642e01fSmrg deplibs="$deplib $deplibs" 63384642e01fSmrg fi 63394642e01fSmrg ;; 63404642e01fSmrg esac 63414642e01fSmrg continue 63424642e01fSmrg ;; 63434642e01fSmrg prog) 63444642e01fSmrg if test "$pass" != link; then 63454642e01fSmrg deplibs="$deplib $deplibs" 63464642e01fSmrg else 63474642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 63484642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 63494642e01fSmrg fi 63504642e01fSmrg continue 63514642e01fSmrg ;; 63524642e01fSmrg esac # linkmode 63534642e01fSmrg ;; # *.$libext 63544642e01fSmrg *.lo | *.$objext) 63554642e01fSmrg if test "$pass" = conv; then 63564642e01fSmrg deplibs="$deplib $deplibs" 63574642e01fSmrg elif test "$linkmode" = prog; then 63584642e01fSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 63594642e01fSmrg # If there is no dlopen support or we're linking statically, 63604642e01fSmrg # we need to preload. 63616747b715Smrg func_append newdlprefiles " $deplib" 63624642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 63634642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 63644642e01fSmrg else 63656747b715Smrg func_append newdlfiles " $deplib" 63664642e01fSmrg fi 63674642e01fSmrg fi 63684642e01fSmrg continue 63694642e01fSmrg ;; 63704642e01fSmrg %DEPLIBS%) 63714642e01fSmrg alldeplibs=yes 63724642e01fSmrg continue 63734642e01fSmrg ;; 63744642e01fSmrg esac # case $deplib 63754642e01fSmrg 63764642e01fSmrg if test "$found" = yes || test -f "$lib"; then : 63774642e01fSmrg else 63784642e01fSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 63794642e01fSmrg fi 63804642e01fSmrg 63814642e01fSmrg # Check to see that this really is a libtool archive. 63824642e01fSmrg func_lalib_unsafe_p "$lib" \ 63834642e01fSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 63844642e01fSmrg 63854642e01fSmrg func_dirname "$lib" "" "." 63864642e01fSmrg ladir="$func_dirname_result" 63874642e01fSmrg 63884642e01fSmrg dlname= 63894642e01fSmrg dlopen= 63904642e01fSmrg dlpreopen= 63914642e01fSmrg libdir= 63924642e01fSmrg library_names= 63934642e01fSmrg old_library= 63944642e01fSmrg inherited_linker_flags= 63954642e01fSmrg # If the library was installed with an old release of libtool, 63964642e01fSmrg # it will not redefine variables installed, or shouldnotlink 63974642e01fSmrg installed=yes 63984642e01fSmrg shouldnotlink=no 63994642e01fSmrg avoidtemprpath= 64004642e01fSmrg 64014642e01fSmrg 64024642e01fSmrg # Read the .la file 64034642e01fSmrg func_source "$lib" 64044642e01fSmrg 64054642e01fSmrg # Convert "-framework foo" to "foo.ltframework" 64064642e01fSmrg if test -n "$inherited_linker_flags"; then 64076747b715Smrg tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 64084642e01fSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 64094642e01fSmrg case " $new_inherited_linker_flags " in 64104642e01fSmrg *" $tmp_inherited_linker_flag "*) ;; 64116747b715Smrg *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 64124642e01fSmrg esac 64134642e01fSmrg done 64144642e01fSmrg fi 64156747b715Smrg dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 64164642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 64174642e01fSmrg test "$linkmode,$pass" = "prog,scan" || 64184642e01fSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 64196747b715Smrg test -n "$dlopen" && func_append dlfiles " $dlopen" 64206747b715Smrg test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 64214642e01fSmrg fi 64224642e01fSmrg 64234642e01fSmrg if test "$pass" = conv; then 64244642e01fSmrg # Only check for convenience libraries 64254642e01fSmrg deplibs="$lib $deplibs" 64264642e01fSmrg if test -z "$libdir"; then 64274642e01fSmrg if test -z "$old_library"; then 64284642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 64294642e01fSmrg fi 64304642e01fSmrg # It is a libtool convenience library, so add in its objects. 64316747b715Smrg func_append convenience " $ladir/$objdir/$old_library" 64326747b715Smrg func_append old_convenience " $ladir/$objdir/$old_library" 64334642e01fSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 64344642e01fSmrg func_fatal_error "\`$lib' is not a convenience library" 64354642e01fSmrg fi 64366747b715Smrg tmp_libs= 64376747b715Smrg for deplib in $dependency_libs; do 64386747b715Smrg deplibs="$deplib $deplibs" 64396747b715Smrg if $opt_preserve_dup_deps ; then 64406747b715Smrg case "$tmp_libs " in 64416747b715Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 64426747b715Smrg esac 64436747b715Smrg fi 64446747b715Smrg func_append tmp_libs " $deplib" 64456747b715Smrg done 64464642e01fSmrg continue 64474642e01fSmrg fi # $pass = conv 64484642e01fSmrg 64494642e01fSmrg 64504642e01fSmrg # Get the name of the library we link against. 64514642e01fSmrg linklib= 64526747b715Smrg if test -n "$old_library" && 64536747b715Smrg { test "$prefer_static_libs" = yes || 64546747b715Smrg test "$prefer_static_libs,$installed" = "built,no"; }; then 64556747b715Smrg linklib=$old_library 64566747b715Smrg else 64576747b715Smrg for l in $old_library $library_names; do 64586747b715Smrg linklib="$l" 64596747b715Smrg done 64606747b715Smrg fi 64614642e01fSmrg if test -z "$linklib"; then 64624642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 64634642e01fSmrg fi 64644642e01fSmrg 64654642e01fSmrg # This library was specified with -dlopen. 64664642e01fSmrg if test "$pass" = dlopen; then 64674642e01fSmrg if test -z "$libdir"; then 64684642e01fSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 64694642e01fSmrg fi 64704642e01fSmrg if test -z "$dlname" || 64714642e01fSmrg test "$dlopen_support" != yes || 64724642e01fSmrg test "$build_libtool_libs" = no; then 64734642e01fSmrg # If there is no dlname, no dlopen support or we're linking 64744642e01fSmrg # statically, we need to preload. We also need to preload any 64754642e01fSmrg # dependent libraries so libltdl's deplib preloader doesn't 64764642e01fSmrg # bomb out in the load deplibs phase. 64776747b715Smrg func_append dlprefiles " $lib $dependency_libs" 64784642e01fSmrg else 64796747b715Smrg func_append newdlfiles " $lib" 64804642e01fSmrg fi 64814642e01fSmrg continue 64824642e01fSmrg fi # $pass = dlopen 64834642e01fSmrg 64844642e01fSmrg # We need an absolute path. 64854642e01fSmrg case $ladir in 64864642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 64874642e01fSmrg *) 64884642e01fSmrg abs_ladir=`cd "$ladir" && pwd` 64894642e01fSmrg if test -z "$abs_ladir"; then 64904642e01fSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 64914642e01fSmrg func_warning "passing it literally to the linker, although it might fail" 64924642e01fSmrg abs_ladir="$ladir" 64934642e01fSmrg fi 64944642e01fSmrg ;; 64954642e01fSmrg esac 64964642e01fSmrg func_basename "$lib" 64974642e01fSmrg laname="$func_basename_result" 64984642e01fSmrg 64994642e01fSmrg # Find the relevant object directory and library name. 65004642e01fSmrg if test "X$installed" = Xyes; then 65016747b715Smrg if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65024642e01fSmrg func_warning "library \`$lib' was moved." 65034642e01fSmrg dir="$ladir" 65044642e01fSmrg absdir="$abs_ladir" 65054642e01fSmrg libdir="$abs_ladir" 65064642e01fSmrg else 65076747b715Smrg dir="$lt_sysroot$libdir" 65086747b715Smrg absdir="$lt_sysroot$libdir" 65094642e01fSmrg fi 65104642e01fSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 65114642e01fSmrg else 65124642e01fSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65134642e01fSmrg dir="$ladir" 65144642e01fSmrg absdir="$abs_ladir" 65154642e01fSmrg # Remove this search path later 65166747b715Smrg func_append notinst_path " $abs_ladir" 65174642e01fSmrg else 65184642e01fSmrg dir="$ladir/$objdir" 65194642e01fSmrg absdir="$abs_ladir/$objdir" 65204642e01fSmrg # Remove this search path later 65216747b715Smrg func_append notinst_path " $abs_ladir" 65224642e01fSmrg fi 65234642e01fSmrg fi # $installed = yes 65244642e01fSmrg func_stripname 'lib' '.la' "$laname" 65254642e01fSmrg name=$func_stripname_result 65264642e01fSmrg 65274642e01fSmrg # This library was specified with -dlpreopen. 65284642e01fSmrg if test "$pass" = dlpreopen; then 65294642e01fSmrg if test -z "$libdir" && test "$linkmode" = prog; then 65304642e01fSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 65314642e01fSmrg fi 65326747b715Smrg case "$host" in 65336747b715Smrg # special handling for platforms with PE-DLLs. 65346747b715Smrg *cygwin* | *mingw* | *cegcc* ) 65356747b715Smrg # Linker will automatically link against shared library if both 65366747b715Smrg # static and shared are present. Therefore, ensure we extract 65376747b715Smrg # symbols from the import library if a shared library is present 65386747b715Smrg # (otherwise, the dlopen module name will be incorrect). We do 65396747b715Smrg # this by putting the import library name into $newdlprefiles. 65406747b715Smrg # We recover the dlopen module name by 'saving' the la file 65416747b715Smrg # name in a special purpose variable, and (later) extracting the 65426747b715Smrg # dlname from the la file. 65436747b715Smrg if test -n "$dlname"; then 65446747b715Smrg func_tr_sh "$dir/$linklib" 65456747b715Smrg eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 65466747b715Smrg func_append newdlprefiles " $dir/$linklib" 65476747b715Smrg else 65486747b715Smrg func_append newdlprefiles " $dir/$old_library" 65496747b715Smrg # Keep a list of preopened convenience libraries to check 65506747b715Smrg # that they are being used correctly in the link pass. 65516747b715Smrg test -z "$libdir" && \ 65526747b715Smrg func_append dlpreconveniencelibs " $dir/$old_library" 65536747b715Smrg fi 65546747b715Smrg ;; 65556747b715Smrg * ) 65566747b715Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 65576747b715Smrg # are required to link). 65586747b715Smrg if test -n "$old_library"; then 65596747b715Smrg func_append newdlprefiles " $dir/$old_library" 65606747b715Smrg # Keep a list of preopened convenience libraries to check 65616747b715Smrg # that they are being used correctly in the link pass. 65626747b715Smrg test -z "$libdir" && \ 65636747b715Smrg func_append dlpreconveniencelibs " $dir/$old_library" 65646747b715Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 65656747b715Smrg elif test -n "$dlname"; then 65666747b715Smrg func_append newdlprefiles " $dir/$dlname" 65676747b715Smrg else 65686747b715Smrg func_append newdlprefiles " $dir/$linklib" 65696747b715Smrg fi 65706747b715Smrg ;; 65716747b715Smrg esac 65724642e01fSmrg fi # $pass = dlpreopen 65734642e01fSmrg 65744642e01fSmrg if test -z "$libdir"; then 65754642e01fSmrg # Link the convenience library 65764642e01fSmrg if test "$linkmode" = lib; then 65774642e01fSmrg deplibs="$dir/$old_library $deplibs" 65784642e01fSmrg elif test "$linkmode,$pass" = "prog,link"; then 65794642e01fSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 65804642e01fSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 65814642e01fSmrg else 65824642e01fSmrg deplibs="$lib $deplibs" # used for prog,scan pass 65834642e01fSmrg fi 65844642e01fSmrg continue 65854642e01fSmrg fi 65864642e01fSmrg 65874642e01fSmrg 65884642e01fSmrg if test "$linkmode" = prog && test "$pass" != link; then 65896747b715Smrg func_append newlib_search_path " $ladir" 65904642e01fSmrg deplibs="$lib $deplibs" 65914642e01fSmrg 65924642e01fSmrg linkalldeplibs=no 65934642e01fSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 65944642e01fSmrg test "$build_libtool_libs" = no; then 65954642e01fSmrg linkalldeplibs=yes 65964642e01fSmrg fi 65974642e01fSmrg 65984642e01fSmrg tmp_libs= 65994642e01fSmrg for deplib in $dependency_libs; do 66004642e01fSmrg case $deplib in 66014642e01fSmrg -L*) func_stripname '-L' '' "$deplib" 66026747b715Smrg func_resolve_sysroot "$func_stripname_result" 66036747b715Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 66044642e01fSmrg ;; 66054642e01fSmrg esac 66064642e01fSmrg # Need to link against all dependency_libs? 66074642e01fSmrg if test "$linkalldeplibs" = yes; then 66084642e01fSmrg deplibs="$deplib $deplibs" 66094642e01fSmrg else 66104642e01fSmrg # Need to hardcode shared library paths 66114642e01fSmrg # or/and link against static libraries 66124642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 66134642e01fSmrg fi 66146747b715Smrg if $opt_preserve_dup_deps ; then 66154642e01fSmrg case "$tmp_libs " in 66166747b715Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 66174642e01fSmrg esac 66184642e01fSmrg fi 66196747b715Smrg func_append tmp_libs " $deplib" 66204642e01fSmrg done # for deplib 66214642e01fSmrg continue 66224642e01fSmrg fi # $linkmode = prog... 66234642e01fSmrg 66244642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 66254642e01fSmrg if test -n "$library_names" && 66264642e01fSmrg { { test "$prefer_static_libs" = no || 66274642e01fSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 66284642e01fSmrg test -z "$old_library"; }; then 66294642e01fSmrg # We need to hardcode the library path 66304642e01fSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 66314642e01fSmrg # Make sure the rpath contains only unique directories. 66324642e01fSmrg case "$temp_rpath:" in 66334642e01fSmrg *"$absdir:"*) ;; 66346747b715Smrg *) func_append temp_rpath "$absdir:" ;; 66354642e01fSmrg esac 66364642e01fSmrg fi 66374642e01fSmrg 66384642e01fSmrg # Hardcode the library path. 66394642e01fSmrg # Skip directories that are in the system default run-time 66404642e01fSmrg # search path. 66414642e01fSmrg case " $sys_lib_dlsearch_path " in 66424642e01fSmrg *" $absdir "*) ;; 66434642e01fSmrg *) 66444642e01fSmrg case "$compile_rpath " in 66454642e01fSmrg *" $absdir "*) ;; 66466747b715Smrg *) func_append compile_rpath " $absdir" ;; 66474642e01fSmrg esac 66484642e01fSmrg ;; 66494642e01fSmrg esac 66504642e01fSmrg case " $sys_lib_dlsearch_path " in 66514642e01fSmrg *" $libdir "*) ;; 66524642e01fSmrg *) 66534642e01fSmrg case "$finalize_rpath " in 66544642e01fSmrg *" $libdir "*) ;; 66556747b715Smrg *) func_append finalize_rpath " $libdir" ;; 66564642e01fSmrg esac 66574642e01fSmrg ;; 66584642e01fSmrg esac 66594642e01fSmrg fi # $linkmode,$pass = prog,link... 66604642e01fSmrg 66614642e01fSmrg if test "$alldeplibs" = yes && 66624642e01fSmrg { test "$deplibs_check_method" = pass_all || 66634642e01fSmrg { test "$build_libtool_libs" = yes && 66644642e01fSmrg test -n "$library_names"; }; }; then 66654642e01fSmrg # We only need to search for static libraries 66664642e01fSmrg continue 66674642e01fSmrg fi 66684642e01fSmrg fi 66694642e01fSmrg 66704642e01fSmrg link_static=no # Whether the deplib will be linked statically 66714642e01fSmrg use_static_libs=$prefer_static_libs 66724642e01fSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 66734642e01fSmrg use_static_libs=no 66744642e01fSmrg fi 66754642e01fSmrg if test -n "$library_names" && 66764642e01fSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 66774642e01fSmrg case $host in 66784642e01fSmrg *cygwin* | *mingw* | *cegcc*) 66794642e01fSmrg # No point in relinking DLLs because paths are not encoded 66806747b715Smrg func_append notinst_deplibs " $lib" 66814642e01fSmrg need_relink=no 66824642e01fSmrg ;; 66834642e01fSmrg *) 66844642e01fSmrg if test "$installed" = no; then 66856747b715Smrg func_append notinst_deplibs " $lib" 66864642e01fSmrg need_relink=yes 66874642e01fSmrg fi 66884642e01fSmrg ;; 66894642e01fSmrg esac 66904642e01fSmrg # This is a shared library 66914642e01fSmrg 66924642e01fSmrg # Warn about portability, can't link against -module's on some 66934642e01fSmrg # systems (darwin). Don't bleat about dlopened modules though! 66944642e01fSmrg dlopenmodule="" 66954642e01fSmrg for dlpremoduletest in $dlprefiles; do 66964642e01fSmrg if test "X$dlpremoduletest" = "X$lib"; then 66974642e01fSmrg dlopenmodule="$dlpremoduletest" 66984642e01fSmrg break 66994642e01fSmrg fi 67004642e01fSmrg done 67014642e01fSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 67026747b715Smrg echo 67034642e01fSmrg if test "$linkmode" = prog; then 67044642e01fSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 67054642e01fSmrg else 67064642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 67074642e01fSmrg fi 67084642e01fSmrg $ECHO "*** $linklib is not portable!" 67094642e01fSmrg fi 67104642e01fSmrg if test "$linkmode" = lib && 67114642e01fSmrg test "$hardcode_into_libs" = yes; then 67124642e01fSmrg # Hardcode the library path. 67134642e01fSmrg # Skip directories that are in the system default run-time 67144642e01fSmrg # search path. 67154642e01fSmrg case " $sys_lib_dlsearch_path " in 67164642e01fSmrg *" $absdir "*) ;; 67174642e01fSmrg *) 67184642e01fSmrg case "$compile_rpath " in 67194642e01fSmrg *" $absdir "*) ;; 67206747b715Smrg *) func_append compile_rpath " $absdir" ;; 67214642e01fSmrg esac 67224642e01fSmrg ;; 67234642e01fSmrg esac 67244642e01fSmrg case " $sys_lib_dlsearch_path " in 67254642e01fSmrg *" $libdir "*) ;; 67264642e01fSmrg *) 67274642e01fSmrg case "$finalize_rpath " in 67284642e01fSmrg *" $libdir "*) ;; 67296747b715Smrg *) func_append finalize_rpath " $libdir" ;; 67304642e01fSmrg esac 67314642e01fSmrg ;; 67324642e01fSmrg esac 67334642e01fSmrg fi 67344642e01fSmrg 67354642e01fSmrg if test -n "$old_archive_from_expsyms_cmds"; then 67364642e01fSmrg # figure out the soname 67374642e01fSmrg set dummy $library_names 67384642e01fSmrg shift 67394642e01fSmrg realname="$1" 67404642e01fSmrg shift 67414642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 67424642e01fSmrg # use dlname if we got it. it's perfectly good, no? 67434642e01fSmrg if test -n "$dlname"; then 67444642e01fSmrg soname="$dlname" 67454642e01fSmrg elif test -n "$soname_spec"; then 67464642e01fSmrg # bleh windows 67474642e01fSmrg case $host in 67484642e01fSmrg *cygwin* | mingw* | *cegcc*) 67494642e01fSmrg func_arith $current - $age 67504642e01fSmrg major=$func_arith_result 67514642e01fSmrg versuffix="-$major" 67524642e01fSmrg ;; 67534642e01fSmrg esac 67544642e01fSmrg eval soname=\"$soname_spec\" 67554642e01fSmrg else 67564642e01fSmrg soname="$realname" 67574642e01fSmrg fi 67584642e01fSmrg 67594642e01fSmrg # Make a new name for the extract_expsyms_cmds to use 67604642e01fSmrg soroot="$soname" 67614642e01fSmrg func_basename "$soroot" 67624642e01fSmrg soname="$func_basename_result" 67634642e01fSmrg func_stripname 'lib' '.dll' "$soname" 67644642e01fSmrg newlib=libimp-$func_stripname_result.a 67654642e01fSmrg 67664642e01fSmrg # If the library has no export list, then create one now 67674642e01fSmrg if test -f "$output_objdir/$soname-def"; then : 67684642e01fSmrg else 67694642e01fSmrg func_verbose "extracting exported symbol list from \`$soname'" 67704642e01fSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 67714642e01fSmrg fi 67724642e01fSmrg 67734642e01fSmrg # Create $newlib 67744642e01fSmrg if test -f "$output_objdir/$newlib"; then :; else 67754642e01fSmrg func_verbose "generating import library for \`$soname'" 67764642e01fSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 67774642e01fSmrg fi 67784642e01fSmrg # make sure the library variables are pointing to the new library 67794642e01fSmrg dir=$output_objdir 67804642e01fSmrg linklib=$newlib 67814642e01fSmrg fi # test -n "$old_archive_from_expsyms_cmds" 67824642e01fSmrg 67836747b715Smrg if test "$linkmode" = prog || test "$opt_mode" != relink; then 67844642e01fSmrg add_shlibpath= 67854642e01fSmrg add_dir= 67864642e01fSmrg add= 67874642e01fSmrg lib_linked=yes 67884642e01fSmrg case $hardcode_action in 67894642e01fSmrg immediate | unsupported) 67904642e01fSmrg if test "$hardcode_direct" = no; then 67914642e01fSmrg add="$dir/$linklib" 67924642e01fSmrg case $host in 67934642e01fSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 67944642e01fSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 67954642e01fSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 67964642e01fSmrg *-*-unixware7*) add_dir="-L$dir" ;; 67974642e01fSmrg *-*-darwin* ) 67984642e01fSmrg # if the lib is a (non-dlopened) module then we can not 67994642e01fSmrg # link against it, someone is ignoring the earlier warnings 68004642e01fSmrg if /usr/bin/file -L $add 2> /dev/null | 68014642e01fSmrg $GREP ": [^:]* bundle" >/dev/null ; then 68024642e01fSmrg if test "X$dlopenmodule" != "X$lib"; then 68034642e01fSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 68044642e01fSmrg if test -z "$old_library" ; then 68056747b715Smrg echo 68066747b715Smrg echo "*** And there doesn't seem to be a static archive available" 68076747b715Smrg echo "*** The link will probably fail, sorry" 68084642e01fSmrg else 68094642e01fSmrg add="$dir/$old_library" 68104642e01fSmrg fi 68114642e01fSmrg elif test -n "$old_library"; then 68124642e01fSmrg add="$dir/$old_library" 68134642e01fSmrg fi 68144642e01fSmrg fi 68154642e01fSmrg esac 68164642e01fSmrg elif test "$hardcode_minus_L" = no; then 68174642e01fSmrg case $host in 68184642e01fSmrg *-*-sunos*) add_shlibpath="$dir" ;; 68194642e01fSmrg esac 68204642e01fSmrg add_dir="-L$dir" 68214642e01fSmrg add="-l$name" 68224642e01fSmrg elif test "$hardcode_shlibpath_var" = no; then 68234642e01fSmrg add_shlibpath="$dir" 68244642e01fSmrg add="-l$name" 68254642e01fSmrg else 68264642e01fSmrg lib_linked=no 68274642e01fSmrg fi 68284642e01fSmrg ;; 68294642e01fSmrg relink) 68304642e01fSmrg if test "$hardcode_direct" = yes && 68314642e01fSmrg test "$hardcode_direct_absolute" = no; then 68324642e01fSmrg add="$dir/$linklib" 68334642e01fSmrg elif test "$hardcode_minus_L" = yes; then 68344642e01fSmrg add_dir="-L$dir" 68354642e01fSmrg # Try looking first in the location we're being installed to. 68364642e01fSmrg if test -n "$inst_prefix_dir"; then 68374642e01fSmrg case $libdir in 68384642e01fSmrg [\\/]*) 68396747b715Smrg func_append add_dir " -L$inst_prefix_dir$libdir" 68404642e01fSmrg ;; 68414642e01fSmrg esac 68424642e01fSmrg fi 68434642e01fSmrg add="-l$name" 68444642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 68454642e01fSmrg add_shlibpath="$dir" 68464642e01fSmrg add="-l$name" 68474642e01fSmrg else 68484642e01fSmrg lib_linked=no 68494642e01fSmrg fi 68504642e01fSmrg ;; 68514642e01fSmrg *) lib_linked=no ;; 68524642e01fSmrg esac 68534642e01fSmrg 68544642e01fSmrg if test "$lib_linked" != yes; then 68554642e01fSmrg func_fatal_configuration "unsupported hardcode properties" 68564642e01fSmrg fi 68574642e01fSmrg 68584642e01fSmrg if test -n "$add_shlibpath"; then 68594642e01fSmrg case :$compile_shlibpath: in 68604642e01fSmrg *":$add_shlibpath:"*) ;; 68616747b715Smrg *) func_append compile_shlibpath "$add_shlibpath:" ;; 68624642e01fSmrg esac 68634642e01fSmrg fi 68644642e01fSmrg if test "$linkmode" = prog; then 68654642e01fSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 68664642e01fSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 68674642e01fSmrg else 68684642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 68694642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 68704642e01fSmrg if test "$hardcode_direct" != yes && 68714642e01fSmrg test "$hardcode_minus_L" != yes && 68724642e01fSmrg test "$hardcode_shlibpath_var" = yes; then 68734642e01fSmrg case :$finalize_shlibpath: in 68744642e01fSmrg *":$libdir:"*) ;; 68756747b715Smrg *) func_append finalize_shlibpath "$libdir:" ;; 68764642e01fSmrg esac 68774642e01fSmrg fi 68784642e01fSmrg fi 68794642e01fSmrg fi 68804642e01fSmrg 68816747b715Smrg if test "$linkmode" = prog || test "$opt_mode" = relink; then 68824642e01fSmrg add_shlibpath= 68834642e01fSmrg add_dir= 68844642e01fSmrg add= 68854642e01fSmrg # Finalize command for both is simple: just hardcode it. 68864642e01fSmrg if test "$hardcode_direct" = yes && 68874642e01fSmrg test "$hardcode_direct_absolute" = no; then 68884642e01fSmrg add="$libdir/$linklib" 68894642e01fSmrg elif test "$hardcode_minus_L" = yes; then 68904642e01fSmrg add_dir="-L$libdir" 68914642e01fSmrg add="-l$name" 68924642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 68934642e01fSmrg case :$finalize_shlibpath: in 68944642e01fSmrg *":$libdir:"*) ;; 68956747b715Smrg *) func_append finalize_shlibpath "$libdir:" ;; 68964642e01fSmrg esac 68974642e01fSmrg add="-l$name" 68984642e01fSmrg elif test "$hardcode_automatic" = yes; then 68994642e01fSmrg if test -n "$inst_prefix_dir" && 69004642e01fSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 69014642e01fSmrg add="$inst_prefix_dir$libdir/$linklib" 69024642e01fSmrg else 69034642e01fSmrg add="$libdir/$linklib" 69044642e01fSmrg fi 69054642e01fSmrg else 69064642e01fSmrg # We cannot seem to hardcode it, guess we'll fake it. 69074642e01fSmrg add_dir="-L$libdir" 69084642e01fSmrg # Try looking first in the location we're being installed to. 69094642e01fSmrg if test -n "$inst_prefix_dir"; then 69104642e01fSmrg case $libdir in 69114642e01fSmrg [\\/]*) 69126747b715Smrg func_append add_dir " -L$inst_prefix_dir$libdir" 69134642e01fSmrg ;; 69144642e01fSmrg esac 69154642e01fSmrg fi 69164642e01fSmrg add="-l$name" 69174642e01fSmrg fi 69184642e01fSmrg 69194642e01fSmrg if test "$linkmode" = prog; then 69204642e01fSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 69214642e01fSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 69224642e01fSmrg else 69234642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 69244642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 69254642e01fSmrg fi 69264642e01fSmrg fi 69274642e01fSmrg elif test "$linkmode" = prog; then 69284642e01fSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 69294642e01fSmrg # is not unsupported. This is valid on all known static and 69304642e01fSmrg # shared platforms. 69314642e01fSmrg if test "$hardcode_direct" != unsupported; then 69324642e01fSmrg test -n "$old_library" && linklib="$old_library" 69334642e01fSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 69344642e01fSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 69354642e01fSmrg else 69364642e01fSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 69374642e01fSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 69384642e01fSmrg fi 69394642e01fSmrg elif test "$build_libtool_libs" = yes; then 69404642e01fSmrg # Not a shared library 69414642e01fSmrg if test "$deplibs_check_method" != pass_all; then 69424642e01fSmrg # We're trying link a shared library against a static one 69434642e01fSmrg # but the system doesn't support it. 69444642e01fSmrg 69454642e01fSmrg # Just print a warning and add the library to dependency_libs so 69464642e01fSmrg # that the program can be linked against the static library. 69476747b715Smrg echo 69484642e01fSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 69496747b715Smrg echo "*** I have the capability to make that library automatically link in when" 69506747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 69516747b715Smrg echo "*** shared version of the library, which you do not appear to have." 69524642e01fSmrg if test "$module" = yes; then 69536747b715Smrg echo "*** But as you try to build a module library, libtool will still create " 69546747b715Smrg echo "*** a static module, that should work as long as the dlopening application" 69556747b715Smrg echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 69564642e01fSmrg if test -z "$global_symbol_pipe"; then 69576747b715Smrg echo 69586747b715Smrg echo "*** However, this would only work if libtool was able to extract symbol" 69596747b715Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 69606747b715Smrg echo "*** not find such a program. So, this module is probably useless." 69616747b715Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 69624642e01fSmrg fi 69634642e01fSmrg if test "$build_old_libs" = no; then 69644642e01fSmrg build_libtool_libs=module 69654642e01fSmrg build_old_libs=yes 69664642e01fSmrg else 69674642e01fSmrg build_libtool_libs=no 69684642e01fSmrg fi 69694642e01fSmrg fi 69704642e01fSmrg else 69714642e01fSmrg deplibs="$dir/$old_library $deplibs" 69724642e01fSmrg link_static=yes 69734642e01fSmrg fi 69744642e01fSmrg fi # link shared/static library? 69754642e01fSmrg 69764642e01fSmrg if test "$linkmode" = lib; then 69774642e01fSmrg if test -n "$dependency_libs" && 69784642e01fSmrg { test "$hardcode_into_libs" != yes || 69794642e01fSmrg test "$build_old_libs" = yes || 69804642e01fSmrg test "$link_static" = yes; }; then 69814642e01fSmrg # Extract -R from dependency_libs 69824642e01fSmrg temp_deplibs= 69834642e01fSmrg for libdir in $dependency_libs; do 69844642e01fSmrg case $libdir in 69854642e01fSmrg -R*) func_stripname '-R' '' "$libdir" 69864642e01fSmrg temp_xrpath=$func_stripname_result 69874642e01fSmrg case " $xrpath " in 69884642e01fSmrg *" $temp_xrpath "*) ;; 69896747b715Smrg *) func_append xrpath " $temp_xrpath";; 69904642e01fSmrg esac;; 69916747b715Smrg *) func_append temp_deplibs " $libdir";; 69924642e01fSmrg esac 69934642e01fSmrg done 69944642e01fSmrg dependency_libs="$temp_deplibs" 69954642e01fSmrg fi 69964642e01fSmrg 69976747b715Smrg func_append newlib_search_path " $absdir" 69984642e01fSmrg # Link against this library 69994642e01fSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 70004642e01fSmrg # ... and its dependency_libs 70014642e01fSmrg tmp_libs= 70024642e01fSmrg for deplib in $dependency_libs; do 70034642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 70046747b715Smrg case $deplib in 70056747b715Smrg -L*) func_stripname '-L' '' "$deplib" 70066747b715Smrg func_resolve_sysroot "$func_stripname_result";; 70076747b715Smrg *) func_resolve_sysroot "$deplib" ;; 70086747b715Smrg esac 70096747b715Smrg if $opt_preserve_dup_deps ; then 70104642e01fSmrg case "$tmp_libs " in 70116747b715Smrg *" $func_resolve_sysroot_result "*) 70126747b715Smrg func_append specialdeplibs " $func_resolve_sysroot_result" ;; 70134642e01fSmrg esac 70144642e01fSmrg fi 70156747b715Smrg func_append tmp_libs " $func_resolve_sysroot_result" 70164642e01fSmrg done 70174642e01fSmrg 70184642e01fSmrg if test "$link_all_deplibs" != no; then 70194642e01fSmrg # Add the search paths of all dependency libraries 70204642e01fSmrg for deplib in $dependency_libs; do 70214642e01fSmrg path= 70224642e01fSmrg case $deplib in 70234642e01fSmrg -L*) path="$deplib" ;; 70244642e01fSmrg *.la) 70256747b715Smrg func_resolve_sysroot "$deplib" 70266747b715Smrg deplib=$func_resolve_sysroot_result 70274642e01fSmrg func_dirname "$deplib" "" "." 70286747b715Smrg dir=$func_dirname_result 70294642e01fSmrg # We need an absolute path. 70304642e01fSmrg case $dir in 70314642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 70324642e01fSmrg *) 70334642e01fSmrg absdir=`cd "$dir" && pwd` 70344642e01fSmrg if test -z "$absdir"; then 70354642e01fSmrg func_warning "cannot determine absolute directory name of \`$dir'" 70364642e01fSmrg absdir="$dir" 70374642e01fSmrg fi 70384642e01fSmrg ;; 70394642e01fSmrg esac 70404642e01fSmrg if $GREP "^installed=no" $deplib > /dev/null; then 70414642e01fSmrg case $host in 70424642e01fSmrg *-*-darwin*) 70434642e01fSmrg depdepl= 70444642e01fSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 70454642e01fSmrg if test -n "$deplibrary_names" ; then 70464642e01fSmrg for tmp in $deplibrary_names ; do 70474642e01fSmrg depdepl=$tmp 70484642e01fSmrg done 70494642e01fSmrg if test -f "$absdir/$objdir/$depdepl" ; then 70504642e01fSmrg depdepl="$absdir/$objdir/$depdepl" 70514642e01fSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70524642e01fSmrg if test -z "$darwin_install_name"; then 70534642e01fSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70544642e01fSmrg fi 70556747b715Smrg func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 70566747b715Smrg func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 70574642e01fSmrg path= 70584642e01fSmrg fi 70594642e01fSmrg fi 70604642e01fSmrg ;; 70614642e01fSmrg *) 70624642e01fSmrg path="-L$absdir/$objdir" 70634642e01fSmrg ;; 70644642e01fSmrg esac 70654642e01fSmrg else 70664642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 70674642e01fSmrg test -z "$libdir" && \ 70684642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 70694642e01fSmrg test "$absdir" != "$libdir" && \ 70704642e01fSmrg func_warning "\`$deplib' seems to be moved" 70714642e01fSmrg 70724642e01fSmrg path="-L$absdir" 70734642e01fSmrg fi 70744642e01fSmrg ;; 70754642e01fSmrg esac 70764642e01fSmrg case " $deplibs " in 70774642e01fSmrg *" $path "*) ;; 70784642e01fSmrg *) deplibs="$path $deplibs" ;; 70794642e01fSmrg esac 70804642e01fSmrg done 70814642e01fSmrg fi # link_all_deplibs != no 70824642e01fSmrg fi # linkmode = lib 70834642e01fSmrg done # for deplib in $libs 70844642e01fSmrg if test "$pass" = link; then 70854642e01fSmrg if test "$linkmode" = "prog"; then 70864642e01fSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 70874642e01fSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 70884642e01fSmrg else 70896747b715Smrg compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 70904642e01fSmrg fi 70914642e01fSmrg fi 70924642e01fSmrg dependency_libs="$newdependency_libs" 70934642e01fSmrg if test "$pass" = dlpreopen; then 70944642e01fSmrg # Link the dlpreopened libraries before other libraries 70954642e01fSmrg for deplib in $save_deplibs; do 70964642e01fSmrg deplibs="$deplib $deplibs" 70974642e01fSmrg done 70984642e01fSmrg fi 70994642e01fSmrg if test "$pass" != dlopen; then 71004642e01fSmrg if test "$pass" != conv; then 71014642e01fSmrg # Make sure lib_search_path contains only unique directories. 71024642e01fSmrg lib_search_path= 71034642e01fSmrg for dir in $newlib_search_path; do 71044642e01fSmrg case "$lib_search_path " in 71054642e01fSmrg *" $dir "*) ;; 71066747b715Smrg *) func_append lib_search_path " $dir" ;; 71074642e01fSmrg esac 71084642e01fSmrg done 71094642e01fSmrg newlib_search_path= 71104642e01fSmrg fi 71114642e01fSmrg 71124642e01fSmrg if test "$linkmode,$pass" != "prog,link"; then 71134642e01fSmrg vars="deplibs" 71144642e01fSmrg else 71154642e01fSmrg vars="compile_deplibs finalize_deplibs" 71164642e01fSmrg fi 71174642e01fSmrg for var in $vars dependency_libs; do 71184642e01fSmrg # Add libraries to $var in reverse order 71194642e01fSmrg eval tmp_libs=\"\$$var\" 71204642e01fSmrg new_libs= 71214642e01fSmrg for deplib in $tmp_libs; do 71224642e01fSmrg # FIXME: Pedantically, this is the right thing to do, so 71234642e01fSmrg # that some nasty dependency loop isn't accidentally 71244642e01fSmrg # broken: 71254642e01fSmrg #new_libs="$deplib $new_libs" 71264642e01fSmrg # Pragmatically, this seems to cause very few problems in 71274642e01fSmrg # practice: 71284642e01fSmrg case $deplib in 71294642e01fSmrg -L*) new_libs="$deplib $new_libs" ;; 71304642e01fSmrg -R*) ;; 71314642e01fSmrg *) 71324642e01fSmrg # And here is the reason: when a library appears more 71334642e01fSmrg # than once as an explicit dependence of a library, or 71344642e01fSmrg # is implicitly linked in more than once by the 71354642e01fSmrg # compiler, it is considered special, and multiple 71364642e01fSmrg # occurrences thereof are not removed. Compare this 71374642e01fSmrg # with having the same library being listed as a 71384642e01fSmrg # dependency of multiple other libraries: in this case, 71394642e01fSmrg # we know (pedantically, we assume) the library does not 71404642e01fSmrg # need to be listed more than once, so we keep only the 71414642e01fSmrg # last copy. This is not always right, but it is rare 71424642e01fSmrg # enough that we require users that really mean to play 71434642e01fSmrg # such unportable linking tricks to link the library 71444642e01fSmrg # using -Wl,-lname, so that libtool does not consider it 71454642e01fSmrg # for duplicate removal. 71464642e01fSmrg case " $specialdeplibs " in 71474642e01fSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 71484642e01fSmrg *) 71494642e01fSmrg case " $new_libs " in 71504642e01fSmrg *" $deplib "*) ;; 71514642e01fSmrg *) new_libs="$deplib $new_libs" ;; 71524642e01fSmrg esac 71534642e01fSmrg ;; 71544642e01fSmrg esac 71554642e01fSmrg ;; 71564642e01fSmrg esac 71574642e01fSmrg done 71584642e01fSmrg tmp_libs= 71594642e01fSmrg for deplib in $new_libs; do 71604642e01fSmrg case $deplib in 71614642e01fSmrg -L*) 71624642e01fSmrg case " $tmp_libs " in 71634642e01fSmrg *" $deplib "*) ;; 71646747b715Smrg *) func_append tmp_libs " $deplib" ;; 71654642e01fSmrg esac 71664642e01fSmrg ;; 71676747b715Smrg *) func_append tmp_libs " $deplib" ;; 71684642e01fSmrg esac 71694642e01fSmrg done 71704642e01fSmrg eval $var=\"$tmp_libs\" 71714642e01fSmrg done # for var 71724642e01fSmrg fi 71734642e01fSmrg # Last step: remove runtime libs from dependency_libs 71744642e01fSmrg # (they stay in deplibs) 71754642e01fSmrg tmp_libs= 71764642e01fSmrg for i in $dependency_libs ; do 71774642e01fSmrg case " $predeps $postdeps $compiler_lib_search_path " in 71784642e01fSmrg *" $i "*) 71794642e01fSmrg i="" 71804642e01fSmrg ;; 71814642e01fSmrg esac 71824642e01fSmrg if test -n "$i" ; then 71836747b715Smrg func_append tmp_libs " $i" 71844642e01fSmrg fi 71854642e01fSmrg done 71864642e01fSmrg dependency_libs=$tmp_libs 71874642e01fSmrg done # for pass 71884642e01fSmrg if test "$linkmode" = prog; then 71894642e01fSmrg dlfiles="$newdlfiles" 71904642e01fSmrg fi 71914642e01fSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 71924642e01fSmrg dlprefiles="$newdlprefiles" 71934642e01fSmrg fi 71944642e01fSmrg 71954642e01fSmrg case $linkmode in 71964642e01fSmrg oldlib) 71974642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 71984642e01fSmrg func_warning "\`-dlopen' is ignored for archives" 71994642e01fSmrg fi 72004642e01fSmrg 72014642e01fSmrg case " $deplibs" in 72024642e01fSmrg *\ -l* | *\ -L*) 72034642e01fSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 72044642e01fSmrg esac 72054642e01fSmrg 72064642e01fSmrg test -n "$rpath" && \ 72074642e01fSmrg func_warning "\`-rpath' is ignored for archives" 72084642e01fSmrg 72094642e01fSmrg test -n "$xrpath" && \ 72104642e01fSmrg func_warning "\`-R' is ignored for archives" 72114642e01fSmrg 72124642e01fSmrg test -n "$vinfo" && \ 72134642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 72144642e01fSmrg 72154642e01fSmrg test -n "$release" && \ 72164642e01fSmrg func_warning "\`-release' is ignored for archives" 72174642e01fSmrg 72184642e01fSmrg test -n "$export_symbols$export_symbols_regex" && \ 72194642e01fSmrg func_warning "\`-export-symbols' is ignored for archives" 72204642e01fSmrg 72214642e01fSmrg # Now set the variables for building old libraries. 72224642e01fSmrg build_libtool_libs=no 72234642e01fSmrg oldlibs="$output" 72246747b715Smrg func_append objs "$old_deplibs" 72254642e01fSmrg ;; 72264642e01fSmrg 72274642e01fSmrg lib) 72284642e01fSmrg # Make sure we only generate libraries of the form `libNAME.la'. 72294642e01fSmrg case $outputname in 72304642e01fSmrg lib*) 72314642e01fSmrg func_stripname 'lib' '.la' "$outputname" 72324642e01fSmrg name=$func_stripname_result 72334642e01fSmrg eval shared_ext=\"$shrext_cmds\" 72344642e01fSmrg eval libname=\"$libname_spec\" 72354642e01fSmrg ;; 72364642e01fSmrg *) 72374642e01fSmrg test "$module" = no && \ 72384642e01fSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 72394642e01fSmrg 72404642e01fSmrg if test "$need_lib_prefix" != no; then 72414642e01fSmrg # Add the "lib" prefix for modules if required 72424642e01fSmrg func_stripname '' '.la' "$outputname" 72434642e01fSmrg name=$func_stripname_result 72444642e01fSmrg eval shared_ext=\"$shrext_cmds\" 72454642e01fSmrg eval libname=\"$libname_spec\" 72464642e01fSmrg else 72474642e01fSmrg func_stripname '' '.la' "$outputname" 72484642e01fSmrg libname=$func_stripname_result 72494642e01fSmrg fi 72504642e01fSmrg ;; 72514642e01fSmrg esac 72524642e01fSmrg 72534642e01fSmrg if test -n "$objs"; then 72544642e01fSmrg if test "$deplibs_check_method" != pass_all; then 72554642e01fSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 72564642e01fSmrg else 72576747b715Smrg echo 72584642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 72594642e01fSmrg $ECHO "*** objects $objs is not portable!" 72606747b715Smrg func_append libobjs " $objs" 72614642e01fSmrg fi 72624642e01fSmrg fi 72634642e01fSmrg 72644642e01fSmrg test "$dlself" != no && \ 72654642e01fSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 72664642e01fSmrg 72674642e01fSmrg set dummy $rpath 72684642e01fSmrg shift 72694642e01fSmrg test "$#" -gt 1 && \ 72704642e01fSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 72714642e01fSmrg 72724642e01fSmrg install_libdir="$1" 72734642e01fSmrg 72744642e01fSmrg oldlibs= 72754642e01fSmrg if test -z "$rpath"; then 72764642e01fSmrg if test "$build_libtool_libs" = yes; then 72774642e01fSmrg # Building a libtool convenience library. 72784642e01fSmrg # Some compilers have problems with a `.al' extension so 72794642e01fSmrg # convenience libraries should have the same extension an 72804642e01fSmrg # archive normally would. 72814642e01fSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 72824642e01fSmrg build_libtool_libs=convenience 72834642e01fSmrg build_old_libs=yes 72844642e01fSmrg fi 72854642e01fSmrg 72864642e01fSmrg test -n "$vinfo" && \ 72874642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 72884642e01fSmrg 72894642e01fSmrg test -n "$release" && \ 72904642e01fSmrg func_warning "\`-release' is ignored for convenience libraries" 72914642e01fSmrg else 72924642e01fSmrg 72934642e01fSmrg # Parse the version information argument. 72944642e01fSmrg save_ifs="$IFS"; IFS=':' 72954642e01fSmrg set dummy $vinfo 0 0 0 72964642e01fSmrg shift 72974642e01fSmrg IFS="$save_ifs" 72984642e01fSmrg 72994642e01fSmrg test -n "$7" && \ 73004642e01fSmrg func_fatal_help "too many parameters to \`-version-info'" 73014642e01fSmrg 73024642e01fSmrg # convert absolute version numbers to libtool ages 73034642e01fSmrg # this retains compatibility with .la files and attempts 73044642e01fSmrg # to make the code below a bit more comprehensible 73054642e01fSmrg 73064642e01fSmrg case $vinfo_number in 73074642e01fSmrg yes) 73084642e01fSmrg number_major="$1" 73094642e01fSmrg number_minor="$2" 73104642e01fSmrg number_revision="$3" 73114642e01fSmrg # 73124642e01fSmrg # There are really only two kinds -- those that 73134642e01fSmrg # use the current revision as the major version 73144642e01fSmrg # and those that subtract age and use age as 73154642e01fSmrg # a minor version. But, then there is irix 73164642e01fSmrg # which has an extra 1 added just for fun 73174642e01fSmrg # 73184642e01fSmrg case $version_type in 73194642e01fSmrg darwin|linux|osf|windows|none) 73204642e01fSmrg func_arith $number_major + $number_minor 73214642e01fSmrg current=$func_arith_result 73224642e01fSmrg age="$number_minor" 73234642e01fSmrg revision="$number_revision" 73244642e01fSmrg ;; 73256747b715Smrg freebsd-aout|freebsd-elf|qnx|sunos) 73264642e01fSmrg current="$number_major" 73274642e01fSmrg revision="$number_minor" 73284642e01fSmrg age="0" 73294642e01fSmrg ;; 73304642e01fSmrg irix|nonstopux) 73314642e01fSmrg func_arith $number_major + $number_minor 73324642e01fSmrg current=$func_arith_result 73334642e01fSmrg age="$number_minor" 73344642e01fSmrg revision="$number_minor" 73354642e01fSmrg lt_irix_increment=no 73364642e01fSmrg ;; 73374642e01fSmrg esac 73384642e01fSmrg ;; 73394642e01fSmrg no) 73404642e01fSmrg current="$1" 73414642e01fSmrg revision="$2" 73424642e01fSmrg age="$3" 73434642e01fSmrg ;; 73444642e01fSmrg esac 73454642e01fSmrg 73464642e01fSmrg # Check that each of the things are valid numbers. 73474642e01fSmrg case $current in 73484642e01fSmrg 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]) ;; 73494642e01fSmrg *) 73504642e01fSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 73514642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 73524642e01fSmrg ;; 73534642e01fSmrg esac 73544642e01fSmrg 73554642e01fSmrg case $revision in 73564642e01fSmrg 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]) ;; 73574642e01fSmrg *) 73584642e01fSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 73594642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 73604642e01fSmrg ;; 73614642e01fSmrg esac 73624642e01fSmrg 73634642e01fSmrg case $age in 73644642e01fSmrg 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]) ;; 73654642e01fSmrg *) 73664642e01fSmrg func_error "AGE \`$age' must be a nonnegative integer" 73674642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 73684642e01fSmrg ;; 73694642e01fSmrg esac 73704642e01fSmrg 73714642e01fSmrg if test "$age" -gt "$current"; then 73724642e01fSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 73734642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 73744642e01fSmrg fi 73754642e01fSmrg 73764642e01fSmrg # Calculate the version variables. 73774642e01fSmrg major= 73784642e01fSmrg versuffix= 73794642e01fSmrg verstring= 73804642e01fSmrg case $version_type in 73814642e01fSmrg none) ;; 73824642e01fSmrg 73834642e01fSmrg darwin) 73844642e01fSmrg # Like Linux, but with the current version available in 73854642e01fSmrg # verstring for coding it into the library header 73864642e01fSmrg func_arith $current - $age 73874642e01fSmrg major=.$func_arith_result 73884642e01fSmrg versuffix="$major.$age.$revision" 73894642e01fSmrg # Darwin ld doesn't like 0 for these options... 73904642e01fSmrg func_arith $current + 1 73914642e01fSmrg minor_current=$func_arith_result 73924642e01fSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 73934642e01fSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 73944642e01fSmrg ;; 73954642e01fSmrg 73964642e01fSmrg freebsd-aout) 73974642e01fSmrg major=".$current" 73984642e01fSmrg versuffix=".$current.$revision"; 73994642e01fSmrg ;; 74004642e01fSmrg 74014642e01fSmrg freebsd-elf) 74024642e01fSmrg major=".$current" 74034642e01fSmrg versuffix=".$current" 74044642e01fSmrg ;; 74054642e01fSmrg 74064642e01fSmrg irix | nonstopux) 74074642e01fSmrg if test "X$lt_irix_increment" = "Xno"; then 74084642e01fSmrg func_arith $current - $age 74094642e01fSmrg else 74104642e01fSmrg func_arith $current - $age + 1 74114642e01fSmrg fi 74124642e01fSmrg major=$func_arith_result 74134642e01fSmrg 74144642e01fSmrg case $version_type in 74154642e01fSmrg nonstopux) verstring_prefix=nonstopux ;; 74164642e01fSmrg *) verstring_prefix=sgi ;; 74174642e01fSmrg esac 74184642e01fSmrg verstring="$verstring_prefix$major.$revision" 74194642e01fSmrg 74204642e01fSmrg # Add in all the interfaces that we are compatible with. 74214642e01fSmrg loop=$revision 74224642e01fSmrg while test "$loop" -ne 0; do 74234642e01fSmrg func_arith $revision - $loop 74244642e01fSmrg iface=$func_arith_result 74254642e01fSmrg func_arith $loop - 1 74264642e01fSmrg loop=$func_arith_result 74274642e01fSmrg verstring="$verstring_prefix$major.$iface:$verstring" 74284642e01fSmrg done 74294642e01fSmrg 74304642e01fSmrg # Before this point, $major must not contain `.'. 74314642e01fSmrg major=.$major 74324642e01fSmrg versuffix="$major.$revision" 74334642e01fSmrg ;; 74344642e01fSmrg 74354642e01fSmrg linux) 74364642e01fSmrg func_arith $current - $age 74374642e01fSmrg major=.$func_arith_result 74384642e01fSmrg versuffix="$major.$age.$revision" 74394642e01fSmrg ;; 74404642e01fSmrg 74414642e01fSmrg osf) 74424642e01fSmrg func_arith $current - $age 74434642e01fSmrg major=.$func_arith_result 74444642e01fSmrg versuffix=".$current.$age.$revision" 74454642e01fSmrg verstring="$current.$age.$revision" 74464642e01fSmrg 74474642e01fSmrg # Add in all the interfaces that we are compatible with. 74484642e01fSmrg loop=$age 74494642e01fSmrg while test "$loop" -ne 0; do 74504642e01fSmrg func_arith $current - $loop 74514642e01fSmrg iface=$func_arith_result 74524642e01fSmrg func_arith $loop - 1 74534642e01fSmrg loop=$func_arith_result 74544642e01fSmrg verstring="$verstring:${iface}.0" 74554642e01fSmrg done 74564642e01fSmrg 74574642e01fSmrg # Make executables depend on our current version. 74586747b715Smrg func_append verstring ":${current}.0" 74594642e01fSmrg ;; 74604642e01fSmrg 74614642e01fSmrg qnx) 74624642e01fSmrg major=".$current" 74634642e01fSmrg versuffix=".$current" 74644642e01fSmrg ;; 74654642e01fSmrg 74664642e01fSmrg sunos) 74674642e01fSmrg major=".$current" 74684642e01fSmrg versuffix=".$current.$revision" 74694642e01fSmrg ;; 74704642e01fSmrg 74714642e01fSmrg windows) 74724642e01fSmrg # Use '-' rather than '.', since we only want one 74734642e01fSmrg # extension on DOS 8.3 filesystems. 74744642e01fSmrg func_arith $current - $age 74754642e01fSmrg major=$func_arith_result 74764642e01fSmrg versuffix="-$major" 74774642e01fSmrg ;; 74784642e01fSmrg 74794642e01fSmrg *) 74804642e01fSmrg func_fatal_configuration "unknown library version type \`$version_type'" 74814642e01fSmrg ;; 74824642e01fSmrg esac 74834642e01fSmrg 74844642e01fSmrg # Clear the version info if we defaulted, and they specified a release. 74854642e01fSmrg if test -z "$vinfo" && test -n "$release"; then 74864642e01fSmrg major= 74874642e01fSmrg case $version_type in 74884642e01fSmrg darwin) 74894642e01fSmrg # we can't check for "0.0" in archive_cmds due to quoting 74904642e01fSmrg # problems, so we reset it completely 74914642e01fSmrg verstring= 74924642e01fSmrg ;; 74934642e01fSmrg *) 74944642e01fSmrg verstring="0.0" 74954642e01fSmrg ;; 74964642e01fSmrg esac 74974642e01fSmrg if test "$need_version" = no; then 74984642e01fSmrg versuffix= 74994642e01fSmrg else 75004642e01fSmrg versuffix=".0.0" 75014642e01fSmrg fi 75024642e01fSmrg fi 75034642e01fSmrg 75044642e01fSmrg # Remove version info from name if versioning should be avoided 75054642e01fSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 75064642e01fSmrg major= 75074642e01fSmrg versuffix= 75084642e01fSmrg verstring="" 75094642e01fSmrg fi 75104642e01fSmrg 75114642e01fSmrg # Check to see if the archive will have undefined symbols. 75124642e01fSmrg if test "$allow_undefined" = yes; then 75134642e01fSmrg if test "$allow_undefined_flag" = unsupported; then 75144642e01fSmrg func_warning "undefined symbols not allowed in $host shared libraries" 75154642e01fSmrg build_libtool_libs=no 75164642e01fSmrg build_old_libs=yes 75174642e01fSmrg fi 75184642e01fSmrg else 75194642e01fSmrg # Don't allow undefined symbols. 75204642e01fSmrg allow_undefined_flag="$no_undefined_flag" 75214642e01fSmrg fi 75224642e01fSmrg 75234642e01fSmrg fi 75244642e01fSmrg 75254642e01fSmrg func_generate_dlsyms "$libname" "$libname" "yes" 75266747b715Smrg func_append libobjs " $symfileobj" 75274642e01fSmrg test "X$libobjs" = "X " && libobjs= 75284642e01fSmrg 75296747b715Smrg if test "$opt_mode" != relink; then 75304642e01fSmrg # Remove our outputs, but don't remove object files since they 75314642e01fSmrg # may have been created when compiling PIC objects. 75324642e01fSmrg removelist= 75334642e01fSmrg tempremovelist=`$ECHO "$output_objdir/*"` 75344642e01fSmrg for p in $tempremovelist; do 75354642e01fSmrg case $p in 75364642e01fSmrg *.$objext | *.gcno) 75374642e01fSmrg ;; 75384642e01fSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 75394642e01fSmrg if test "X$precious_files_regex" != "X"; then 75404642e01fSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 75414642e01fSmrg then 75424642e01fSmrg continue 75434642e01fSmrg fi 75444642e01fSmrg fi 75456747b715Smrg func_append removelist " $p" 75464642e01fSmrg ;; 75474642e01fSmrg *) ;; 75484642e01fSmrg esac 75494642e01fSmrg done 75504642e01fSmrg test -n "$removelist" && \ 75514642e01fSmrg func_show_eval "${RM}r \$removelist" 75524642e01fSmrg fi 75534642e01fSmrg 75544642e01fSmrg # Now set the variables for building old libraries. 75554642e01fSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 75566747b715Smrg func_append oldlibs " $output_objdir/$libname.$libext" 75574642e01fSmrg 75584642e01fSmrg # Transform .lo files to .o files. 75596747b715Smrg oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 75604642e01fSmrg fi 75614642e01fSmrg 75624642e01fSmrg # Eliminate all temporary directories. 75634642e01fSmrg #for path in $notinst_path; do 75646747b715Smrg # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 75656747b715Smrg # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 75666747b715Smrg # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 75674642e01fSmrg #done 75684642e01fSmrg 75694642e01fSmrg if test -n "$xrpath"; then 75704642e01fSmrg # If the user specified any rpath flags, then add them. 75714642e01fSmrg temp_xrpath= 75724642e01fSmrg for libdir in $xrpath; do 75736747b715Smrg func_replace_sysroot "$libdir" 75746747b715Smrg func_append temp_xrpath " -R$func_replace_sysroot_result" 75754642e01fSmrg case "$finalize_rpath " in 75764642e01fSmrg *" $libdir "*) ;; 75776747b715Smrg *) func_append finalize_rpath " $libdir" ;; 75784642e01fSmrg esac 75794642e01fSmrg done 75804642e01fSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 75814642e01fSmrg dependency_libs="$temp_xrpath $dependency_libs" 75824642e01fSmrg fi 75834642e01fSmrg fi 75844642e01fSmrg 75854642e01fSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 75864642e01fSmrg old_dlfiles="$dlfiles" 75874642e01fSmrg dlfiles= 75884642e01fSmrg for lib in $old_dlfiles; do 75894642e01fSmrg case " $dlprefiles $dlfiles " in 75904642e01fSmrg *" $lib "*) ;; 75916747b715Smrg *) func_append dlfiles " $lib" ;; 75924642e01fSmrg esac 75934642e01fSmrg done 75944642e01fSmrg 75954642e01fSmrg # Make sure dlprefiles contains only unique files 75964642e01fSmrg old_dlprefiles="$dlprefiles" 75974642e01fSmrg dlprefiles= 75984642e01fSmrg for lib in $old_dlprefiles; do 75994642e01fSmrg case "$dlprefiles " in 76004642e01fSmrg *" $lib "*) ;; 76016747b715Smrg *) func_append dlprefiles " $lib" ;; 76024642e01fSmrg esac 76034642e01fSmrg done 76044642e01fSmrg 76054642e01fSmrg if test "$build_libtool_libs" = yes; then 76064642e01fSmrg if test -n "$rpath"; then 76074642e01fSmrg case $host in 76086747b715Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 76094642e01fSmrg # these systems don't actually have a c library (as such)! 76104642e01fSmrg ;; 76114642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 76124642e01fSmrg # Rhapsody C library is in the System framework 76136747b715Smrg func_append deplibs " System.ltframework" 76144642e01fSmrg ;; 76154642e01fSmrg *-*-netbsd*) 76164642e01fSmrg # Don't link with libc until the a.out ld.so is fixed. 76174642e01fSmrg ;; 76184642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 76194642e01fSmrg # Do not include libc due to us having libc/libc_r. 76204642e01fSmrg ;; 76214642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 76224642e01fSmrg # Causes problems with __ctype 76234642e01fSmrg ;; 76244642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 76254642e01fSmrg # Compiler inserts libc in the correct place for threads to work 76264642e01fSmrg ;; 76274642e01fSmrg *) 76284642e01fSmrg # Add libc to deplibs on all other systems if necessary. 76294642e01fSmrg if test "$build_libtool_need_lc" = "yes"; then 76306747b715Smrg func_append deplibs " -lc" 76314642e01fSmrg fi 76324642e01fSmrg ;; 76334642e01fSmrg esac 76344642e01fSmrg fi 76354642e01fSmrg 76364642e01fSmrg # Transform deplibs into only deplibs that can be linked in shared. 76374642e01fSmrg name_save=$name 76384642e01fSmrg libname_save=$libname 76394642e01fSmrg release_save=$release 76404642e01fSmrg versuffix_save=$versuffix 76414642e01fSmrg major_save=$major 76424642e01fSmrg # I'm not sure if I'm treating the release correctly. I think 76434642e01fSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 76444642e01fSmrg # add it in twice. Is that correct? 76454642e01fSmrg release="" 76464642e01fSmrg versuffix="" 76474642e01fSmrg major="" 76484642e01fSmrg newdeplibs= 76494642e01fSmrg droppeddeps=no 76504642e01fSmrg case $deplibs_check_method in 76514642e01fSmrg pass_all) 76524642e01fSmrg # Don't check for shared/static. Everything works. 76534642e01fSmrg # This might be a little naive. We might want to check 76544642e01fSmrg # whether the library exists or not. But this is on 76554642e01fSmrg # osf3 & osf4 and I'm not really sure... Just 76564642e01fSmrg # implementing what was already the behavior. 76574642e01fSmrg newdeplibs=$deplibs 76584642e01fSmrg ;; 76594642e01fSmrg test_compile) 76604642e01fSmrg # This code stresses the "libraries are programs" paradigm to its 76614642e01fSmrg # limits. Maybe even breaks it. We compile a program, linking it 76624642e01fSmrg # against the deplibs as a proxy for the library. Then we can check 76634642e01fSmrg # whether they linked in statically or dynamically with ldd. 76644642e01fSmrg $opt_dry_run || $RM conftest.c 76654642e01fSmrg cat > conftest.c <<EOF 76664642e01fSmrg int main() { return 0; } 76674642e01fSmrgEOF 76684642e01fSmrg $opt_dry_run || $RM conftest 76694642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 76704642e01fSmrg ldd_output=`ldd conftest` 76714642e01fSmrg for i in $deplibs; do 76724642e01fSmrg case $i in 76734642e01fSmrg -l*) 76744642e01fSmrg func_stripname -l '' "$i" 76754642e01fSmrg name=$func_stripname_result 76764642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 76774642e01fSmrg case " $predeps $postdeps " in 76784642e01fSmrg *" $i "*) 76796747b715Smrg func_append newdeplibs " $i" 76804642e01fSmrg i="" 76814642e01fSmrg ;; 76824642e01fSmrg esac 76834642e01fSmrg fi 76844642e01fSmrg if test -n "$i" ; then 76854642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 76864642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 76874642e01fSmrg set dummy $deplib_matches; shift 76884642e01fSmrg deplib_match=$1 76894642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 76906747b715Smrg func_append newdeplibs " $i" 76914642e01fSmrg else 76924642e01fSmrg droppeddeps=yes 76936747b715Smrg echo 76944642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 76956747b715Smrg echo "*** I have the capability to make that library automatically link in when" 76966747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 76976747b715Smrg echo "*** shared version of the library, which I believe you do not have" 76986747b715Smrg echo "*** because a test_compile did reveal that the linker did not use it for" 76996747b715Smrg echo "*** its dynamic dependency list that programs get resolved with at runtime." 77004642e01fSmrg fi 77014642e01fSmrg fi 77024642e01fSmrg ;; 77034642e01fSmrg *) 77046747b715Smrg func_append newdeplibs " $i" 77054642e01fSmrg ;; 77064642e01fSmrg esac 77074642e01fSmrg done 77084642e01fSmrg else 77094642e01fSmrg # Error occurred in the first compile. Let's try to salvage 77104642e01fSmrg # the situation: Compile a separate program for each library. 77114642e01fSmrg for i in $deplibs; do 77124642e01fSmrg case $i in 77134642e01fSmrg -l*) 77144642e01fSmrg func_stripname -l '' "$i" 77154642e01fSmrg name=$func_stripname_result 77164642e01fSmrg $opt_dry_run || $RM conftest 77174642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 77184642e01fSmrg ldd_output=`ldd conftest` 77194642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77204642e01fSmrg case " $predeps $postdeps " in 77214642e01fSmrg *" $i "*) 77226747b715Smrg func_append newdeplibs " $i" 77234642e01fSmrg i="" 77244642e01fSmrg ;; 77254642e01fSmrg esac 77264642e01fSmrg fi 77274642e01fSmrg if test -n "$i" ; then 77284642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 77294642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 77304642e01fSmrg set dummy $deplib_matches; shift 77314642e01fSmrg deplib_match=$1 77324642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 77336747b715Smrg func_append newdeplibs " $i" 77344642e01fSmrg else 77354642e01fSmrg droppeddeps=yes 77366747b715Smrg echo 77374642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 77386747b715Smrg echo "*** I have the capability to make that library automatically link in when" 77396747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 77406747b715Smrg echo "*** shared version of the library, which you do not appear to have" 77416747b715Smrg echo "*** because a test_compile did reveal that the linker did not use this one" 77426747b715Smrg echo "*** as a dynamic dependency that programs can get resolved with at runtime." 77434642e01fSmrg fi 77444642e01fSmrg fi 77454642e01fSmrg else 77464642e01fSmrg droppeddeps=yes 77476747b715Smrg echo 77484642e01fSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 77496747b715Smrg echo "*** make it link in! You will probably need to install it or some" 77506747b715Smrg echo "*** library that it depends on before this library will be fully" 77516747b715Smrg echo "*** functional. Installing it before continuing would be even better." 77524642e01fSmrg fi 77534642e01fSmrg ;; 77544642e01fSmrg *) 77556747b715Smrg func_append newdeplibs " $i" 77564642e01fSmrg ;; 77574642e01fSmrg esac 77584642e01fSmrg done 77594642e01fSmrg fi 77604642e01fSmrg ;; 77614642e01fSmrg file_magic*) 77624642e01fSmrg set dummy $deplibs_check_method; shift 77634642e01fSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 77644642e01fSmrg for a_deplib in $deplibs; do 77654642e01fSmrg case $a_deplib in 77664642e01fSmrg -l*) 77674642e01fSmrg func_stripname -l '' "$a_deplib" 77684642e01fSmrg name=$func_stripname_result 77694642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77704642e01fSmrg case " $predeps $postdeps " in 77714642e01fSmrg *" $a_deplib "*) 77726747b715Smrg func_append newdeplibs " $a_deplib" 77734642e01fSmrg a_deplib="" 77744642e01fSmrg ;; 77754642e01fSmrg esac 77764642e01fSmrg fi 77774642e01fSmrg if test -n "$a_deplib" ; then 77784642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 77796747b715Smrg if test -n "$file_magic_glob"; then 77806747b715Smrg libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 77816747b715Smrg else 77826747b715Smrg libnameglob=$libname 77836747b715Smrg fi 77846747b715Smrg test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 77854642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 77866747b715Smrg if test "$want_nocaseglob" = yes; then 77876747b715Smrg shopt -s nocaseglob 77886747b715Smrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 77896747b715Smrg $nocaseglob 77906747b715Smrg else 77916747b715Smrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 77926747b715Smrg fi 77934642e01fSmrg for potent_lib in $potential_libs; do 77944642e01fSmrg # Follow soft links. 77954642e01fSmrg if ls -lLd "$potent_lib" 2>/dev/null | 77964642e01fSmrg $GREP " -> " >/dev/null; then 77974642e01fSmrg continue 77984642e01fSmrg fi 77994642e01fSmrg # The statement above tries to avoid entering an 78004642e01fSmrg # endless loop below, in case of cyclic links. 78014642e01fSmrg # We might still enter an endless loop, since a link 78024642e01fSmrg # loop can be closed while we follow links, 78034642e01fSmrg # but so what? 78044642e01fSmrg potlib="$potent_lib" 78054642e01fSmrg while test -h "$potlib" 2>/dev/null; do 78064642e01fSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 78074642e01fSmrg case $potliblink in 78084642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 78096747b715Smrg *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 78104642e01fSmrg esac 78114642e01fSmrg done 78124642e01fSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 78134642e01fSmrg $SED -e 10q | 78144642e01fSmrg $EGREP "$file_magic_regex" > /dev/null; then 78156747b715Smrg func_append newdeplibs " $a_deplib" 78164642e01fSmrg a_deplib="" 78174642e01fSmrg break 2 78184642e01fSmrg fi 78194642e01fSmrg done 78204642e01fSmrg done 78214642e01fSmrg fi 78224642e01fSmrg if test -n "$a_deplib" ; then 78234642e01fSmrg droppeddeps=yes 78246747b715Smrg echo 78254642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 78266747b715Smrg echo "*** I have the capability to make that library automatically link in when" 78276747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 78286747b715Smrg echo "*** shared version of the library, which you do not appear to have" 78296747b715Smrg echo "*** because I did check the linker path looking for a file starting" 78304642e01fSmrg if test -z "$potlib" ; then 78314642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 78324642e01fSmrg else 78334642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 78344642e01fSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 78354642e01fSmrg fi 78364642e01fSmrg fi 78374642e01fSmrg ;; 78384642e01fSmrg *) 78394642e01fSmrg # Add a -L argument. 78406747b715Smrg func_append newdeplibs " $a_deplib" 78414642e01fSmrg ;; 78424642e01fSmrg esac 78434642e01fSmrg done # Gone through all deplibs. 78444642e01fSmrg ;; 78454642e01fSmrg match_pattern*) 78464642e01fSmrg set dummy $deplibs_check_method; shift 78474642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 78484642e01fSmrg for a_deplib in $deplibs; do 78494642e01fSmrg case $a_deplib in 78504642e01fSmrg -l*) 78514642e01fSmrg func_stripname -l '' "$a_deplib" 78524642e01fSmrg name=$func_stripname_result 78534642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 78544642e01fSmrg case " $predeps $postdeps " in 78554642e01fSmrg *" $a_deplib "*) 78566747b715Smrg func_append newdeplibs " $a_deplib" 78574642e01fSmrg a_deplib="" 78584642e01fSmrg ;; 78594642e01fSmrg esac 78604642e01fSmrg fi 78614642e01fSmrg if test -n "$a_deplib" ; then 78624642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 78634642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 78644642e01fSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 78654642e01fSmrg for potent_lib in $potential_libs; do 78664642e01fSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 78676747b715Smrg if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 78684642e01fSmrg $EGREP "$match_pattern_regex" > /dev/null; then 78696747b715Smrg func_append newdeplibs " $a_deplib" 78704642e01fSmrg a_deplib="" 78714642e01fSmrg break 2 78724642e01fSmrg fi 78734642e01fSmrg done 78744642e01fSmrg done 78754642e01fSmrg fi 78764642e01fSmrg if test -n "$a_deplib" ; then 78774642e01fSmrg droppeddeps=yes 78786747b715Smrg echo 78794642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 78806747b715Smrg echo "*** I have the capability to make that library automatically link in when" 78816747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 78826747b715Smrg echo "*** shared version of the library, which you do not appear to have" 78836747b715Smrg echo "*** because I did check the linker path looking for a file starting" 78844642e01fSmrg if test -z "$potlib" ; then 78854642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 78864642e01fSmrg else 78874642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 78884642e01fSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 78894642e01fSmrg fi 78904642e01fSmrg fi 78914642e01fSmrg ;; 78924642e01fSmrg *) 78934642e01fSmrg # Add a -L argument. 78946747b715Smrg func_append newdeplibs " $a_deplib" 78954642e01fSmrg ;; 78964642e01fSmrg esac 78974642e01fSmrg done # Gone through all deplibs. 78984642e01fSmrg ;; 78994642e01fSmrg none | unknown | *) 79004642e01fSmrg newdeplibs="" 79016747b715Smrg tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 79024642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 79034642e01fSmrg for i in $predeps $postdeps ; do 79044642e01fSmrg # can't use Xsed below, because $i might contain '/' 79056747b715Smrg tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 79064642e01fSmrg done 79074642e01fSmrg fi 79086747b715Smrg case $tmp_deplibs in 79096747b715Smrg *[!\ \ ]*) 79106747b715Smrg echo 79114642e01fSmrg if test "X$deplibs_check_method" = "Xnone"; then 79126747b715Smrg echo "*** Warning: inter-library dependencies are not supported in this platform." 79134642e01fSmrg else 79146747b715Smrg echo "*** Warning: inter-library dependencies are not known to be supported." 79154642e01fSmrg fi 79166747b715Smrg echo "*** All declared inter-library dependencies are being dropped." 79174642e01fSmrg droppeddeps=yes 79186747b715Smrg ;; 79196747b715Smrg esac 79204642e01fSmrg ;; 79214642e01fSmrg esac 79224642e01fSmrg versuffix=$versuffix_save 79234642e01fSmrg major=$major_save 79244642e01fSmrg release=$release_save 79254642e01fSmrg libname=$libname_save 79264642e01fSmrg name=$name_save 79274642e01fSmrg 79284642e01fSmrg case $host in 79294642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 79304642e01fSmrg # On Rhapsody replace the C library with the System framework 79316747b715Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 79324642e01fSmrg ;; 79334642e01fSmrg esac 79344642e01fSmrg 79354642e01fSmrg if test "$droppeddeps" = yes; then 79364642e01fSmrg if test "$module" = yes; then 79376747b715Smrg echo 79386747b715Smrg echo "*** Warning: libtool could not satisfy all declared inter-library" 79394642e01fSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 79406747b715Smrg echo "*** a static module, that should work as long as the dlopening" 79416747b715Smrg echo "*** application is linked with the -dlopen flag." 79424642e01fSmrg if test -z "$global_symbol_pipe"; then 79436747b715Smrg echo 79446747b715Smrg echo "*** However, this would only work if libtool was able to extract symbol" 79456747b715Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 79466747b715Smrg echo "*** not find such a program. So, this module is probably useless." 79476747b715Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 79484642e01fSmrg fi 79494642e01fSmrg if test "$build_old_libs" = no; then 79504642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 79514642e01fSmrg build_libtool_libs=module 79524642e01fSmrg build_old_libs=yes 79534642e01fSmrg else 79544642e01fSmrg build_libtool_libs=no 79554642e01fSmrg fi 79564642e01fSmrg else 79576747b715Smrg echo "*** The inter-library dependencies that have been dropped here will be" 79586747b715Smrg echo "*** automatically added whenever a program is linked with this library" 79596747b715Smrg echo "*** or is declared to -dlopen it." 79604642e01fSmrg 79614642e01fSmrg if test "$allow_undefined" = no; then 79626747b715Smrg echo 79636747b715Smrg echo "*** Since this library must not contain undefined symbols," 79646747b715Smrg echo "*** because either the platform does not support them or" 79656747b715Smrg echo "*** it was explicitly requested with -no-undefined," 79666747b715Smrg echo "*** libtool will only create a static version of it." 79674642e01fSmrg if test "$build_old_libs" = no; then 79684642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 79694642e01fSmrg build_libtool_libs=module 79704642e01fSmrg build_old_libs=yes 79714642e01fSmrg else 79724642e01fSmrg build_libtool_libs=no 79734642e01fSmrg fi 79744642e01fSmrg fi 79754642e01fSmrg fi 79764642e01fSmrg fi 79774642e01fSmrg # Done checking deplibs! 79784642e01fSmrg deplibs=$newdeplibs 79794642e01fSmrg fi 79804642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 79814642e01fSmrg case $host in 79824642e01fSmrg *-*-darwin*) 79836747b715Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 79846747b715Smrg new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 79856747b715Smrg deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 79864642e01fSmrg ;; 79874642e01fSmrg esac 79884642e01fSmrg 79894642e01fSmrg # move library search paths that coincide with paths to not yet 79904642e01fSmrg # installed libraries to the beginning of the library search list 79914642e01fSmrg new_libs= 79924642e01fSmrg for path in $notinst_path; do 79934642e01fSmrg case " $new_libs " in 79944642e01fSmrg *" -L$path/$objdir "*) ;; 79954642e01fSmrg *) 79964642e01fSmrg case " $deplibs " in 79974642e01fSmrg *" -L$path/$objdir "*) 79986747b715Smrg func_append new_libs " -L$path/$objdir" ;; 79994642e01fSmrg esac 80004642e01fSmrg ;; 80014642e01fSmrg esac 80024642e01fSmrg done 80034642e01fSmrg for deplib in $deplibs; do 80044642e01fSmrg case $deplib in 80054642e01fSmrg -L*) 80064642e01fSmrg case " $new_libs " in 80074642e01fSmrg *" $deplib "*) ;; 80086747b715Smrg *) func_append new_libs " $deplib" ;; 80094642e01fSmrg esac 80104642e01fSmrg ;; 80116747b715Smrg *) func_append new_libs " $deplib" ;; 80124642e01fSmrg esac 80134642e01fSmrg done 80144642e01fSmrg deplibs="$new_libs" 80154642e01fSmrg 80164642e01fSmrg # All the library-specific variables (install_libdir is set above). 80174642e01fSmrg library_names= 80184642e01fSmrg old_library= 80194642e01fSmrg dlname= 80204642e01fSmrg 80214642e01fSmrg # Test again, we may have decided not to build it any more 80224642e01fSmrg if test "$build_libtool_libs" = yes; then 80234642e01fSmrg if test "$hardcode_into_libs" = yes; then 80244642e01fSmrg # Hardcode the library paths 80254642e01fSmrg hardcode_libdirs= 80264642e01fSmrg dep_rpath= 80274642e01fSmrg rpath="$finalize_rpath" 80286747b715Smrg test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 80294642e01fSmrg for libdir in $rpath; do 80304642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 80314642e01fSmrg if test -n "$hardcode_libdir_separator"; then 80326747b715Smrg func_replace_sysroot "$libdir" 80336747b715Smrg libdir=$func_replace_sysroot_result 80344642e01fSmrg if test -z "$hardcode_libdirs"; then 80354642e01fSmrg hardcode_libdirs="$libdir" 80364642e01fSmrg else 80374642e01fSmrg # Just accumulate the unique libdirs. 80384642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 80394642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 80404642e01fSmrg ;; 80414642e01fSmrg *) 80426747b715Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 80434642e01fSmrg ;; 80444642e01fSmrg esac 80454642e01fSmrg fi 80464642e01fSmrg else 80474642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 80486747b715Smrg func_append dep_rpath " $flag" 80494642e01fSmrg fi 80504642e01fSmrg elif test -n "$runpath_var"; then 80514642e01fSmrg case "$perm_rpath " in 80524642e01fSmrg *" $libdir "*) ;; 80536747b715Smrg *) func_apped perm_rpath " $libdir" ;; 80544642e01fSmrg esac 80554642e01fSmrg fi 80564642e01fSmrg done 80574642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 80584642e01fSmrg if test -n "$hardcode_libdir_separator" && 80594642e01fSmrg test -n "$hardcode_libdirs"; then 80604642e01fSmrg libdir="$hardcode_libdirs" 80614642e01fSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 80624642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 80634642e01fSmrg else 80644642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 80654642e01fSmrg fi 80664642e01fSmrg fi 80674642e01fSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 80684642e01fSmrg # We should set the runpath_var. 80694642e01fSmrg rpath= 80704642e01fSmrg for dir in $perm_rpath; do 80716747b715Smrg func_append rpath "$dir:" 80724642e01fSmrg done 80734642e01fSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 80744642e01fSmrg fi 80754642e01fSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 80764642e01fSmrg fi 807705b261ecSmrg 80784642e01fSmrg shlibpath="$finalize_shlibpath" 80796747b715Smrg test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 80804642e01fSmrg if test -n "$shlibpath"; then 80814642e01fSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 80824642e01fSmrg fi 808305b261ecSmrg 80844642e01fSmrg # Get the real and link names of the library. 80854642e01fSmrg eval shared_ext=\"$shrext_cmds\" 80864642e01fSmrg eval library_names=\"$library_names_spec\" 80874642e01fSmrg set dummy $library_names 80884642e01fSmrg shift 80894642e01fSmrg realname="$1" 80904642e01fSmrg shift 809105b261ecSmrg 80924642e01fSmrg if test -n "$soname_spec"; then 80934642e01fSmrg eval soname=\"$soname_spec\" 80944642e01fSmrg else 80954642e01fSmrg soname="$realname" 80964642e01fSmrg fi 80974642e01fSmrg if test -z "$dlname"; then 80984642e01fSmrg dlname=$soname 80994642e01fSmrg fi 810005b261ecSmrg 81014642e01fSmrg lib="$output_objdir/$realname" 81024642e01fSmrg linknames= 81034642e01fSmrg for link 81044642e01fSmrg do 81056747b715Smrg func_append linknames " $link" 81064642e01fSmrg done 810705b261ecSmrg 81084642e01fSmrg # Use standard objects if they are pic 81096747b715Smrg test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 81104642e01fSmrg test "X$libobjs" = "X " && libobjs= 811105b261ecSmrg 81124642e01fSmrg delfiles= 81134642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 81144642e01fSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 81154642e01fSmrg export_symbols="$output_objdir/$libname.uexp" 81166747b715Smrg func_append delfiles " $export_symbols" 81174642e01fSmrg fi 811805b261ecSmrg 81194642e01fSmrg orig_export_symbols= 81204642e01fSmrg case $host_os in 81214642e01fSmrg cygwin* | mingw* | cegcc*) 81224642e01fSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 81234642e01fSmrg # exporting using user supplied symfile 81244642e01fSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 81254642e01fSmrg # and it's NOT already a .def file. Must figure out 81264642e01fSmrg # which of the given symbols are data symbols and tag 81274642e01fSmrg # them as such. So, trigger use of export_symbols_cmds. 81284642e01fSmrg # export_symbols gets reassigned inside the "prepare 81294642e01fSmrg # the list of exported symbols" if statement, so the 81304642e01fSmrg # include_expsyms logic still works. 81314642e01fSmrg orig_export_symbols="$export_symbols" 81324642e01fSmrg export_symbols= 81334642e01fSmrg always_export_symbols=yes 81344642e01fSmrg fi 81354642e01fSmrg fi 81364642e01fSmrg ;; 81374642e01fSmrg esac 813805b261ecSmrg 81394642e01fSmrg # Prepare the list of exported symbols 81404642e01fSmrg if test -z "$export_symbols"; then 81414642e01fSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 81424642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 81434642e01fSmrg export_symbols="$output_objdir/$libname.exp" 81444642e01fSmrg $opt_dry_run || $RM $export_symbols 81454642e01fSmrg cmds=$export_symbols_cmds 81464642e01fSmrg save_ifs="$IFS"; IFS='~' 81476747b715Smrg for cmd1 in $cmds; do 81484642e01fSmrg IFS="$save_ifs" 81496747b715Smrg # Take the normal branch if the nm_file_list_spec branch 81506747b715Smrg # doesn't work or if tool conversion is not needed. 81516747b715Smrg case $nm_file_list_spec~$to_tool_file_cmd in 81526747b715Smrg *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 81536747b715Smrg try_normal_branch=yes 81546747b715Smrg eval cmd=\"$cmd1\" 81556747b715Smrg func_len " $cmd" 81566747b715Smrg len=$func_len_result 81576747b715Smrg ;; 81586747b715Smrg *) 81596747b715Smrg try_normal_branch=no 81606747b715Smrg ;; 81616747b715Smrg esac 81626747b715Smrg if test "$try_normal_branch" = yes \ 81636747b715Smrg && { test "$len" -lt "$max_cmd_len" \ 81646747b715Smrg || test "$max_cmd_len" -le -1; } 81656747b715Smrg then 81666747b715Smrg func_show_eval "$cmd" 'exit $?' 81676747b715Smrg skipped_export=false 81686747b715Smrg elif test -n "$nm_file_list_spec"; then 81696747b715Smrg func_basename "$output" 81706747b715Smrg output_la=$func_basename_result 81716747b715Smrg save_libobjs=$libobjs 81726747b715Smrg save_output=$output 81736747b715Smrg output=${output_objdir}/${output_la}.nm 81746747b715Smrg func_to_tool_file "$output" 81756747b715Smrg libobjs=$nm_file_list_spec$func_to_tool_file_result 81766747b715Smrg func_append delfiles " $output" 81776747b715Smrg func_verbose "creating $NM input file list: $output" 81786747b715Smrg for obj in $save_libobjs; do 81796747b715Smrg func_to_tool_file "$obj" 81806747b715Smrg $ECHO "$func_to_tool_file_result" 81816747b715Smrg done > "$output" 81826747b715Smrg eval cmd=\"$cmd1\" 81834642e01fSmrg func_show_eval "$cmd" 'exit $?' 81846747b715Smrg output=$save_output 81856747b715Smrg libobjs=$save_libobjs 81864642e01fSmrg skipped_export=false 81874642e01fSmrg else 81884642e01fSmrg # The command line is too long to execute in one step. 81894642e01fSmrg func_verbose "using reloadable object file for export list..." 81904642e01fSmrg skipped_export=: 81914642e01fSmrg # Break out early, otherwise skipped_export may be 81924642e01fSmrg # set to false by a later but shorter cmd. 81934642e01fSmrg break 81944642e01fSmrg fi 81954642e01fSmrg done 81964642e01fSmrg IFS="$save_ifs" 81974642e01fSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 81984642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 81994642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 82004642e01fSmrg fi 82014642e01fSmrg fi 820205b261ecSmrg fi 820305b261ecSmrg 82044642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 82054642e01fSmrg tmp_export_symbols="$export_symbols" 82064642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 82076747b715Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 82084642e01fSmrg fi 820905b261ecSmrg 82104642e01fSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 82114642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 82124642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 82134642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 82144642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 82154642e01fSmrg # though. Also, the filter scales superlinearly with the number of 82164642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 82174642e01fSmrg # isn't a blessed tool. 82184642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 82196747b715Smrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 82204642e01fSmrg export_symbols=$output_objdir/$libname.def 82214642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 82224642e01fSmrg fi 822305b261ecSmrg 82244642e01fSmrg tmp_deplibs= 82254642e01fSmrg for test_deplib in $deplibs; do 82264642e01fSmrg case " $convenience " in 82274642e01fSmrg *" $test_deplib "*) ;; 82284642e01fSmrg *) 82296747b715Smrg func_append tmp_deplibs " $test_deplib" 82304642e01fSmrg ;; 82314642e01fSmrg esac 82324642e01fSmrg done 82334642e01fSmrg deplibs="$tmp_deplibs" 823405b261ecSmrg 82354642e01fSmrg if test -n "$convenience"; then 82364642e01fSmrg if test -n "$whole_archive_flag_spec" && 82374642e01fSmrg test "$compiler_needs_object" = yes && 82384642e01fSmrg test -z "$libobjs"; then 82394642e01fSmrg # extract the archives, so we have objects to list. 82404642e01fSmrg # TODO: could optimize this to just extract one archive. 82414642e01fSmrg whole_archive_flag_spec= 82424642e01fSmrg fi 82434642e01fSmrg if test -n "$whole_archive_flag_spec"; then 82444642e01fSmrg save_libobjs=$libobjs 82454642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 82464642e01fSmrg test "X$libobjs" = "X " && libobjs= 82474642e01fSmrg else 82484642e01fSmrg gentop="$output_objdir/${outputname}x" 82496747b715Smrg func_append generated " $gentop" 825005b261ecSmrg 82514642e01fSmrg func_extract_archives $gentop $convenience 82526747b715Smrg func_append libobjs " $func_extract_archives_result" 82534642e01fSmrg test "X$libobjs" = "X " && libobjs= 82544642e01fSmrg fi 825505b261ecSmrg fi 825605b261ecSmrg 82574642e01fSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 82584642e01fSmrg eval flag=\"$thread_safe_flag_spec\" 82596747b715Smrg func_append linker_flags " $flag" 826005b261ecSmrg fi 826105b261ecSmrg 82624642e01fSmrg # Make a backup of the uninstalled library when relinking 82636747b715Smrg if test "$opt_mode" = relink; then 82644642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 82654642e01fSmrg fi 826605b261ecSmrg 82674642e01fSmrg # Do each of the archive commands. 82684642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 82694642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 82704642e01fSmrg eval test_cmds=\"$module_expsym_cmds\" 82714642e01fSmrg cmds=$module_expsym_cmds 82724642e01fSmrg else 82734642e01fSmrg eval test_cmds=\"$module_cmds\" 82744642e01fSmrg cmds=$module_cmds 82754642e01fSmrg fi 827605b261ecSmrg else 82774642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 82784642e01fSmrg eval test_cmds=\"$archive_expsym_cmds\" 82794642e01fSmrg cmds=$archive_expsym_cmds 82804642e01fSmrg else 82814642e01fSmrg eval test_cmds=\"$archive_cmds\" 82824642e01fSmrg cmds=$archive_cmds 82834642e01fSmrg fi 828405b261ecSmrg fi 828505b261ecSmrg 82864642e01fSmrg if test "X$skipped_export" != "X:" && 82874642e01fSmrg func_len " $test_cmds" && 82884642e01fSmrg len=$func_len_result && 82894642e01fSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 82904642e01fSmrg : 82914642e01fSmrg else 82924642e01fSmrg # The command line is too long to link in one step, link piecewise 82934642e01fSmrg # or, if using GNU ld and skipped_export is not :, use a linker 82944642e01fSmrg # script. 829505b261ecSmrg 82964642e01fSmrg # Save the value of $output and $libobjs because we want to 82974642e01fSmrg # use them later. If we have whole_archive_flag_spec, we 82984642e01fSmrg # want to use save_libobjs as it was before 82994642e01fSmrg # whole_archive_flag_spec was expanded, because we can't 83004642e01fSmrg # assume the linker understands whole_archive_flag_spec. 83014642e01fSmrg # This may have to be revisited, in case too many 83024642e01fSmrg # convenience libraries get linked in and end up exceeding 83034642e01fSmrg # the spec. 83044642e01fSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 83054642e01fSmrg save_libobjs=$libobjs 83064642e01fSmrg fi 83074642e01fSmrg save_output=$output 83086747b715Smrg func_basename "$output" 83096747b715Smrg output_la=$func_basename_result 831005b261ecSmrg 83114642e01fSmrg # Clear the reloadable object creation command queue and 83124642e01fSmrg # initialize k to one. 83134642e01fSmrg test_cmds= 83144642e01fSmrg concat_cmds= 83154642e01fSmrg objlist= 83164642e01fSmrg last_robj= 83174642e01fSmrg k=1 83184642e01fSmrg 83194642e01fSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 83204642e01fSmrg output=${output_objdir}/${output_la}.lnkscript 83214642e01fSmrg func_verbose "creating GNU ld script: $output" 83226747b715Smrg echo 'INPUT (' > $output 83234642e01fSmrg for obj in $save_libobjs 832405b261ecSmrg do 83256747b715Smrg func_to_tool_file "$obj" 83266747b715Smrg $ECHO "$func_to_tool_file_result" >> $output 83274642e01fSmrg done 83286747b715Smrg echo ')' >> $output 83296747b715Smrg func_append delfiles " $output" 83306747b715Smrg func_to_tool_file "$output" 83316747b715Smrg output=$func_to_tool_file_result 83324642e01fSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 83334642e01fSmrg output=${output_objdir}/${output_la}.lnk 83344642e01fSmrg func_verbose "creating linker input file list: $output" 83354642e01fSmrg : > $output 83364642e01fSmrg set x $save_libobjs 83374642e01fSmrg shift 83384642e01fSmrg firstobj= 83394642e01fSmrg if test "$compiler_needs_object" = yes; then 83404642e01fSmrg firstobj="$1 " 83414642e01fSmrg shift 83424642e01fSmrg fi 83434642e01fSmrg for obj 83444642e01fSmrg do 83456747b715Smrg func_to_tool_file "$obj" 83466747b715Smrg $ECHO "$func_to_tool_file_result" >> $output 83474642e01fSmrg done 83486747b715Smrg func_append delfiles " $output" 83496747b715Smrg func_to_tool_file "$output" 83506747b715Smrg output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 83514642e01fSmrg else 83524642e01fSmrg if test -n "$save_libobjs"; then 83534642e01fSmrg func_verbose "creating reloadable object files..." 83544642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 83554642e01fSmrg eval test_cmds=\"$reload_cmds\" 83564642e01fSmrg func_len " $test_cmds" 83574642e01fSmrg len0=$func_len_result 83584642e01fSmrg len=$len0 83594642e01fSmrg 83604642e01fSmrg # Loop over the list of objects to be linked. 83614642e01fSmrg for obj in $save_libobjs 83624642e01fSmrg do 83634642e01fSmrg func_len " $obj" 83644642e01fSmrg func_arith $len + $func_len_result 83654642e01fSmrg len=$func_arith_result 83664642e01fSmrg if test "X$objlist" = X || 83674642e01fSmrg test "$len" -lt "$max_cmd_len"; then 83684642e01fSmrg func_append objlist " $obj" 83694642e01fSmrg else 83704642e01fSmrg # The command $test_cmds is almost too long, add a 83714642e01fSmrg # command to the queue. 83724642e01fSmrg if test "$k" -eq 1 ; then 83734642e01fSmrg # The first file doesn't have a previous command to add. 83746747b715Smrg reload_objs=$objlist 83756747b715Smrg eval concat_cmds=\"$reload_cmds\" 83764642e01fSmrg else 83774642e01fSmrg # All subsequent reloadable object files will link in 83784642e01fSmrg # the last one created. 83796747b715Smrg reload_objs="$objlist $last_robj" 83806747b715Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 83814642e01fSmrg fi 83824642e01fSmrg last_robj=$output_objdir/$output_la-${k}.$objext 83834642e01fSmrg func_arith $k + 1 83844642e01fSmrg k=$func_arith_result 83854642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 83866747b715Smrg objlist=" $obj" 83874642e01fSmrg func_len " $last_robj" 83884642e01fSmrg func_arith $len0 + $func_len_result 83894642e01fSmrg len=$func_arith_result 83904642e01fSmrg fi 83914642e01fSmrg done 83924642e01fSmrg # Handle the remaining objects by creating one last 83934642e01fSmrg # reloadable object file. All subsequent reloadable object 83944642e01fSmrg # files will link in the last one created. 83954642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 83966747b715Smrg reload_objs="$objlist $last_robj" 83976747b715Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 83984642e01fSmrg if test -n "$last_robj"; then 83994642e01fSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 84004642e01fSmrg fi 84016747b715Smrg func_append delfiles " $output" 840205b261ecSmrg 84034642e01fSmrg else 84044642e01fSmrg output= 84054642e01fSmrg fi 840605b261ecSmrg 84074642e01fSmrg if ${skipped_export-false}; then 84084642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 84094642e01fSmrg export_symbols="$output_objdir/$libname.exp" 84104642e01fSmrg $opt_dry_run || $RM $export_symbols 84114642e01fSmrg libobjs=$output 84124642e01fSmrg # Append the command to create the export file. 84134642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 84144642e01fSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 84154642e01fSmrg if test -n "$last_robj"; then 84164642e01fSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 84174642e01fSmrg fi 841805b261ecSmrg fi 841905b261ecSmrg 84204642e01fSmrg test -n "$save_libobjs" && 84214642e01fSmrg func_verbose "creating a temporary reloadable object file: $output" 842205b261ecSmrg 84234642e01fSmrg # Loop through the commands generated above and execute them. 84244642e01fSmrg save_ifs="$IFS"; IFS='~' 84254642e01fSmrg for cmd in $concat_cmds; do 84264642e01fSmrg IFS="$save_ifs" 84274642e01fSmrg $opt_silent || { 84284642e01fSmrg func_quote_for_expand "$cmd" 84294642e01fSmrg eval "func_echo $func_quote_for_expand_result" 84304642e01fSmrg } 84314642e01fSmrg $opt_dry_run || eval "$cmd" || { 84324642e01fSmrg lt_exit=$? 84334642e01fSmrg 84344642e01fSmrg # Restore the uninstalled library and exit 84356747b715Smrg if test "$opt_mode" = relink; then 84364642e01fSmrg ( cd "$output_objdir" && \ 84374642e01fSmrg $RM "${realname}T" && \ 84384642e01fSmrg $MV "${realname}U" "$realname" ) 84394642e01fSmrg fi 844005b261ecSmrg 84414642e01fSmrg exit $lt_exit 84424642e01fSmrg } 84434642e01fSmrg done 84444642e01fSmrg IFS="$save_ifs" 844505b261ecSmrg 84464642e01fSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 84474642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 84484642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 844905b261ecSmrg fi 845005b261ecSmrg fi 845105b261ecSmrg 84524642e01fSmrg if ${skipped_export-false}; then 84534642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 84544642e01fSmrg tmp_export_symbols="$export_symbols" 84554642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 84566747b715Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 84574642e01fSmrg fi 845805b261ecSmrg 84594642e01fSmrg if test -n "$orig_export_symbols"; then 84604642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 84614642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 84624642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 84634642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 84644642e01fSmrg # though. Also, the filter scales superlinearly with the number of 84654642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 84664642e01fSmrg # isn't a blessed tool. 84674642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 84686747b715Smrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 84694642e01fSmrg export_symbols=$output_objdir/$libname.def 84704642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 84714642e01fSmrg fi 84724642e01fSmrg fi 847305b261ecSmrg 84744642e01fSmrg libobjs=$output 84754642e01fSmrg # Restore the value of output. 84764642e01fSmrg output=$save_output 847705b261ecSmrg 84784642e01fSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 84794642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 84804642e01fSmrg test "X$libobjs" = "X " && libobjs= 84814642e01fSmrg fi 84824642e01fSmrg # Expand the library linking commands again to reset the 84834642e01fSmrg # value of $libobjs for piecewise linking. 848405b261ecSmrg 84854642e01fSmrg # Do each of the archive commands. 84864642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 84874642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 84884642e01fSmrg cmds=$module_expsym_cmds 84894642e01fSmrg else 84904642e01fSmrg cmds=$module_cmds 849105b261ecSmrg fi 849205b261ecSmrg else 84934642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 84944642e01fSmrg cmds=$archive_expsym_cmds 84954642e01fSmrg else 84964642e01fSmrg cmds=$archive_cmds 84974642e01fSmrg fi 849805b261ecSmrg fi 84994642e01fSmrg fi 850005b261ecSmrg 85014642e01fSmrg if test -n "$delfiles"; then 85024642e01fSmrg # Append the command to remove temporary files to $cmds. 85034642e01fSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 85044642e01fSmrg fi 850505b261ecSmrg 85064642e01fSmrg # Add any objects from preloaded convenience libraries 85074642e01fSmrg if test -n "$dlprefiles"; then 85084642e01fSmrg gentop="$output_objdir/${outputname}x" 85096747b715Smrg func_append generated " $gentop" 851005b261ecSmrg 85114642e01fSmrg func_extract_archives $gentop $dlprefiles 85126747b715Smrg func_append libobjs " $func_extract_archives_result" 85134642e01fSmrg test "X$libobjs" = "X " && libobjs= 85144642e01fSmrg fi 851505b261ecSmrg 85164642e01fSmrg save_ifs="$IFS"; IFS='~' 85174642e01fSmrg for cmd in $cmds; do 85184642e01fSmrg IFS="$save_ifs" 85194642e01fSmrg eval cmd=\"$cmd\" 85204642e01fSmrg $opt_silent || { 85214642e01fSmrg func_quote_for_expand "$cmd" 85224642e01fSmrg eval "func_echo $func_quote_for_expand_result" 85234642e01fSmrg } 85244642e01fSmrg $opt_dry_run || eval "$cmd" || { 85254642e01fSmrg lt_exit=$? 852605b261ecSmrg 85274642e01fSmrg # Restore the uninstalled library and exit 85286747b715Smrg if test "$opt_mode" = relink; then 85294642e01fSmrg ( cd "$output_objdir" && \ 85304642e01fSmrg $RM "${realname}T" && \ 85314642e01fSmrg $MV "${realname}U" "$realname" ) 85324642e01fSmrg fi 853305b261ecSmrg 85344642e01fSmrg exit $lt_exit 85354642e01fSmrg } 85364642e01fSmrg done 85374642e01fSmrg IFS="$save_ifs" 853805b261ecSmrg 85394642e01fSmrg # Restore the uninstalled library and exit 85406747b715Smrg if test "$opt_mode" = relink; then 85414642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 854205b261ecSmrg 85434642e01fSmrg if test -n "$convenience"; then 85444642e01fSmrg if test -z "$whole_archive_flag_spec"; then 85454642e01fSmrg func_show_eval '${RM}r "$gentop"' 85464642e01fSmrg fi 85474642e01fSmrg fi 854805b261ecSmrg 85494642e01fSmrg exit $EXIT_SUCCESS 85504642e01fSmrg fi 85514642e01fSmrg 85524642e01fSmrg # Create links to the real library. 85534642e01fSmrg for linkname in $linknames; do 85544642e01fSmrg if test "$realname" != "$linkname"; then 85554642e01fSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 855605b261ecSmrg fi 855705b261ecSmrg done 855805b261ecSmrg 85594642e01fSmrg # If -module or -export-dynamic was specified, set the dlname. 85604642e01fSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 85614642e01fSmrg # On all known operating systems, these are identical. 85624642e01fSmrg dlname="$soname" 85634642e01fSmrg fi 85644642e01fSmrg fi 856505b261ecSmrg ;; 856605b261ecSmrg 85674642e01fSmrg obj) 85684642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 85694642e01fSmrg func_warning "\`-dlopen' is ignored for objects" 85704642e01fSmrg fi 857105b261ecSmrg 85724642e01fSmrg case " $deplibs" in 85734642e01fSmrg *\ -l* | *\ -L*) 85744642e01fSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 857505b261ecSmrg esac 857605b261ecSmrg 85774642e01fSmrg test -n "$rpath" && \ 85784642e01fSmrg func_warning "\`-rpath' is ignored for objects" 85794642e01fSmrg 85804642e01fSmrg test -n "$xrpath" && \ 85814642e01fSmrg func_warning "\`-R' is ignored for objects" 858205b261ecSmrg 85834642e01fSmrg test -n "$vinfo" && \ 85844642e01fSmrg func_warning "\`-version-info' is ignored for objects" 858505b261ecSmrg 85864642e01fSmrg test -n "$release" && \ 85874642e01fSmrg func_warning "\`-release' is ignored for objects" 85884642e01fSmrg 85894642e01fSmrg case $output in 85904642e01fSmrg *.lo) 85914642e01fSmrg test -n "$objs$old_deplibs" && \ 85924642e01fSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 85934642e01fSmrg 85944642e01fSmrg libobj=$output 85954642e01fSmrg func_lo2o "$libobj" 85964642e01fSmrg obj=$func_lo2o_result 859705b261ecSmrg ;; 859805b261ecSmrg *) 85994642e01fSmrg libobj= 86004642e01fSmrg obj="$output" 860105b261ecSmrg ;; 860205b261ecSmrg esac 860305b261ecSmrg 86044642e01fSmrg # Delete the old objects. 86054642e01fSmrg $opt_dry_run || $RM $obj $libobj 860605b261ecSmrg 86074642e01fSmrg # Objects from convenience libraries. This assumes 86084642e01fSmrg # single-version convenience libraries. Whenever we create 86094642e01fSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 86104642e01fSmrg # the extraction. 86114642e01fSmrg reload_conv_objs= 86124642e01fSmrg gentop= 86134642e01fSmrg # reload_cmds runs $LD directly, so let us get rid of 86144642e01fSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 86154642e01fSmrg # turning comma into space.. 86164642e01fSmrg wl= 861705b261ecSmrg 86184642e01fSmrg if test -n "$convenience"; then 86194642e01fSmrg if test -n "$whole_archive_flag_spec"; then 86204642e01fSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 86216747b715Smrg reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 86224642e01fSmrg else 86234642e01fSmrg gentop="$output_objdir/${obj}x" 86246747b715Smrg func_append generated " $gentop" 862505b261ecSmrg 86264642e01fSmrg func_extract_archives $gentop $convenience 86274642e01fSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 86284642e01fSmrg fi 862905b261ecSmrg fi 863005b261ecSmrg 86316747b715Smrg # If we're not building shared, we need to use non_pic_objs 86326747b715Smrg test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 86336747b715Smrg 86344642e01fSmrg # Create the old-style object. 86356747b715Smrg reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 863605b261ecSmrg 86374642e01fSmrg output="$obj" 86384642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 863905b261ecSmrg 86404642e01fSmrg # Exit if we aren't doing a library object file. 86414642e01fSmrg if test -z "$libobj"; then 86424642e01fSmrg if test -n "$gentop"; then 86434642e01fSmrg func_show_eval '${RM}r "$gentop"' 86444642e01fSmrg fi 86454642e01fSmrg 86464642e01fSmrg exit $EXIT_SUCCESS 864705b261ecSmrg fi 86484642e01fSmrg 86494642e01fSmrg if test "$build_libtool_libs" != yes; then 86504642e01fSmrg if test -n "$gentop"; then 86514642e01fSmrg func_show_eval '${RM}r "$gentop"' 86524642e01fSmrg fi 86534642e01fSmrg 86544642e01fSmrg # Create an invalid libtool object if no PIC, so that we don't 86554642e01fSmrg # accidentally link it into a program. 86564642e01fSmrg # $show "echo timestamp > $libobj" 86574642e01fSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 86584642e01fSmrg exit $EXIT_SUCCESS 86594642e01fSmrg fi 86604642e01fSmrg 86614642e01fSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 86624642e01fSmrg # Only do commands if we really have different PIC objects. 86634642e01fSmrg reload_objs="$libobjs $reload_conv_objs" 86644642e01fSmrg output="$libobj" 86654642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 86664642e01fSmrg fi 86674642e01fSmrg 86684642e01fSmrg if test -n "$gentop"; then 86694642e01fSmrg func_show_eval '${RM}r "$gentop"' 86704642e01fSmrg fi 86714642e01fSmrg 86724642e01fSmrg exit $EXIT_SUCCESS 867305b261ecSmrg ;; 867405b261ecSmrg 86754642e01fSmrg prog) 86764642e01fSmrg case $host in 86774642e01fSmrg *cygwin*) func_stripname '' '.exe' "$output" 86784642e01fSmrg output=$func_stripname_result.exe;; 86794642e01fSmrg esac 86804642e01fSmrg test -n "$vinfo" && \ 86814642e01fSmrg func_warning "\`-version-info' is ignored for programs" 868205b261ecSmrg 86834642e01fSmrg test -n "$release" && \ 86844642e01fSmrg func_warning "\`-release' is ignored for programs" 868505b261ecSmrg 86864642e01fSmrg test "$preload" = yes \ 86874642e01fSmrg && test "$dlopen_support" = unknown \ 86884642e01fSmrg && test "$dlopen_self" = unknown \ 86894642e01fSmrg && test "$dlopen_self_static" = unknown && \ 86904642e01fSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 86914642e01fSmrg 86924642e01fSmrg case $host in 86934642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 86944642e01fSmrg # On Rhapsody replace the C library is the System framework 86956747b715Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 86966747b715Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 869705b261ecSmrg ;; 86984642e01fSmrg esac 869905b261ecSmrg 87004642e01fSmrg case $host in 87014642e01fSmrg *-*-darwin*) 87024642e01fSmrg # Don't allow lazy linking, it breaks C++ global constructors 87034642e01fSmrg # But is supposedly fixed on 10.4 or later (yay!). 87044642e01fSmrg if test "$tagname" = CXX ; then 87054642e01fSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 87064642e01fSmrg 10.[0123]) 87076747b715Smrg func_append compile_command " ${wl}-bind_at_load" 87086747b715Smrg func_append finalize_command " ${wl}-bind_at_load" 87094642e01fSmrg ;; 87104642e01fSmrg esac 871105b261ecSmrg fi 87124642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 87136747b715Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 87146747b715Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 87154642e01fSmrg ;; 87164642e01fSmrg esac 871705b261ecSmrg 871805b261ecSmrg 87194642e01fSmrg # move library search paths that coincide with paths to not yet 87204642e01fSmrg # installed libraries to the beginning of the library search list 87214642e01fSmrg new_libs= 87224642e01fSmrg for path in $notinst_path; do 87234642e01fSmrg case " $new_libs " in 87244642e01fSmrg *" -L$path/$objdir "*) ;; 87254642e01fSmrg *) 87264642e01fSmrg case " $compile_deplibs " in 87274642e01fSmrg *" -L$path/$objdir "*) 87286747b715Smrg func_append new_libs " -L$path/$objdir" ;; 872905b261ecSmrg esac 87304642e01fSmrg ;; 87314642e01fSmrg esac 87324642e01fSmrg done 87334642e01fSmrg for deplib in $compile_deplibs; do 87344642e01fSmrg case $deplib in 87354642e01fSmrg -L*) 87364642e01fSmrg case " $new_libs " in 87374642e01fSmrg *" $deplib "*) ;; 87386747b715Smrg *) func_append new_libs " $deplib" ;; 873905b261ecSmrg esac 87404642e01fSmrg ;; 87416747b715Smrg *) func_append new_libs " $deplib" ;; 87424642e01fSmrg esac 87434642e01fSmrg done 87444642e01fSmrg compile_deplibs="$new_libs" 874505b261ecSmrg 874605b261ecSmrg 87476747b715Smrg func_append compile_command " $compile_deplibs" 87486747b715Smrg func_append finalize_command " $finalize_deplibs" 874905b261ecSmrg 87504642e01fSmrg if test -n "$rpath$xrpath"; then 87514642e01fSmrg # If the user specified any rpath flags, then add them. 87524642e01fSmrg for libdir in $rpath $xrpath; do 87534642e01fSmrg # This is the magic to use -rpath. 87544642e01fSmrg case "$finalize_rpath " in 87554642e01fSmrg *" $libdir "*) ;; 87566747b715Smrg *) func_append finalize_rpath " $libdir" ;; 87574642e01fSmrg esac 87584642e01fSmrg done 87594642e01fSmrg fi 876005b261ecSmrg 87614642e01fSmrg # Now hardcode the library paths 87624642e01fSmrg rpath= 87634642e01fSmrg hardcode_libdirs= 87644642e01fSmrg for libdir in $compile_rpath $finalize_rpath; do 87654642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 87664642e01fSmrg if test -n "$hardcode_libdir_separator"; then 87674642e01fSmrg if test -z "$hardcode_libdirs"; then 87684642e01fSmrg hardcode_libdirs="$libdir" 87694642e01fSmrg else 87704642e01fSmrg # Just accumulate the unique libdirs. 87714642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 87724642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 87734642e01fSmrg ;; 87744642e01fSmrg *) 87756747b715Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 87764642e01fSmrg ;; 87774642e01fSmrg esac 87784642e01fSmrg fi 877905b261ecSmrg else 87804642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 87816747b715Smrg func_append rpath " $flag" 878205b261ecSmrg fi 87834642e01fSmrg elif test -n "$runpath_var"; then 87844642e01fSmrg case "$perm_rpath " in 87854642e01fSmrg *" $libdir "*) ;; 87866747b715Smrg *) func_append perm_rpath " $libdir" ;; 87874642e01fSmrg esac 87884642e01fSmrg fi 87894642e01fSmrg case $host in 87904642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 87914642e01fSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 87924642e01fSmrg case :$dllsearchpath: in 87934642e01fSmrg *":$libdir:"*) ;; 87944642e01fSmrg ::) dllsearchpath=$libdir;; 87956747b715Smrg *) func_append dllsearchpath ":$libdir";; 87964642e01fSmrg esac 87974642e01fSmrg case :$dllsearchpath: in 87984642e01fSmrg *":$testbindir:"*) ;; 87994642e01fSmrg ::) dllsearchpath=$testbindir;; 88006747b715Smrg *) func_append dllsearchpath ":$testbindir";; 88014642e01fSmrg esac 88024642e01fSmrg ;; 88034642e01fSmrg esac 88044642e01fSmrg done 88054642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 88064642e01fSmrg if test -n "$hardcode_libdir_separator" && 88074642e01fSmrg test -n "$hardcode_libdirs"; then 88084642e01fSmrg libdir="$hardcode_libdirs" 88094642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 88104642e01fSmrg fi 88114642e01fSmrg compile_rpath="$rpath" 881205b261ecSmrg 88134642e01fSmrg rpath= 88144642e01fSmrg hardcode_libdirs= 88154642e01fSmrg for libdir in $finalize_rpath; do 88164642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 88174642e01fSmrg if test -n "$hardcode_libdir_separator"; then 88184642e01fSmrg if test -z "$hardcode_libdirs"; then 88194642e01fSmrg hardcode_libdirs="$libdir" 88204642e01fSmrg else 88214642e01fSmrg # Just accumulate the unique libdirs. 88224642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 88234642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 88244642e01fSmrg ;; 88254642e01fSmrg *) 88266747b715Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 88274642e01fSmrg ;; 88284642e01fSmrg esac 88294642e01fSmrg fi 883005b261ecSmrg else 88314642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 88326747b715Smrg func_append rpath " $flag" 883305b261ecSmrg fi 88344642e01fSmrg elif test -n "$runpath_var"; then 88354642e01fSmrg case "$finalize_perm_rpath " in 88364642e01fSmrg *" $libdir "*) ;; 88376747b715Smrg *) func_append finalize_perm_rpath " $libdir" ;; 88384642e01fSmrg esac 883905b261ecSmrg fi 88404642e01fSmrg done 88414642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 88424642e01fSmrg if test -n "$hardcode_libdir_separator" && 88434642e01fSmrg test -n "$hardcode_libdirs"; then 88444642e01fSmrg libdir="$hardcode_libdirs" 88454642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 88464642e01fSmrg fi 88474642e01fSmrg finalize_rpath="$rpath" 884805b261ecSmrg 88494642e01fSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 88504642e01fSmrg # Transform all the library objects into standard objects. 88516747b715Smrg compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 88526747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 88534642e01fSmrg fi 885405b261ecSmrg 88554642e01fSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 885605b261ecSmrg 88574642e01fSmrg # template prelinking step 88584642e01fSmrg if test -n "$prelink_cmds"; then 88594642e01fSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 88604642e01fSmrg fi 886105b261ecSmrg 88624642e01fSmrg wrappers_required=yes 88634642e01fSmrg case $host in 88646747b715Smrg *cegcc* | *mingw32ce*) 88656747b715Smrg # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 88666747b715Smrg wrappers_required=no 88676747b715Smrg ;; 88684642e01fSmrg *cygwin* | *mingw* ) 88694642e01fSmrg if test "$build_libtool_libs" != yes; then 88704642e01fSmrg wrappers_required=no 88714642e01fSmrg fi 88724642e01fSmrg ;; 88734642e01fSmrg *) 88744642e01fSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 88754642e01fSmrg wrappers_required=no 88764642e01fSmrg fi 88774642e01fSmrg ;; 88784642e01fSmrg esac 88794642e01fSmrg if test "$wrappers_required" = no; then 88804642e01fSmrg # Replace the output file specification. 88816747b715Smrg compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 88824642e01fSmrg link_command="$compile_command$compile_rpath" 888305b261ecSmrg 88844642e01fSmrg # We have no uninstalled library dependencies, so finalize right now. 88854642e01fSmrg exit_status=0 88864642e01fSmrg func_show_eval "$link_command" 'exit_status=$?' 888705b261ecSmrg 88886747b715Smrg if test -n "$postlink_cmds"; then 88896747b715Smrg func_to_tool_file "$output" 88906747b715Smrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 88916747b715Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 88926747b715Smrg fi 88936747b715Smrg 88944642e01fSmrg # Delete the generated files. 88954642e01fSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 88964642e01fSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 889705b261ecSmrg fi 889805b261ecSmrg 88994642e01fSmrg exit $exit_status 89004642e01fSmrg fi 890105b261ecSmrg 89024642e01fSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 89034642e01fSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 89044642e01fSmrg fi 89054642e01fSmrg if test -n "$finalize_shlibpath"; then 89064642e01fSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 89074642e01fSmrg fi 890805b261ecSmrg 89094642e01fSmrg compile_var= 89104642e01fSmrg finalize_var= 89114642e01fSmrg if test -n "$runpath_var"; then 89124642e01fSmrg if test -n "$perm_rpath"; then 89134642e01fSmrg # We should set the runpath_var. 89144642e01fSmrg rpath= 89154642e01fSmrg for dir in $perm_rpath; do 89166747b715Smrg func_append rpath "$dir:" 89174642e01fSmrg done 89184642e01fSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 891905b261ecSmrg fi 89204642e01fSmrg if test -n "$finalize_perm_rpath"; then 89214642e01fSmrg # We should set the runpath_var. 89224642e01fSmrg rpath= 89234642e01fSmrg for dir in $finalize_perm_rpath; do 89246747b715Smrg func_append rpath "$dir:" 89254642e01fSmrg done 89264642e01fSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 892705b261ecSmrg fi 89284642e01fSmrg fi 892905b261ecSmrg 89304642e01fSmrg if test "$no_install" = yes; then 89314642e01fSmrg # We don't need to create a wrapper script. 89324642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 89334642e01fSmrg # Replace the output file specification. 89346747b715Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 89354642e01fSmrg # Delete the old output file. 89364642e01fSmrg $opt_dry_run || $RM $output 89374642e01fSmrg # Link the executable and exit 89384642e01fSmrg func_show_eval "$link_command" 'exit $?' 89396747b715Smrg 89406747b715Smrg if test -n "$postlink_cmds"; then 89416747b715Smrg func_to_tool_file "$output" 89426747b715Smrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 89436747b715Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 89446747b715Smrg fi 89456747b715Smrg 894605b261ecSmrg exit $EXIT_SUCCESS 89474642e01fSmrg fi 894805b261ecSmrg 89494642e01fSmrg if test "$hardcode_action" = relink; then 89504642e01fSmrg # Fast installation is not supported 89514642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 89524642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 89534642e01fSmrg 89544642e01fSmrg func_warning "this platform does not like uninstalled shared libraries" 89554642e01fSmrg func_warning "\`$output' will be relinked during installation" 89564642e01fSmrg else 89574642e01fSmrg if test "$fast_install" != no; then 89584642e01fSmrg link_command="$finalize_var$compile_command$finalize_rpath" 89594642e01fSmrg if test "$fast_install" = yes; then 89606747b715Smrg relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 89614642e01fSmrg else 89624642e01fSmrg # fast_install is set to needless 89634642e01fSmrg relink_command= 89644642e01fSmrg fi 896505b261ecSmrg else 89664642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 89674642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 896805b261ecSmrg fi 89694642e01fSmrg fi 897005b261ecSmrg 89714642e01fSmrg # Replace the output file specification. 89726747b715Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 897305b261ecSmrg 89744642e01fSmrg # Delete the old output files. 89754642e01fSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 897605b261ecSmrg 89774642e01fSmrg func_show_eval "$link_command" 'exit $?' 897805b261ecSmrg 89796747b715Smrg if test -n "$postlink_cmds"; then 89806747b715Smrg func_to_tool_file "$output_objdir/$outputname" 89816747b715Smrg 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'` 89826747b715Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 89836747b715Smrg fi 89846747b715Smrg 89854642e01fSmrg # Now create the wrapper script. 89864642e01fSmrg func_verbose "creating $output" 898705b261ecSmrg 89884642e01fSmrg # Quote the relink command for shipping. 89894642e01fSmrg if test -n "$relink_command"; then 89904642e01fSmrg # Preserve any variables that may affect compiler behavior 89914642e01fSmrg for var in $variables_saved_for_relink; do 89924642e01fSmrg if eval test -z \"\${$var+set}\"; then 89934642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 89944642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 89954642e01fSmrg relink_command="$var=; export $var; $relink_command" 899605b261ecSmrg else 89974642e01fSmrg func_quote_for_eval "$var_value" 89984642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 899905b261ecSmrg fi 90004642e01fSmrg done 90014642e01fSmrg relink_command="(cd `pwd`; $relink_command)" 90026747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 90034642e01fSmrg fi 90044642e01fSmrg 90054642e01fSmrg # Only actually do things if not in dry run mode. 90064642e01fSmrg $opt_dry_run || { 90074642e01fSmrg # win32 will think the script is a binary if it has 90084642e01fSmrg # a .exe suffix, so we strip it off here. 90094642e01fSmrg case $output in 90104642e01fSmrg *.exe) func_stripname '' '.exe' "$output" 90114642e01fSmrg output=$func_stripname_result ;; 90124642e01fSmrg esac 90134642e01fSmrg # test for cygwin because mv fails w/o .exe extensions 90144642e01fSmrg case $host in 90154642e01fSmrg *cygwin*) 90164642e01fSmrg exeext=.exe 90174642e01fSmrg func_stripname '' '.exe' "$outputname" 90184642e01fSmrg outputname=$func_stripname_result ;; 90194642e01fSmrg *) exeext= ;; 902005b261ecSmrg esac 90214642e01fSmrg case $host in 90224642e01fSmrg *cygwin* | *mingw* ) 90234642e01fSmrg func_dirname_and_basename "$output" "" "." 90244642e01fSmrg output_name=$func_basename_result 90254642e01fSmrg output_path=$func_dirname_result 90264642e01fSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 90274642e01fSmrg cwrapper="$output_path/$output_name.exe" 90284642e01fSmrg $RM $cwrappersource $cwrapper 90294642e01fSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 90304642e01fSmrg 90314642e01fSmrg func_emit_cwrapperexe_src > $cwrappersource 90324642e01fSmrg 90334642e01fSmrg # The wrapper executable is built using the $host compiler, 90344642e01fSmrg # because it contains $host paths and files. If cross- 90354642e01fSmrg # compiling, it, like the target executable, must be 90364642e01fSmrg # executed on the $host or under an emulation environment. 90374642e01fSmrg $opt_dry_run || { 90384642e01fSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 90394642e01fSmrg $STRIP $cwrapper 90404642e01fSmrg } 904105b261ecSmrg 90424642e01fSmrg # Now, create the wrapper script for func_source use: 90434642e01fSmrg func_ltwrapper_scriptname $cwrapper 90444642e01fSmrg $RM $func_ltwrapper_scriptname_result 90454642e01fSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 90464642e01fSmrg $opt_dry_run || { 90474642e01fSmrg # note: this script will not be executed, so do not chmod. 90484642e01fSmrg if test "x$build" = "x$host" ; then 90494642e01fSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 90504642e01fSmrg else 90514642e01fSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 90524642e01fSmrg fi 90534642e01fSmrg } 90544642e01fSmrg ;; 90554642e01fSmrg * ) 90564642e01fSmrg $RM $output 90574642e01fSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 905805b261ecSmrg 90594642e01fSmrg func_emit_wrapper no > $output 90604642e01fSmrg chmod +x $output 90614642e01fSmrg ;; 90624642e01fSmrg esac 90634642e01fSmrg } 90644642e01fSmrg exit $EXIT_SUCCESS 90654642e01fSmrg ;; 90664642e01fSmrg esac 906705b261ecSmrg 90684642e01fSmrg # See if we need to build an old-fashioned archive. 90694642e01fSmrg for oldlib in $oldlibs; do 907005b261ecSmrg 90714642e01fSmrg if test "$build_libtool_libs" = convenience; then 90724642e01fSmrg oldobjs="$libobjs_save $symfileobj" 90734642e01fSmrg addlibs="$convenience" 90744642e01fSmrg build_libtool_libs=no 90754642e01fSmrg else 90764642e01fSmrg if test "$build_libtool_libs" = module; then 90774642e01fSmrg oldobjs="$libobjs_save" 90784642e01fSmrg build_libtool_libs=no 90794642e01fSmrg else 90804642e01fSmrg oldobjs="$old_deplibs $non_pic_objects" 90814642e01fSmrg if test "$preload" = yes && test -f "$symfileobj"; then 90826747b715Smrg func_append oldobjs " $symfileobj" 90834642e01fSmrg fi 90844642e01fSmrg fi 90854642e01fSmrg addlibs="$old_convenience" 908605b261ecSmrg fi 908705b261ecSmrg 90884642e01fSmrg if test -n "$addlibs"; then 90894642e01fSmrg gentop="$output_objdir/${outputname}x" 90906747b715Smrg func_append generated " $gentop" 909105b261ecSmrg 90924642e01fSmrg func_extract_archives $gentop $addlibs 90936747b715Smrg func_append oldobjs " $func_extract_archives_result" 90944642e01fSmrg fi 909505b261ecSmrg 90964642e01fSmrg # Do each command in the archive commands. 90974642e01fSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 90984642e01fSmrg cmds=$old_archive_from_new_cmds 90994642e01fSmrg else 910005b261ecSmrg 91014642e01fSmrg # Add any objects from preloaded convenience libraries 91024642e01fSmrg if test -n "$dlprefiles"; then 91034642e01fSmrg gentop="$output_objdir/${outputname}x" 91046747b715Smrg func_append generated " $gentop" 910505b261ecSmrg 91064642e01fSmrg func_extract_archives $gentop $dlprefiles 91076747b715Smrg func_append oldobjs " $func_extract_archives_result" 91084642e01fSmrg fi 910905b261ecSmrg 91104642e01fSmrg # POSIX demands no paths to be encoded in archives. We have 91114642e01fSmrg # to avoid creating archives with duplicate basenames if we 91124642e01fSmrg # might have to extract them afterwards, e.g., when creating a 91134642e01fSmrg # static archive out of a convenience library, or when linking 91144642e01fSmrg # the entirety of a libtool archive into another (currently 91154642e01fSmrg # not supported by libtool). 91164642e01fSmrg if (for obj in $oldobjs 91174642e01fSmrg do 91184642e01fSmrg func_basename "$obj" 91194642e01fSmrg $ECHO "$func_basename_result" 91204642e01fSmrg done | sort | sort -uc >/dev/null 2>&1); then 91214642e01fSmrg : 91224642e01fSmrg else 91236747b715Smrg echo "copying selected object files to avoid basename conflicts..." 91244642e01fSmrg gentop="$output_objdir/${outputname}x" 91256747b715Smrg func_append generated " $gentop" 91264642e01fSmrg func_mkdir_p "$gentop" 91274642e01fSmrg save_oldobjs=$oldobjs 91284642e01fSmrg oldobjs= 91294642e01fSmrg counter=1 91304642e01fSmrg for obj in $save_oldobjs 91314642e01fSmrg do 91324642e01fSmrg func_basename "$obj" 91334642e01fSmrg objbase="$func_basename_result" 91344642e01fSmrg case " $oldobjs " in 91354642e01fSmrg " ") oldobjs=$obj ;; 91364642e01fSmrg *[\ /]"$objbase "*) 91374642e01fSmrg while :; do 91384642e01fSmrg # Make sure we don't pick an alternate name that also 91394642e01fSmrg # overlaps. 91404642e01fSmrg newobj=lt$counter-$objbase 91414642e01fSmrg func_arith $counter + 1 91424642e01fSmrg counter=$func_arith_result 91434642e01fSmrg case " $oldobjs " in 91444642e01fSmrg *[\ /]"$newobj "*) ;; 91454642e01fSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 91464642e01fSmrg esac 91474642e01fSmrg done 91484642e01fSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 91496747b715Smrg func_append oldobjs " $gentop/$newobj" 91504642e01fSmrg ;; 91516747b715Smrg *) func_append oldobjs " $obj" ;; 91524642e01fSmrg esac 915305b261ecSmrg done 915405b261ecSmrg fi 91554642e01fSmrg eval cmds=\"$old_archive_cmds\" 915605b261ecSmrg 91574642e01fSmrg func_len " $cmds" 91584642e01fSmrg len=$func_len_result 91594642e01fSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 91604642e01fSmrg cmds=$old_archive_cmds 91616747b715Smrg elif test -n "$archiver_list_spec"; then 91626747b715Smrg func_verbose "using command file archive linking..." 91636747b715Smrg for obj in $oldobjs 91646747b715Smrg do 91656747b715Smrg func_to_tool_file "$obj" 91666747b715Smrg $ECHO "$func_to_tool_file_result" 91676747b715Smrg done > $output_objdir/$libname.libcmd 91686747b715Smrg func_to_tool_file "$output_objdir/$libname.libcmd" 91696747b715Smrg oldobjs=" $archiver_list_spec$func_to_tool_file_result" 91706747b715Smrg cmds=$old_archive_cmds 91714642e01fSmrg else 91724642e01fSmrg # the command line is too long to link in one step, link in parts 91734642e01fSmrg func_verbose "using piecewise archive linking..." 91744642e01fSmrg save_RANLIB=$RANLIB 91754642e01fSmrg RANLIB=: 91764642e01fSmrg objlist= 91774642e01fSmrg concat_cmds= 91784642e01fSmrg save_oldobjs=$oldobjs 91794642e01fSmrg oldobjs= 91804642e01fSmrg # Is there a better way of finding the last object in the list? 91814642e01fSmrg for obj in $save_oldobjs 91824642e01fSmrg do 91834642e01fSmrg last_oldobj=$obj 91844642e01fSmrg done 91854642e01fSmrg eval test_cmds=\"$old_archive_cmds\" 91864642e01fSmrg func_len " $test_cmds" 91874642e01fSmrg len0=$func_len_result 91884642e01fSmrg len=$len0 91894642e01fSmrg for obj in $save_oldobjs 91904642e01fSmrg do 91914642e01fSmrg func_len " $obj" 91924642e01fSmrg func_arith $len + $func_len_result 91934642e01fSmrg len=$func_arith_result 91944642e01fSmrg func_append objlist " $obj" 91954642e01fSmrg if test "$len" -lt "$max_cmd_len"; then 91964642e01fSmrg : 91974642e01fSmrg else 91984642e01fSmrg # the above command should be used before it gets too long 91994642e01fSmrg oldobjs=$objlist 92004642e01fSmrg if test "$obj" = "$last_oldobj" ; then 92014642e01fSmrg RANLIB=$save_RANLIB 92024642e01fSmrg fi 92034642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 92044642e01fSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 92054642e01fSmrg objlist= 92064642e01fSmrg len=$len0 92074642e01fSmrg fi 92084642e01fSmrg done 92094642e01fSmrg RANLIB=$save_RANLIB 92104642e01fSmrg oldobjs=$objlist 92114642e01fSmrg if test "X$oldobjs" = "X" ; then 92124642e01fSmrg eval cmds=\"\$concat_cmds\" 92134642e01fSmrg else 92144642e01fSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 92154642e01fSmrg fi 92164642e01fSmrg fi 92174642e01fSmrg fi 92184642e01fSmrg func_execute_cmds "$cmds" 'exit $?' 921905b261ecSmrg done 922005b261ecSmrg 92214642e01fSmrg test -n "$generated" && \ 92224642e01fSmrg func_show_eval "${RM}r$generated" 922305b261ecSmrg 92244642e01fSmrg # Now create the libtool archive. 92254642e01fSmrg case $output in 92264642e01fSmrg *.la) 92274642e01fSmrg old_library= 92284642e01fSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 92294642e01fSmrg func_verbose "creating $output" 923005b261ecSmrg 92314642e01fSmrg # Preserve any variables that may affect compiler behavior 92324642e01fSmrg for var in $variables_saved_for_relink; do 92334642e01fSmrg if eval test -z \"\${$var+set}\"; then 92344642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 92354642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 92364642e01fSmrg relink_command="$var=; export $var; $relink_command" 923705b261ecSmrg else 92384642e01fSmrg func_quote_for_eval "$var_value" 92394642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 924005b261ecSmrg fi 92414642e01fSmrg done 92424642e01fSmrg # Quote the link command for shipping. 92434642e01fSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 92446747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 92454642e01fSmrg if test "$hardcode_automatic" = yes ; then 92464642e01fSmrg relink_command= 92474642e01fSmrg fi 924805b261ecSmrg 92494642e01fSmrg # Only create the output if not a dry run. 92504642e01fSmrg $opt_dry_run || { 92514642e01fSmrg for installed in no yes; do 92524642e01fSmrg if test "$installed" = yes; then 92534642e01fSmrg if test -z "$install_libdir"; then 92544642e01fSmrg break 92554642e01fSmrg fi 92564642e01fSmrg output="$output_objdir/$outputname"i 92574642e01fSmrg # Replace all uninstalled libtool libraries with the installed ones 92584642e01fSmrg newdependency_libs= 92594642e01fSmrg for deplib in $dependency_libs; do 92604642e01fSmrg case $deplib in 92614642e01fSmrg *.la) 92624642e01fSmrg func_basename "$deplib" 92634642e01fSmrg name="$func_basename_result" 92644642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 92654642e01fSmrg test -z "$libdir" && \ 92664642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 92676747b715Smrg func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 92686747b715Smrg ;; 92696747b715Smrg -L*) 92706747b715Smrg func_stripname -L '' "$deplib" 92716747b715Smrg func_replace_sysroot "$func_stripname_result" 92726747b715Smrg func_append newdependency_libs " -L$func_replace_sysroot_result" 92734642e01fSmrg ;; 92746747b715Smrg -R*) 92756747b715Smrg func_stripname -R '' "$deplib" 92766747b715Smrg func_replace_sysroot "$func_stripname_result" 92776747b715Smrg func_append newdependency_libs " -R$func_replace_sysroot_result" 92786747b715Smrg ;; 92796747b715Smrg *) func_append newdependency_libs " $deplib" ;; 92804642e01fSmrg esac 92814642e01fSmrg done 92824642e01fSmrg dependency_libs="$newdependency_libs" 92834642e01fSmrg newdlfiles= 92844642e01fSmrg 92854642e01fSmrg for lib in $dlfiles; do 92864642e01fSmrg case $lib in 92874642e01fSmrg *.la) 92884642e01fSmrg func_basename "$lib" 92894642e01fSmrg name="$func_basename_result" 92904642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 92914642e01fSmrg test -z "$libdir" && \ 92924642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 92936747b715Smrg func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 92944642e01fSmrg ;; 92956747b715Smrg *) func_append newdlfiles " $lib" ;; 92964642e01fSmrg esac 92974642e01fSmrg done 92984642e01fSmrg dlfiles="$newdlfiles" 92994642e01fSmrg newdlprefiles= 93004642e01fSmrg for lib in $dlprefiles; do 93014642e01fSmrg case $lib in 93024642e01fSmrg *.la) 93034642e01fSmrg # Only pass preopened files to the pseudo-archive (for 93044642e01fSmrg # eventual linking with the app. that links it) if we 93054642e01fSmrg # didn't already link the preopened objects directly into 93064642e01fSmrg # the library: 93074642e01fSmrg func_basename "$lib" 93084642e01fSmrg name="$func_basename_result" 93094642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 93104642e01fSmrg test -z "$libdir" && \ 93114642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 93126747b715Smrg func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 93134642e01fSmrg ;; 93144642e01fSmrg esac 93154642e01fSmrg done 93164642e01fSmrg dlprefiles="$newdlprefiles" 93174642e01fSmrg else 93184642e01fSmrg newdlfiles= 93194642e01fSmrg for lib in $dlfiles; do 93204642e01fSmrg case $lib in 93214642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93224642e01fSmrg *) abs=`pwd`"/$lib" ;; 93234642e01fSmrg esac 93246747b715Smrg func_append newdlfiles " $abs" 93254642e01fSmrg done 93264642e01fSmrg dlfiles="$newdlfiles" 93274642e01fSmrg newdlprefiles= 93284642e01fSmrg for lib in $dlprefiles; do 93294642e01fSmrg case $lib in 93304642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93314642e01fSmrg *) abs=`pwd`"/$lib" ;; 93324642e01fSmrg esac 93336747b715Smrg func_append newdlprefiles " $abs" 93344642e01fSmrg done 93354642e01fSmrg dlprefiles="$newdlprefiles" 93364642e01fSmrg fi 93374642e01fSmrg $RM $output 93384642e01fSmrg # place dlname in correct position for cygwin 93396747b715Smrg # In fact, it would be nice if we could use this code for all target 93406747b715Smrg # systems that can't hard-code library paths into their executables 93416747b715Smrg # and that have no shared library path variable independent of PATH, 93426747b715Smrg # but it turns out we can't easily determine that from inspecting 93436747b715Smrg # libtool variables, so we have to hard-code the OSs to which it 93446747b715Smrg # applies here; at the moment, that means platforms that use the PE 93456747b715Smrg # object format with DLL files. See the long comment at the top of 93466747b715Smrg # tests/bindir.at for full details. 93474642e01fSmrg tdlname=$dlname 93484642e01fSmrg case $host,$output,$installed,$module,$dlname in 93496747b715Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 93506747b715Smrg # If a -bindir argument was supplied, place the dll there. 93516747b715Smrg if test "x$bindir" != x ; 93526747b715Smrg then 93536747b715Smrg func_relative_path "$install_libdir" "$bindir" 93546747b715Smrg tdlname=$func_relative_path_result$dlname 93556747b715Smrg else 93566747b715Smrg # Otherwise fall back on heuristic. 93576747b715Smrg tdlname=../bin/$dlname 93586747b715Smrg fi 93596747b715Smrg ;; 93604642e01fSmrg esac 93614642e01fSmrg $ECHO > $output "\ 93624642e01fSmrg# $outputname - a libtool library file 93634642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 93644642e01fSmrg# 93654642e01fSmrg# Please DO NOT delete this file! 93664642e01fSmrg# It is necessary for linking the library. 936705b261ecSmrg 93684642e01fSmrg# The name that we can dlopen(3). 93694642e01fSmrgdlname='$tdlname' 937005b261ecSmrg 93714642e01fSmrg# Names of this library. 93724642e01fSmrglibrary_names='$library_names' 937305b261ecSmrg 93744642e01fSmrg# The name of the static archive. 93754642e01fSmrgold_library='$old_library' 937605b261ecSmrg 93774642e01fSmrg# Linker flags that can not go in dependency_libs. 93784642e01fSmrginherited_linker_flags='$new_inherited_linker_flags' 937905b261ecSmrg 93804642e01fSmrg# Libraries that this one depends upon. 93814642e01fSmrgdependency_libs='$dependency_libs' 938205b261ecSmrg 93834642e01fSmrg# Names of additional weak libraries provided by this library 93844642e01fSmrgweak_library_names='$weak_libs' 938505b261ecSmrg 93864642e01fSmrg# Version information for $libname. 93874642e01fSmrgcurrent=$current 93884642e01fSmrgage=$age 93894642e01fSmrgrevision=$revision 939005b261ecSmrg 93914642e01fSmrg# Is this an already installed library? 93924642e01fSmrginstalled=$installed 939305b261ecSmrg 93944642e01fSmrg# Should we warn about portability when linking against -modules? 93954642e01fSmrgshouldnotlink=$module 939605b261ecSmrg 93974642e01fSmrg# Files to dlopen/dlpreopen 93984642e01fSmrgdlopen='$dlfiles' 93994642e01fSmrgdlpreopen='$dlprefiles' 940005b261ecSmrg 94014642e01fSmrg# Directory that this library needs to be installed in: 94024642e01fSmrglibdir='$install_libdir'" 94034642e01fSmrg if test "$installed" = no && test "$need_relink" = yes; then 94044642e01fSmrg $ECHO >> $output "\ 94054642e01fSmrgrelink_command=\"$relink_command\"" 94064642e01fSmrg fi 94074642e01fSmrg done 94084642e01fSmrg } 940905b261ecSmrg 94104642e01fSmrg # Do a symbolic link so that the libtool archive can be found in 94114642e01fSmrg # LD_LIBRARY_PATH before the program is installed. 94124642e01fSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 94134642e01fSmrg ;; 94144642e01fSmrg esac 94154642e01fSmrg exit $EXIT_SUCCESS 94164642e01fSmrg} 941705b261ecSmrg 94186747b715Smrg{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 94194642e01fSmrg func_mode_link ${1+"$@"} 942005b261ecSmrg 942105b261ecSmrg 94224642e01fSmrg# func_mode_uninstall arg... 94234642e01fSmrgfunc_mode_uninstall () 94244642e01fSmrg{ 94254642e01fSmrg $opt_debug 94264642e01fSmrg RM="$nonopt" 942705b261ecSmrg files= 942805b261ecSmrg rmforce= 942905b261ecSmrg exit_status=0 943005b261ecSmrg 943105b261ecSmrg # This variable tells wrapper scripts just to set variables rather 943205b261ecSmrg # than running their programs. 943305b261ecSmrg libtool_install_magic="$magic" 943405b261ecSmrg 943505b261ecSmrg for arg 943605b261ecSmrg do 943705b261ecSmrg case $arg in 94386747b715Smrg -f) func_append RM " $arg"; rmforce=yes ;; 94396747b715Smrg -*) func_append RM " $arg" ;; 94406747b715Smrg *) func_append files " $arg" ;; 944105b261ecSmrg esac 944205b261ecSmrg done 944305b261ecSmrg 94444642e01fSmrg test -z "$RM" && \ 94454642e01fSmrg func_fatal_help "you must specify an RM program" 944605b261ecSmrg 944705b261ecSmrg rmdirs= 944805b261ecSmrg 944905b261ecSmrg for file in $files; do 94504642e01fSmrg func_dirname "$file" "" "." 94514642e01fSmrg dir="$func_dirname_result" 94524642e01fSmrg if test "X$dir" = X.; then 94536747b715Smrg odir="$objdir" 945405b261ecSmrg else 94556747b715Smrg odir="$dir/$objdir" 945605b261ecSmrg fi 94574642e01fSmrg func_basename "$file" 94584642e01fSmrg name="$func_basename_result" 94596747b715Smrg test "$opt_mode" = uninstall && odir="$dir" 946005b261ecSmrg 94616747b715Smrg # Remember odir for removal later, being careful to avoid duplicates 94626747b715Smrg if test "$opt_mode" = clean; then 946305b261ecSmrg case " $rmdirs " in 94646747b715Smrg *" $odir "*) ;; 94656747b715Smrg *) func_append rmdirs " $odir" ;; 946605b261ecSmrg esac 946705b261ecSmrg fi 946805b261ecSmrg 946905b261ecSmrg # Don't error if the file doesn't exist and rm -f was used. 94704642e01fSmrg if { test -L "$file"; } >/dev/null 2>&1 || 94714642e01fSmrg { test -h "$file"; } >/dev/null 2>&1 || 94724642e01fSmrg test -f "$file"; then 947305b261ecSmrg : 947405b261ecSmrg elif test -d "$file"; then 947505b261ecSmrg exit_status=1 947605b261ecSmrg continue 947705b261ecSmrg elif test "$rmforce" = yes; then 947805b261ecSmrg continue 947905b261ecSmrg fi 948005b261ecSmrg 948105b261ecSmrg rmfiles="$file" 948205b261ecSmrg 948305b261ecSmrg case $name in 948405b261ecSmrg *.la) 948505b261ecSmrg # Possibly a libtool archive, so verify it. 94864642e01fSmrg if func_lalib_p "$file"; then 94874642e01fSmrg func_source $dir/$name 948805b261ecSmrg 948905b261ecSmrg # Delete the libtool libraries and symlinks. 949005b261ecSmrg for n in $library_names; do 94916747b715Smrg func_append rmfiles " $odir/$n" 949205b261ecSmrg done 94936747b715Smrg test -n "$old_library" && func_append rmfiles " $odir/$old_library" 949405b261ecSmrg 94956747b715Smrg case "$opt_mode" in 949605b261ecSmrg clean) 94976747b715Smrg case " $library_names " in 949805b261ecSmrg *" $dlname "*) ;; 94996747b715Smrg *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 950005b261ecSmrg esac 95016747b715Smrg test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 950205b261ecSmrg ;; 950305b261ecSmrg uninstall) 950405b261ecSmrg if test -n "$library_names"; then 950505b261ecSmrg # Do each command in the postuninstall commands. 95064642e01fSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 950705b261ecSmrg fi 950805b261ecSmrg 950905b261ecSmrg if test -n "$old_library"; then 951005b261ecSmrg # Do each command in the old_postuninstall commands. 95114642e01fSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 951205b261ecSmrg fi 951305b261ecSmrg # FIXME: should reinstall the best remaining shared library. 951405b261ecSmrg ;; 951505b261ecSmrg esac 951605b261ecSmrg fi 951705b261ecSmrg ;; 951805b261ecSmrg 951905b261ecSmrg *.lo) 952005b261ecSmrg # Possibly a libtool object, so verify it. 95214642e01fSmrg if func_lalib_p "$file"; then 952205b261ecSmrg 952305b261ecSmrg # Read the .lo file 95244642e01fSmrg func_source $dir/$name 952505b261ecSmrg 952605b261ecSmrg # Add PIC object to the list of files to remove. 95274642e01fSmrg if test -n "$pic_object" && 95284642e01fSmrg test "$pic_object" != none; then 95296747b715Smrg func_append rmfiles " $dir/$pic_object" 953005b261ecSmrg fi 953105b261ecSmrg 953205b261ecSmrg # Add non-PIC object to the list of files to remove. 95334642e01fSmrg if test -n "$non_pic_object" && 95344642e01fSmrg test "$non_pic_object" != none; then 95356747b715Smrg func_append rmfiles " $dir/$non_pic_object" 953605b261ecSmrg fi 953705b261ecSmrg fi 953805b261ecSmrg ;; 953905b261ecSmrg 954005b261ecSmrg *) 95416747b715Smrg if test "$opt_mode" = clean ; then 954205b261ecSmrg noexename=$name 954305b261ecSmrg case $file in 954405b261ecSmrg *.exe) 95454642e01fSmrg func_stripname '' '.exe' "$file" 95464642e01fSmrg file=$func_stripname_result 95474642e01fSmrg func_stripname '' '.exe' "$name" 95484642e01fSmrg noexename=$func_stripname_result 954905b261ecSmrg # $file with .exe has already been added to rmfiles, 955005b261ecSmrg # add $file without .exe 95516747b715Smrg func_append rmfiles " $file" 955205b261ecSmrg ;; 955305b261ecSmrg esac 955405b261ecSmrg # Do a test to see if this is a libtool program. 95554642e01fSmrg if func_ltwrapper_p "$file"; then 95564642e01fSmrg if func_ltwrapper_executable_p "$file"; then 95574642e01fSmrg func_ltwrapper_scriptname "$file" 95584642e01fSmrg relink_command= 95594642e01fSmrg func_source $func_ltwrapper_scriptname_result 95606747b715Smrg func_append rmfiles " $func_ltwrapper_scriptname_result" 95614642e01fSmrg else 95624642e01fSmrg relink_command= 95634642e01fSmrg func_source $dir/$noexename 95644642e01fSmrg fi 956505b261ecSmrg 956605b261ecSmrg # note $name still contains .exe if it was in $file originally 956705b261ecSmrg # as does the version of $file that was added into $rmfiles 95686747b715Smrg func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 956905b261ecSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 95706747b715Smrg func_append rmfiles " $odir/lt-$name" 957105b261ecSmrg fi 957205b261ecSmrg if test "X$noexename" != "X$name" ; then 95736747b715Smrg func_append rmfiles " $odir/lt-${noexename}.c" 957405b261ecSmrg fi 957505b261ecSmrg fi 957605b261ecSmrg fi 957705b261ecSmrg ;; 957805b261ecSmrg esac 95794642e01fSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 958005b261ecSmrg done 958105b261ecSmrg 958205b261ecSmrg # Try to remove the ${objdir}s in the directories where we deleted files 958305b261ecSmrg for dir in $rmdirs; do 958405b261ecSmrg if test -d "$dir"; then 95854642e01fSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 958605b261ecSmrg fi 958705b261ecSmrg done 958805b261ecSmrg 958905b261ecSmrg exit $exit_status 95904642e01fSmrg} 959105b261ecSmrg 95926747b715Smrg{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 95934642e01fSmrg func_mode_uninstall ${1+"$@"} 959405b261ecSmrg 95956747b715Smrgtest -z "$opt_mode" && { 95964642e01fSmrg help="$generic_help" 95974642e01fSmrg func_fatal_help "you must specify a MODE" 95984642e01fSmrg} 95994642e01fSmrg 96004642e01fSmrgtest -z "$exec_cmd" && \ 96016747b715Smrg func_fatal_help "invalid operation mode \`$opt_mode'" 960205b261ecSmrg 960305b261ecSmrgif test -n "$exec_cmd"; then 96044642e01fSmrg eval exec "$exec_cmd" 960505b261ecSmrg exit $EXIT_FAILURE 960605b261ecSmrgfi 960705b261ecSmrg 96084642e01fSmrgexit $exit_status 960905b261ecSmrg 961005b261ecSmrg 961105b261ecSmrg# The TAGs below are defined such that we never get into a situation 961205b261ecSmrg# in which we disable both kinds of libraries. Given conflicting 961305b261ecSmrg# choices, we go for a static library, that is the most portable, 961405b261ecSmrg# since we can't tell whether shared libraries were disabled because 961505b261ecSmrg# the user asked for that or because the platform doesn't support 961605b261ecSmrg# them. This is particularly important on AIX, because we don't 961705b261ecSmrg# support having both static and shared libraries enabled at the same 961805b261ecSmrg# time on that platform, so we default to a shared-only configuration. 961905b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only 962005b261ecSmrg# configuration. But we'll never go from static-only to shared-only. 962105b261ecSmrg 962205b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 96234642e01fSmrgbuild_libtool_libs=no 96244642e01fSmrgbuild_old_libs=yes 962505b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 962605b261ecSmrg 962705b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 96284642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 962905b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static 963005b261ecSmrg 963105b261ecSmrg# Local Variables: 963205b261ecSmrg# mode:shell-script 963305b261ecSmrg# sh-indentation:2 963405b261ecSmrg# End: 96354642e01fSmrg# vi:sw=2 96364642e01fSmrg 9637