ltmain.sh revision 475c125c
1475c125cSmrg# Generated from ltmain.m4sh. 24642e01fSmrg 3475c125cSmrg# libtool (GNU libtool) 2.2.10 44642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 54642e01fSmrg 66747b715Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 76747b715Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 84642e01fSmrg# This is free software; see the source for copying conditions. There is NO 94642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 104642e01fSmrg 114642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify 1205b261ecSmrg# it under the terms of the GNU General Public License as published by 1305b261ecSmrg# the Free Software Foundation; either version 2 of the License, or 1405b261ecSmrg# (at your option) any later version. 1505b261ecSmrg# 164642e01fSmrg# As a special exception to the GNU General Public License, 174642e01fSmrg# if you distribute this file as part of a program or library that 184642e01fSmrg# is built using GNU Libtool, you may include this file under the 194642e01fSmrg# same distribution terms that you use for the rest of that program. 204642e01fSmrg# 214642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but 2205b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 2305b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2405b261ecSmrg# General Public License for more details. 2505b261ecSmrg# 2605b261ecSmrg# You should have received a copy of the GNU General Public License 274642e01fSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 284642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 294642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc., 304642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3105b261ecSmrg 324642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 334642e01fSmrg# 344642e01fSmrg# Provide generalized library-building support services. 354642e01fSmrg# 366747b715Smrg# --config show all configuration variables 376747b715Smrg# --debug enable verbose shell tracing 386747b715Smrg# -n, --dry-run display commands without modifying any files 396747b715Smrg# --features display basic configuration information and exit 406747b715Smrg# --mode=MODE use operation mode MODE 416747b715Smrg# --preserve-dup-deps don't remove duplicate dependency libraries 426747b715Smrg# --quiet, --silent don't print informational messages 436747b715Smrg# --no-quiet, --no-silent 446747b715Smrg# print informational messages (default) 456747b715Smrg# --tag=TAG use configuration variables from tag TAG 466747b715Smrg# -v, --verbose print more informational messages than default 476747b715Smrg# --no-verbose don't print the extra informational messages 486747b715Smrg# --version print version information 496747b715Smrg# -h, --help, --help-all print short, long, or detailed help message 504642e01fSmrg# 514642e01fSmrg# MODE must be one of the following: 524642e01fSmrg# 536747b715Smrg# clean remove files from the build directory 546747b715Smrg# compile compile a source file into a libtool object 556747b715Smrg# execute automatically set library path, then run a program 566747b715Smrg# finish complete the installation of libtool libraries 576747b715Smrg# install install libraries or executables 586747b715Smrg# link create a library or an executable 596747b715Smrg# uninstall remove libraries from an installed directory 604642e01fSmrg# 616747b715Smrg# MODE-ARGS vary depending on the MODE. When passed as first option, 626747b715Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 634642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 644642e01fSmrg# 654642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and 664642e01fSmrg# include the following information: 674642e01fSmrg# 686747b715Smrg# host-triplet: $host 696747b715Smrg# shell: $SHELL 706747b715Smrg# compiler: $LTCC 716747b715Smrg# compiler flags: $LTCFLAGS 726747b715Smrg# linker: $LD (gnu? $with_gnu_ld) 73475c125cSmrg# $progname: (GNU libtool) 2.2.10 746747b715Smrg# automake: $automake_version 756747b715Smrg# autoconf: $autoconf_version 764642e01fSmrg# 774642e01fSmrg# Report bugs to <bug-libtool@gnu.org>. 7805b261ecSmrg 796747b715SmrgPROGRAM=libtool 8005b261ecSmrgPACKAGE=libtool 81475c125cSmrgVERSION=2.2.10 824642e01fSmrgTIMESTAMP="" 83475c125cSmrgpackage_revision=1.3175 8405b261ecSmrg 854642e01fSmrg# Be Bourne compatible 8605b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8705b261ecSmrg emulate sh 8805b261ecSmrg NULLCMD=: 8905b261ecSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9005b261ecSmrg # is contrary to our usage. Disable this feature. 9105b261ecSmrg alias -g '${1+"$@"}'='"$@"' 9205b261ecSmrg setopt NO_GLOB_SUBST 9305b261ecSmrgelse 9405b261ecSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9505b261ecSmrgfi 9605b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 9705b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh 9805b261ecSmrg 996747b715Smrg# A function that is used when there is no print builtin or printf. 1006747b715Smrgfunc_fallback_echo () 1016747b715Smrg{ 1026747b715Smrg eval 'cat <<_LTECHO_EOF 1036747b715Smrg$1 1046747b715Smrg_LTECHO_EOF' 1056747b715Smrg} 1066747b715Smrg 1074642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode. 1084642e01fSmrglt_user_locale= 1094642e01fSmrglt_safe_locale= 11005b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11105b261ecSmrgdo 11205b261ecSmrg eval "if test \"\${$lt_var+set}\" = set; then 1134642e01fSmrg save_$lt_var=\$$lt_var 1144642e01fSmrg $lt_var=C 11505b261ecSmrg export $lt_var 1164642e01fSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1174642e01fSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 11805b261ecSmrg fi" 11905b261ecSmrgdone 1206747b715SmrgLC_ALL=C 1216747b715SmrgLANGUAGE=C 1226747b715Smrgexport LANGUAGE LC_ALL 12305b261ecSmrg 1244642e01fSmrg$lt_unset CDPATH 1254642e01fSmrg 1264642e01fSmrg 1276747b715Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1286747b715Smrg# is ksh but when the shell is invoked as "sh" and the current value of 1296747b715Smrg# the _XPG environment variable is not equal to 1 (one), the special 1306747b715Smrg# positional parameter $0, within a function call, is the name of the 1316747b715Smrg# function. 1326747b715Smrgprogpath="$0" 1334642e01fSmrg 1344642e01fSmrg 1354642e01fSmrg 1364642e01fSmrg: ${CP="cp -f"} 1376747b715Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 138475c125cSmrg: ${EGREP="/usr/bin/grep -E"} 139475c125cSmrg: ${FGREP="/usr/bin/grep -F"} 140475c125cSmrg: ${GREP="/usr/bin/grep"} 1414642e01fSmrg: ${LN_S="ln -s"} 1424642e01fSmrg: ${MAKE="make"} 1434642e01fSmrg: ${MKDIR="mkdir"} 1444642e01fSmrg: ${MV="mv -f"} 1454642e01fSmrg: ${RM="rm -f"} 146475c125cSmrg: ${SED="/usr/bin/sed"} 1474642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1484642e01fSmrg: ${Xsed="$SED -e 1s/^X//"} 1494642e01fSmrg 1504642e01fSmrg# Global variables: 1514642e01fSmrgEXIT_SUCCESS=0 1524642e01fSmrgEXIT_FAILURE=1 1534642e01fSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1544642e01fSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1554642e01fSmrg 1564642e01fSmrgexit_status=$EXIT_SUCCESS 15705b261ecSmrg 15805b261ecSmrg# Make sure IFS has a sensible default 15905b261ecSmrglt_nl=' 16005b261ecSmrg' 16105b261ecSmrgIFS=" $lt_nl" 16205b261ecSmrg 1634642e01fSmrgdirname="s,/[^/]*$,," 1644642e01fSmrgbasename="s,^.*/,," 1654642e01fSmrg 1664642e01fSmrg# func_dirname_and_basename file append nondir_replacement 1674642e01fSmrg# perform func_basename and func_dirname in a single function 1684642e01fSmrg# call: 1694642e01fSmrg# dirname: Compute the dirname of FILE. If nonempty, 1704642e01fSmrg# add APPEND to the result, otherwise set result 1714642e01fSmrg# to NONDIR_REPLACEMENT. 1724642e01fSmrg# value returned in "$func_dirname_result" 1734642e01fSmrg# basename: Compute filename of FILE. 1744642e01fSmrg# value retuned in "$func_basename_result" 1754642e01fSmrg# Implementation must be kept synchronized with func_dirname 1764642e01fSmrg# and func_basename. For efficiency, we do not delegate to 1774642e01fSmrg# those functions but instead duplicate the functionality here. 1784642e01fSmrgfunc_dirname_and_basename () 1794642e01fSmrg{ 180475c125cSmrg # Extract subdirectory from the argument. 181475c125cSmrg func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 182475c125cSmrg if test "X$func_dirname_result" = "X${1}"; then 183475c125cSmrg func_dirname_result="${3}" 184475c125cSmrg else 185475c125cSmrg func_dirname_result="$func_dirname_result${2}" 186475c125cSmrg fi 187475c125cSmrg func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 188475c125cSmrg} 1896747b715Smrg 190475c125cSmrg# Generated shell functions inserted here. 1916747b715Smrg 1926747b715Smrg# These SED scripts presuppose an absolute path with a trailing slash. 1936747b715Smrgpathcar='s,^/\([^/]*\).*$,\1,' 1946747b715Smrgpathcdr='s,^/[^/]*,,' 1956747b715Smrgremovedotparts=':dotsl 1966747b715Smrg s@/\./@/@g 1976747b715Smrg t dotsl 1986747b715Smrg s,/\.$,/,' 1996747b715Smrgcollapseslashes='s@/\{1,\}@/@g' 2006747b715Smrgfinalslash='s,/*$,/,' 2016747b715Smrg 2026747b715Smrg# func_normal_abspath PATH 2036747b715Smrg# Remove doubled-up and trailing slashes, "." path components, 2046747b715Smrg# and cancel out any ".." path components in PATH after making 2056747b715Smrg# it an absolute path. 2066747b715Smrg# value returned in "$func_normal_abspath_result" 2076747b715Smrgfunc_normal_abspath () 2086747b715Smrg{ 2096747b715Smrg # Start from root dir and reassemble the path. 2106747b715Smrg func_normal_abspath_result= 2116747b715Smrg func_normal_abspath_tpath=$1 2126747b715Smrg func_normal_abspath_altnamespace= 2136747b715Smrg case $func_normal_abspath_tpath in 2146747b715Smrg "") 2156747b715Smrg # Empty path, that just means $cwd. 2166747b715Smrg func_stripname '' '/' "`pwd`" 2176747b715Smrg func_normal_abspath_result=$func_stripname_result 2186747b715Smrg return 2196747b715Smrg ;; 2206747b715Smrg # The next three entries are used to spot a run of precisely 2216747b715Smrg # two leading slashes without using negated character classes; 2226747b715Smrg # we take advantage of case's first-match behaviour. 2236747b715Smrg ///*) 2246747b715Smrg # Unusual form of absolute path, do nothing. 2256747b715Smrg ;; 2266747b715Smrg //*) 2276747b715Smrg # Not necessarily an ordinary path; POSIX reserves leading '//' 2286747b715Smrg # and for example Cygwin uses it to access remote file shares 2296747b715Smrg # over CIFS/SMB, so we conserve a leading double slash if found. 2306747b715Smrg func_normal_abspath_altnamespace=/ 2316747b715Smrg ;; 2326747b715Smrg /*) 2336747b715Smrg # Absolute path, do nothing. 2346747b715Smrg ;; 2356747b715Smrg *) 2366747b715Smrg # Relative path, prepend $cwd. 2376747b715Smrg func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 2386747b715Smrg ;; 2396747b715Smrg esac 2406747b715Smrg # Cancel out all the simple stuff to save iterations. We also want 2416747b715Smrg # the path to end with a slash for ease of parsing, so make sure 2426747b715Smrg # there is one (and only one) here. 2436747b715Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2446747b715Smrg -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 2456747b715Smrg while :; do 2466747b715Smrg # Processed it all yet? 2476747b715Smrg if test "$func_normal_abspath_tpath" = / ; then 2486747b715Smrg # If we ascended to the root using ".." the result may be empty now. 2496747b715Smrg if test -z "$func_normal_abspath_result" ; then 2506747b715Smrg func_normal_abspath_result=/ 2516747b715Smrg fi 2526747b715Smrg break 2536747b715Smrg fi 2546747b715Smrg func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2556747b715Smrg -e "$pathcar"` 2566747b715Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2576747b715Smrg -e "$pathcdr"` 2586747b715Smrg # Figure out what to do with it 2596747b715Smrg case $func_normal_abspath_tcomponent in 2606747b715Smrg "") 2616747b715Smrg # Trailing empty path component, ignore it. 2626747b715Smrg ;; 2636747b715Smrg ..) 2646747b715Smrg # Parent dir; strip last assembled component from result. 2656747b715Smrg func_dirname "$func_normal_abspath_result" 2666747b715Smrg func_normal_abspath_result=$func_dirname_result 2676747b715Smrg ;; 2686747b715Smrg *) 2696747b715Smrg # Actual path component, append it. 2706747b715Smrg func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 2716747b715Smrg ;; 2726747b715Smrg esac 2736747b715Smrg done 2746747b715Smrg # Restore leading double-slash if one was found on entry. 2756747b715Smrg func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 2764642e01fSmrg} 27705b261ecSmrg 2786747b715Smrg# func_relative_path SRCDIR DSTDIR 2796747b715Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing 2806747b715Smrg# slash if non-empty, suitable for immediately appending a filename 2816747b715Smrg# without needing to append a separator. 2826747b715Smrg# value returned in "$func_relative_path_result" 2836747b715Smrgfunc_relative_path () 2846747b715Smrg{ 2856747b715Smrg func_relative_path_result= 2866747b715Smrg func_normal_abspath "$1" 2876747b715Smrg func_relative_path_tlibdir=$func_normal_abspath_result 2886747b715Smrg func_normal_abspath "$2" 2896747b715Smrg func_relative_path_tbindir=$func_normal_abspath_result 2906747b715Smrg 2916747b715Smrg # Ascend the tree starting from libdir 2926747b715Smrg while :; do 2936747b715Smrg # check if we have found a prefix of bindir 2946747b715Smrg case $func_relative_path_tbindir in 2956747b715Smrg $func_relative_path_tlibdir) 2966747b715Smrg # found an exact match 2976747b715Smrg func_relative_path_tcancelled= 2986747b715Smrg break 2996747b715Smrg ;; 3006747b715Smrg $func_relative_path_tlibdir*) 3016747b715Smrg # found a matching prefix 3026747b715Smrg func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 3036747b715Smrg func_relative_path_tcancelled=$func_stripname_result 3046747b715Smrg if test -z "$func_relative_path_result"; then 3056747b715Smrg func_relative_path_result=. 3066747b715Smrg fi 3076747b715Smrg break 3086747b715Smrg ;; 3096747b715Smrg *) 3106747b715Smrg func_dirname $func_relative_path_tlibdir 3116747b715Smrg func_relative_path_tlibdir=${func_dirname_result} 3126747b715Smrg if test "x$func_relative_path_tlibdir" = x ; then 3136747b715Smrg # Have to descend all the way to the root! 3146747b715Smrg func_relative_path_result=../$func_relative_path_result 3156747b715Smrg func_relative_path_tcancelled=$func_relative_path_tbindir 3166747b715Smrg break 3176747b715Smrg fi 3186747b715Smrg func_relative_path_result=../$func_relative_path_result 3196747b715Smrg ;; 3206747b715Smrg esac 3216747b715Smrg done 3224642e01fSmrg 3236747b715Smrg # Now calculate path; take care to avoid doubling-up slashes. 3246747b715Smrg func_stripname '' '/' "$func_relative_path_result" 3256747b715Smrg func_relative_path_result=$func_stripname_result 3266747b715Smrg func_stripname '/' '/' "$func_relative_path_tcancelled" 3276747b715Smrg if test "x$func_stripname_result" != x ; then 3286747b715Smrg func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 3296747b715Smrg fi 3306747b715Smrg 3316747b715Smrg # Normalisation. If bindir is libdir, return empty string, 3326747b715Smrg # else relative path ending with a slash; either way, target 3336747b715Smrg # file name can be directly appended. 3346747b715Smrg if test ! -z "$func_relative_path_result"; then 3356747b715Smrg func_stripname './' '' "$func_relative_path_result/" 3366747b715Smrg func_relative_path_result=$func_stripname_result 3376747b715Smrg fi 3386747b715Smrg} 3394642e01fSmrg 3404642e01fSmrg# The name of this program: 3414642e01fSmrgfunc_dirname_and_basename "$progpath" 3424642e01fSmrgprogname=$func_basename_result 3434642e01fSmrg 3444642e01fSmrg# Make sure we have an absolute path for reexecution: 3454642e01fSmrgcase $progpath in 3464642e01fSmrg [\\/]*|[A-Za-z]:\\*) ;; 3474642e01fSmrg *[\\/]*) 3484642e01fSmrg progdir=$func_dirname_result 3494642e01fSmrg progdir=`cd "$progdir" && pwd` 3504642e01fSmrg progpath="$progdir/$progname" 3514642e01fSmrg ;; 3524642e01fSmrg *) 3534642e01fSmrg save_IFS="$IFS" 3544642e01fSmrg IFS=: 3554642e01fSmrg for progdir in $PATH; do 3564642e01fSmrg IFS="$save_IFS" 3574642e01fSmrg test -x "$progdir/$progname" && break 3584642e01fSmrg done 3594642e01fSmrg IFS="$save_IFS" 3604642e01fSmrg test -n "$progdir" || progdir=`pwd` 3614642e01fSmrg progpath="$progdir/$progname" 3624642e01fSmrg ;; 3634642e01fSmrgesac 3644642e01fSmrg 3654642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 3664642e01fSmrg# metacharacters that are still active within double-quoted strings. 3674642e01fSmrgXsed="${SED}"' -e 1s/^X//' 3684642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 3694642e01fSmrg 3704642e01fSmrg# Same as above, but do not quote variable references. 3714642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 3724642e01fSmrg 3734642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 3744642e01fSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 3754642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion. 3764642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of 3774642e01fSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 3784642e01fSmrgbs='\\' 3794642e01fSmrgbs2='\\\\' 3804642e01fSmrgbs4='\\\\\\\\' 3814642e01fSmrgdollar='\$' 3824642e01fSmrgsed_double_backslash="\ 3834642e01fSmrg s/$bs4/&\\ 3844642e01fSmrg/g 3854642e01fSmrg s/^$bs2$dollar/$bs&/ 3864642e01fSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 3874642e01fSmrg s/\n//g" 3884642e01fSmrg 3894642e01fSmrg# Standard options: 3904642e01fSmrgopt_dry_run=false 3914642e01fSmrgopt_help=false 3924642e01fSmrgopt_quiet=false 3934642e01fSmrgopt_verbose=false 3944642e01fSmrgopt_warning=: 3954642e01fSmrg 3964642e01fSmrg# func_echo arg... 3974642e01fSmrg# Echo program name prefixed message, along with the current mode 3984642e01fSmrg# name if it has been set yet. 3994642e01fSmrgfunc_echo () 4004642e01fSmrg{ 401475c125cSmrg $ECHO "$progname${mode+: }$mode: $*" 4024642e01fSmrg} 4034642e01fSmrg 4044642e01fSmrg# func_verbose arg... 4054642e01fSmrg# Echo program name prefixed message in verbose mode only. 4064642e01fSmrgfunc_verbose () 4074642e01fSmrg{ 4084642e01fSmrg $opt_verbose && func_echo ${1+"$@"} 4094642e01fSmrg 4104642e01fSmrg # A bug in bash halts the script if the last line of a function 4114642e01fSmrg # fails when set -e is in force, so we need another command to 4124642e01fSmrg # work around that: 4134642e01fSmrg : 4144642e01fSmrg} 4154642e01fSmrg 4166747b715Smrg# func_echo_all arg... 4176747b715Smrg# Invoke $ECHO with all args, space-separated. 4186747b715Smrgfunc_echo_all () 4196747b715Smrg{ 4206747b715Smrg $ECHO "$*" 4216747b715Smrg} 4226747b715Smrg 4234642e01fSmrg# func_error arg... 4244642e01fSmrg# Echo program name prefixed message to standard error. 4254642e01fSmrgfunc_error () 4264642e01fSmrg{ 427475c125cSmrg $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 4284642e01fSmrg} 4294642e01fSmrg 4304642e01fSmrg# func_warning arg... 4314642e01fSmrg# Echo program name prefixed warning message to standard error. 4324642e01fSmrgfunc_warning () 4334642e01fSmrg{ 434475c125cSmrg $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 4354642e01fSmrg 4364642e01fSmrg # bash bug again: 4374642e01fSmrg : 4384642e01fSmrg} 4394642e01fSmrg 4404642e01fSmrg# func_fatal_error arg... 4414642e01fSmrg# Echo program name prefixed message to standard error, and exit. 4424642e01fSmrgfunc_fatal_error () 4434642e01fSmrg{ 4444642e01fSmrg func_error ${1+"$@"} 4454642e01fSmrg exit $EXIT_FAILURE 4464642e01fSmrg} 4474642e01fSmrg 4484642e01fSmrg# func_fatal_help arg... 4494642e01fSmrg# Echo program name prefixed message to standard error, followed by 4504642e01fSmrg# a help hint, and exit. 4514642e01fSmrgfunc_fatal_help () 4524642e01fSmrg{ 4534642e01fSmrg func_error ${1+"$@"} 4544642e01fSmrg func_fatal_error "$help" 4554642e01fSmrg} 4564642e01fSmrghelp="Try \`$progname --help' for more information." ## default 4574642e01fSmrg 4584642e01fSmrg 4594642e01fSmrg# func_grep expression filename 4604642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 4614642e01fSmrgfunc_grep () 4624642e01fSmrg{ 4634642e01fSmrg $GREP "$1" "$2" >/dev/null 2>&1 4644642e01fSmrg} 4654642e01fSmrg 4664642e01fSmrg 4674642e01fSmrg# func_mkdir_p directory-path 4684642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available. 4694642e01fSmrgfunc_mkdir_p () 4704642e01fSmrg{ 4714642e01fSmrg my_directory_path="$1" 4724642e01fSmrg my_dir_list= 4734642e01fSmrg 4744642e01fSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 4754642e01fSmrg 4764642e01fSmrg # Protect directory names starting with `-' 4774642e01fSmrg case $my_directory_path in 4784642e01fSmrg -*) my_directory_path="./$my_directory_path" ;; 4794642e01fSmrg esac 4804642e01fSmrg 4814642e01fSmrg # While some portion of DIR does not yet exist... 4824642e01fSmrg while test ! -d "$my_directory_path"; do 4834642e01fSmrg # ...make a list in topmost first order. Use a colon delimited 4844642e01fSmrg # list incase some portion of path contains whitespace. 4854642e01fSmrg my_dir_list="$my_directory_path:$my_dir_list" 4864642e01fSmrg 4874642e01fSmrg # If the last portion added has no slash in it, the list is done 4884642e01fSmrg case $my_directory_path in */*) ;; *) break ;; esac 4894642e01fSmrg 4904642e01fSmrg # ...otherwise throw away the child directory and loop 4916747b715Smrg my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 4924642e01fSmrg done 4936747b715Smrg my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 4944642e01fSmrg 4954642e01fSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 4964642e01fSmrg for my_dir in $my_dir_list; do 4974642e01fSmrg IFS="$save_mkdir_p_IFS" 4984642e01fSmrg # mkdir can fail with a `File exist' error if two processes 4994642e01fSmrg # try to create one of the directories concurrently. Don't 5004642e01fSmrg # stop in that case! 5014642e01fSmrg $MKDIR "$my_dir" 2>/dev/null || : 5024642e01fSmrg done 5034642e01fSmrg IFS="$save_mkdir_p_IFS" 5044642e01fSmrg 5054642e01fSmrg # Bail out if we (or some other process) failed to create a directory. 5064642e01fSmrg test -d "$my_directory_path" || \ 5074642e01fSmrg func_fatal_error "Failed to create \`$1'" 5084642e01fSmrg fi 5094642e01fSmrg} 51005b261ecSmrg 51105b261ecSmrg 51205b261ecSmrg# func_mktempdir [string] 51305b261ecSmrg# Make a temporary directory that won't clash with other running 51405b261ecSmrg# libtool processes, and avoids race conditions if possible. If 51505b261ecSmrg# given, STRING is the basename for that directory. 51605b261ecSmrgfunc_mktempdir () 51705b261ecSmrg{ 51805b261ecSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 51905b261ecSmrg 5204642e01fSmrg if test "$opt_dry_run" = ":"; then 52105b261ecSmrg # Return a directory name, but don't create it in dry-run mode 52205b261ecSmrg my_tmpdir="${my_template}-$$" 52305b261ecSmrg else 52405b261ecSmrg 52505b261ecSmrg # If mktemp works, use that first and foremost 52605b261ecSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 52705b261ecSmrg 52805b261ecSmrg if test ! -d "$my_tmpdir"; then 5294642e01fSmrg # Failing that, at least try and use $RANDOM to avoid a race 5304642e01fSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 53105b261ecSmrg 5324642e01fSmrg save_mktempdir_umask=`umask` 5334642e01fSmrg umask 0077 5344642e01fSmrg $MKDIR "$my_tmpdir" 5354642e01fSmrg umask $save_mktempdir_umask 53605b261ecSmrg fi 53705b261ecSmrg 53805b261ecSmrg # If we're not in dry-run mode, bomb out on failure 5394642e01fSmrg test -d "$my_tmpdir" || \ 5404642e01fSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 54105b261ecSmrg fi 54205b261ecSmrg 5436747b715Smrg $ECHO "$my_tmpdir" 54405b261ecSmrg} 54505b261ecSmrg 54605b261ecSmrg 5474642e01fSmrg# func_quote_for_eval arg 5484642e01fSmrg# Aesthetically quote ARG to be evaled later. 5494642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 5504642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas 5514642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 5524642e01fSmrg# which are still active within double quotes backslashified. 5534642e01fSmrgfunc_quote_for_eval () 55405b261ecSmrg{ 5554642e01fSmrg case $1 in 5564642e01fSmrg *[\\\`\"\$]*) 5576747b715Smrg func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 5584642e01fSmrg *) 5594642e01fSmrg func_quote_for_eval_unquoted_result="$1" ;; 5604642e01fSmrg esac 5614642e01fSmrg 5624642e01fSmrg case $func_quote_for_eval_unquoted_result in 5634642e01fSmrg # Double-quote args containing shell metacharacters to delay 5644642e01fSmrg # word splitting, command substitution and and variable 5654642e01fSmrg # expansion for a subsequent eval. 5664642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 5674642e01fSmrg # in scan sets, so we specify it separately. 5684642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5694642e01fSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 5704642e01fSmrg ;; 5714642e01fSmrg *) 5724642e01fSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 57305b261ecSmrg esac 57405b261ecSmrg} 57505b261ecSmrg 57605b261ecSmrg 5774642e01fSmrg# func_quote_for_expand arg 5784642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above, 5794642e01fSmrg# but do not quote variable references. 5804642e01fSmrgfunc_quote_for_expand () 58105b261ecSmrg{ 5824642e01fSmrg case $1 in 5834642e01fSmrg *[\\\`\"]*) 5846747b715Smrg my_arg=`$ECHO "$1" | $SED \ 5854642e01fSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 58605b261ecSmrg *) 5874642e01fSmrg my_arg="$1" ;; 5884642e01fSmrg esac 5894642e01fSmrg 5904642e01fSmrg case $my_arg in 5914642e01fSmrg # Double-quote args containing shell metacharacters to delay 5924642e01fSmrg # word splitting and command substitution for a subsequent eval. 5934642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 5944642e01fSmrg # in scan sets, so we specify it separately. 5954642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5964642e01fSmrg my_arg="\"$my_arg\"" 5974642e01fSmrg ;; 5984642e01fSmrg esac 5994642e01fSmrg 6004642e01fSmrg func_quote_for_expand_result="$my_arg" 60105b261ecSmrg} 60205b261ecSmrg 60305b261ecSmrg 6044642e01fSmrg# func_show_eval cmd [fail_exp] 6054642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6064642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6074642e01fSmrg# is given, then evaluate it. 6084642e01fSmrgfunc_show_eval () 60905b261ecSmrg{ 6104642e01fSmrg my_cmd="$1" 6114642e01fSmrg my_fail_exp="${2-:}" 61205b261ecSmrg 6134642e01fSmrg ${opt_silent-false} || { 6144642e01fSmrg func_quote_for_expand "$my_cmd" 6154642e01fSmrg eval "func_echo $func_quote_for_expand_result" 6164642e01fSmrg } 6174642e01fSmrg 6184642e01fSmrg if ${opt_dry_run-false}; then :; else 6194642e01fSmrg eval "$my_cmd" 6204642e01fSmrg my_status=$? 6214642e01fSmrg if test "$my_status" -eq 0; then :; else 6224642e01fSmrg eval "(exit $my_status); $my_fail_exp" 6234642e01fSmrg fi 62405b261ecSmrg fi 62505b261ecSmrg} 62605b261ecSmrg 6274642e01fSmrg 6284642e01fSmrg# func_show_eval_locale cmd [fail_exp] 6294642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6304642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6314642e01fSmrg# is given, then evaluate it. Use the saved locale for evaluation. 6324642e01fSmrgfunc_show_eval_locale () 63305b261ecSmrg{ 6344642e01fSmrg my_cmd="$1" 6354642e01fSmrg my_fail_exp="${2-:}" 6364642e01fSmrg 6374642e01fSmrg ${opt_silent-false} || { 6384642e01fSmrg func_quote_for_expand "$my_cmd" 6394642e01fSmrg eval "func_echo $func_quote_for_expand_result" 6404642e01fSmrg } 6414642e01fSmrg 6424642e01fSmrg if ${opt_dry_run-false}; then :; else 6434642e01fSmrg eval "$lt_user_locale 6444642e01fSmrg $my_cmd" 6454642e01fSmrg my_status=$? 6464642e01fSmrg eval "$lt_safe_locale" 6474642e01fSmrg if test "$my_status" -eq 0; then :; else 6484642e01fSmrg eval "(exit $my_status); $my_fail_exp" 6494642e01fSmrg fi 65005b261ecSmrg fi 6514642e01fSmrg} 65205b261ecSmrg 6534642e01fSmrg 6544642e01fSmrg# func_version 6554642e01fSmrg# Echo version message to standard output and exit. 6564642e01fSmrgfunc_version () 6574642e01fSmrg{ 6586747b715Smrg $SED -n '/(C)/!b go 6596747b715Smrg :more 6606747b715Smrg /\./!{ 6616747b715Smrg N 6626747b715Smrg s/\n# / / 6636747b715Smrg b more 6646747b715Smrg } 6656747b715Smrg :go 6666747b715Smrg /^# '$PROGRAM' (GNU /,/# warranty; / { 6674642e01fSmrg s/^# // 6684642e01fSmrg s/^# *$// 6694642e01fSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 6704642e01fSmrg p 6714642e01fSmrg }' < "$progpath" 6724642e01fSmrg exit $? 6734642e01fSmrg} 6744642e01fSmrg 6754642e01fSmrg# func_usage 6764642e01fSmrg# Echo short help message to standard output and exit. 6774642e01fSmrgfunc_usage () 6784642e01fSmrg{ 6796747b715Smrg $SED -n '/^# Usage:/,/^# *.*--help/ { 6804642e01fSmrg s/^# // 6814642e01fSmrg s/^# *$// 6824642e01fSmrg s/\$progname/'$progname'/ 6834642e01fSmrg p 6844642e01fSmrg }' < "$progpath" 6856747b715Smrg echo 6864642e01fSmrg $ECHO "run \`$progname --help | more' for full usage" 6874642e01fSmrg exit $? 6884642e01fSmrg} 6894642e01fSmrg 6906747b715Smrg# func_help [NOEXIT] 6916747b715Smrg# Echo long help message to standard output and exit, 6926747b715Smrg# unless 'noexit' is passed as argument. 6934642e01fSmrgfunc_help () 6944642e01fSmrg{ 6954642e01fSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 6964642e01fSmrg s/^# // 6974642e01fSmrg s/^# *$// 6984642e01fSmrg s*\$progname*'$progname'* 6994642e01fSmrg s*\$host*'"$host"'* 7004642e01fSmrg s*\$SHELL*'"$SHELL"'* 7014642e01fSmrg s*\$LTCC*'"$LTCC"'* 7024642e01fSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 7034642e01fSmrg s*\$LD*'"$LD"'* 7044642e01fSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 7054642e01fSmrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 7064642e01fSmrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 7074642e01fSmrg p 708475c125cSmrg }' < "$progpath" 7096747b715Smrg ret=$? 7106747b715Smrg if test -z "$1"; then 7116747b715Smrg exit $ret 7126747b715Smrg fi 7134642e01fSmrg} 7144642e01fSmrg 7154642e01fSmrg# func_missing_arg argname 7164642e01fSmrg# Echo program name prefixed message to standard error and set global 7174642e01fSmrg# exit_cmd. 7184642e01fSmrgfunc_missing_arg () 7194642e01fSmrg{ 7206747b715Smrg func_error "missing argument for $1." 7214642e01fSmrg exit_cmd=exit 72205b261ecSmrg} 72305b261ecSmrg 7246747b715Smrgexit_cmd=: 7256747b715Smrg 7264642e01fSmrg 7274642e01fSmrg 72805b261ecSmrg 72905b261ecSmrg 730475c125cSmrg 7314642e01fSmrgmagic="%%%MAGIC variable%%%" 7324642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%" 73305b261ecSmrg 7344642e01fSmrg# Global variables. 735475c125cSmrg# $mode is unset 7364642e01fSmrgnonopt= 737475c125cSmrgexecute_dlfiles= 7384642e01fSmrgpreserve_args= 7394642e01fSmrglo2o="s/\\.lo\$/.${objext}/" 7404642e01fSmrgo2lo="s/\\.${objext}\$/.lo/" 7414642e01fSmrgextracted_archives= 7424642e01fSmrgextracted_serial=0 74305b261ecSmrg 744475c125cSmrgopt_dry_run=false 745475c125cSmrgopt_duplicate_deps=false 746475c125cSmrgopt_silent=false 747475c125cSmrgopt_debug=: 748475c125cSmrg 7494642e01fSmrg# If this variable is set in any of the actions, the command in it 7504642e01fSmrg# will be execed at the end. This prevents here-documents from being 7514642e01fSmrg# left over by shells. 7524642e01fSmrgexec_cmd= 7534642e01fSmrg 7544642e01fSmrg# func_fatal_configuration arg... 7554642e01fSmrg# Echo program name prefixed message to standard error, followed by 7564642e01fSmrg# a configuration failure hint, and exit. 7574642e01fSmrgfunc_fatal_configuration () 7584642e01fSmrg{ 7594642e01fSmrg func_error ${1+"$@"} 7604642e01fSmrg func_error "See the $PACKAGE documentation for more information." 7614642e01fSmrg func_fatal_error "Fatal configuration error." 7624642e01fSmrg} 76305b261ecSmrg 76405b261ecSmrg 7654642e01fSmrg# func_config 7664642e01fSmrg# Display the configuration for all the tags in this script. 7674642e01fSmrgfunc_config () 7684642e01fSmrg{ 7694642e01fSmrg re_begincf='^# ### BEGIN LIBTOOL' 7704642e01fSmrg re_endcf='^# ### END LIBTOOL' 7714642e01fSmrg 7724642e01fSmrg # Default configuration. 7734642e01fSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 77405b261ecSmrg 77505b261ecSmrg # Now print the configurations for the tags. 77605b261ecSmrg for tagname in $taglist; do 7774642e01fSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 77805b261ecSmrg done 77905b261ecSmrg 7804642e01fSmrg exit $? 7814642e01fSmrg} 78205b261ecSmrg 7834642e01fSmrg# func_features 7844642e01fSmrg# Display the features supported by this script. 7854642e01fSmrgfunc_features () 7864642e01fSmrg{ 7876747b715Smrg echo "host: $host" 78805b261ecSmrg if test "$build_libtool_libs" = yes; then 7896747b715Smrg echo "enable shared libraries" 79005b261ecSmrg else 7916747b715Smrg echo "disable shared libraries" 79205b261ecSmrg fi 79305b261ecSmrg if test "$build_old_libs" = yes; then 7946747b715Smrg echo "enable static libraries" 79505b261ecSmrg else 7966747b715Smrg echo "disable static libraries" 79705b261ecSmrg fi 7984642e01fSmrg 79905b261ecSmrg exit $? 8004642e01fSmrg} 80105b261ecSmrg 8024642e01fSmrg# func_enable_tag tagname 8034642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 8044642e01fSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 8054642e01fSmrg# variable here. 8064642e01fSmrgfunc_enable_tag () 8074642e01fSmrg{ 8084642e01fSmrg # Global variable: 8094642e01fSmrg tagname="$1" 81005b261ecSmrg 8114642e01fSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 8124642e01fSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 8134642e01fSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 81405b261ecSmrg 8154642e01fSmrg # Validate tagname. 8164642e01fSmrg case $tagname in 8174642e01fSmrg *[!-_A-Za-z0-9,/]*) 8184642e01fSmrg func_fatal_error "invalid tag name: $tagname" 8194642e01fSmrg ;; 8204642e01fSmrg esac 82105b261ecSmrg 8224642e01fSmrg # Don't test for the "default" C tag, as we know it's 8234642e01fSmrg # there but not specially marked. 8244642e01fSmrg case $tagname in 8254642e01fSmrg CC) ;; 8264642e01fSmrg *) 8274642e01fSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 8284642e01fSmrg taglist="$taglist $tagname" 8294642e01fSmrg 8304642e01fSmrg # Evaluate the configuration. Be careful to quote the path 8314642e01fSmrg # and the sed script, to avoid splitting on whitespace, but 8324642e01fSmrg # also don't use non-portable quotes within backquotes within 8334642e01fSmrg # quotes we have to do it in 2 steps: 8344642e01fSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 8354642e01fSmrg eval "$extractedcf" 8364642e01fSmrg else 8374642e01fSmrg func_error "ignoring unknown tag $tagname" 8384642e01fSmrg fi 8394642e01fSmrg ;; 8404642e01fSmrg esac 8414642e01fSmrg} 8424642e01fSmrg 843475c125cSmrg# Parse options once, thoroughly. This comes as soon as possible in 844475c125cSmrg# the script to make things like `libtool --version' happen quickly. 8454642e01fSmrg{ 8466747b715Smrg 847475c125cSmrg # Shorthand for --mode=foo, only valid as the first argument 848475c125cSmrg case $1 in 849475c125cSmrg clean|clea|cle|cl) 850475c125cSmrg shift; set dummy --mode clean ${1+"$@"}; shift 851475c125cSmrg ;; 852475c125cSmrg compile|compil|compi|comp|com|co|c) 853475c125cSmrg shift; set dummy --mode compile ${1+"$@"}; shift 854475c125cSmrg ;; 855475c125cSmrg execute|execut|execu|exec|exe|ex|e) 856475c125cSmrg shift; set dummy --mode execute ${1+"$@"}; shift 857475c125cSmrg ;; 858475c125cSmrg finish|finis|fini|fin|fi|f) 859475c125cSmrg shift; set dummy --mode finish ${1+"$@"}; shift 860475c125cSmrg ;; 861475c125cSmrg install|instal|insta|inst|ins|in|i) 862475c125cSmrg shift; set dummy --mode install ${1+"$@"}; shift 863475c125cSmrg ;; 864475c125cSmrg link|lin|li|l) 865475c125cSmrg shift; set dummy --mode link ${1+"$@"}; shift 866475c125cSmrg ;; 867475c125cSmrg uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 868475c125cSmrg shift; set dummy --mode uninstall ${1+"$@"}; shift 869475c125cSmrg ;; 870475c125cSmrg esac 8716747b715Smrg 872475c125cSmrg # Parse non-mode specific arguments: 873475c125cSmrg while test "$#" -gt 0; do 8744642e01fSmrg opt="$1" 8754642e01fSmrg shift 876475c125cSmrg 8774642e01fSmrg case $opt in 878475c125cSmrg --config) func_config ;; 879475c125cSmrg 880475c125cSmrg --debug) preserve_args="$preserve_args $opt" 8814642e01fSmrg func_echo "enabling shell trace mode" 882475c125cSmrg opt_debug='set -x' 8834642e01fSmrg $opt_debug 8844642e01fSmrg ;; 885475c125cSmrg 886475c125cSmrg -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 887475c125cSmrg execute_dlfiles="$execute_dlfiles $1" 888475c125cSmrg shift 8896747b715Smrg ;; 890475c125cSmrg 891475c125cSmrg --dry-run | -n) opt_dry_run=: ;; 892475c125cSmrg --features) func_features ;; 893475c125cSmrg --finish) mode="finish" ;; 894475c125cSmrg 895475c125cSmrg --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 896475c125cSmrg case $1 in 897475c125cSmrg # Valid mode arguments: 898475c125cSmrg clean) ;; 899475c125cSmrg compile) ;; 900475c125cSmrg execute) ;; 901475c125cSmrg finish) ;; 902475c125cSmrg install) ;; 903475c125cSmrg link) ;; 904475c125cSmrg relink) ;; 905475c125cSmrg uninstall) ;; 906475c125cSmrg 907475c125cSmrg # Catch anything else as an error 908475c125cSmrg *) func_error "invalid argument for $opt" 909475c125cSmrg exit_cmd=exit 910475c125cSmrg break 911475c125cSmrg ;; 912475c125cSmrg esac 913475c125cSmrg 914475c125cSmrg mode="$1" 9154642e01fSmrg shift 9164642e01fSmrg ;; 917475c125cSmrg 9184642e01fSmrg --preserve-dup-deps) 919475c125cSmrg opt_duplicate_deps=: ;; 920475c125cSmrg 921475c125cSmrg --quiet|--silent) preserve_args="$preserve_args $opt" 922475c125cSmrg opt_silent=: 923475c125cSmrg opt_verbose=false 9246747b715Smrg ;; 925475c125cSmrg 926475c125cSmrg --no-quiet|--no-silent) 927475c125cSmrg preserve_args="$preserve_args $opt" 928475c125cSmrg opt_silent=false 9296747b715Smrg ;; 930475c125cSmrg 931475c125cSmrg --verbose| -v) preserve_args="$preserve_args $opt" 9324642e01fSmrg opt_silent=false 933475c125cSmrg opt_verbose=: 9344642e01fSmrg ;; 935475c125cSmrg 936475c125cSmrg --no-verbose) preserve_args="$preserve_args $opt" 9376747b715Smrg opt_verbose=false 9386747b715Smrg ;; 939475c125cSmrg 940475c125cSmrg --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 941475c125cSmrg preserve_args="$preserve_args $opt $1" 942475c125cSmrg func_enable_tag "$1" # tagname is set here 9434642e01fSmrg shift 9444642e01fSmrg ;; 9454642e01fSmrg 9464642e01fSmrg # Separate optargs to long options: 947475c125cSmrg -dlopen=*|--mode=*|--tag=*) 948475c125cSmrg func_opt_split "$opt" 949475c125cSmrg set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 9504642e01fSmrg shift 9514642e01fSmrg ;; 9524642e01fSmrg 953475c125cSmrg -\?|-h) func_usage ;; 954475c125cSmrg --help) opt_help=: ;; 955475c125cSmrg --help-all) opt_help=': help-all' ;; 956475c125cSmrg --version) func_version ;; 957475c125cSmrg 958475c125cSmrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 9596747b715Smrg 960475c125cSmrg *) nonopt="$opt" 961475c125cSmrg break 962475c125cSmrg ;; 9634642e01fSmrg esac 9644642e01fSmrg done 9654642e01fSmrg 9664642e01fSmrg 9674642e01fSmrg case $host in 9684642e01fSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 9694642e01fSmrg # don't eliminate duplications in $postdeps and $predeps 9704642e01fSmrg opt_duplicate_compiler_generated_deps=: 97105b261ecSmrg ;; 97205b261ecSmrg *) 973475c125cSmrg opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 9744642e01fSmrg ;; 9754642e01fSmrg esac 97605b261ecSmrg 977475c125cSmrg # Having warned about all mis-specified options, bail out if 978475c125cSmrg # anything was wrong. 979475c125cSmrg $exit_cmd $EXIT_FAILURE 980475c125cSmrg} 9814642e01fSmrg 982475c125cSmrg# func_check_version_match 983475c125cSmrg# Ensure that we are using m4 macros, and libtool script from the same 984475c125cSmrg# release of libtool. 985475c125cSmrgfunc_check_version_match () 986475c125cSmrg{ 987475c125cSmrg if test "$package_revision" != "$macro_revision"; then 988475c125cSmrg if test "$VERSION" != "$macro_version"; then 989475c125cSmrg if test -z "$macro_version"; then 990475c125cSmrg cat >&2 <<_LT_EOF 991475c125cSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 992475c125cSmrg$progname: definition of this LT_INIT comes from an older release. 993475c125cSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 994475c125cSmrg$progname: and run autoconf again. 995475c125cSmrg_LT_EOF 996475c125cSmrg else 997475c125cSmrg cat >&2 <<_LT_EOF 998475c125cSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 999475c125cSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 1000475c125cSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 1001475c125cSmrg$progname: and run autoconf again. 1002475c125cSmrg_LT_EOF 1003475c125cSmrg fi 1004475c125cSmrg else 1005475c125cSmrg cat >&2 <<_LT_EOF 1006475c125cSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1007475c125cSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1008475c125cSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1009475c125cSmrg$progname: of $PACKAGE $VERSION and run autoconf again. 1010475c125cSmrg_LT_EOF 10114642e01fSmrg fi 10124642e01fSmrg 1013475c125cSmrg exit $EXIT_MISMATCH 1014475c125cSmrg fi 1015475c125cSmrg} 10164642e01fSmrg 101705b261ecSmrg 1018475c125cSmrg## ----------- ## 1019475c125cSmrg## Main. ## 1020475c125cSmrg## ----------- ## 10214642e01fSmrg 1022475c125cSmrg$opt_help || { 1023475c125cSmrg # Sanity checks first: 1024475c125cSmrg func_check_version_match 10254642e01fSmrg 1026475c125cSmrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1027475c125cSmrg func_fatal_configuration "not configured to build any kind of library" 1028475c125cSmrg fi 10294642e01fSmrg 1030475c125cSmrg test -z "$mode" && func_fatal_error "error: you must specify a MODE." 10314642e01fSmrg 103205b261ecSmrg 1033475c125cSmrg # Darwin sucks 1034475c125cSmrg eval std_shrext=\"$shrext_cmds\" 1035475c125cSmrg 1036475c125cSmrg 1037475c125cSmrg # Only execute mode is allowed to have -dlopen flags. 1038475c125cSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 1039475c125cSmrg func_error "unrecognized option \`-dlopen'" 1040475c125cSmrg $ECHO "$help" 1>&2 1041475c125cSmrg exit $EXIT_FAILURE 1042475c125cSmrg fi 1043475c125cSmrg 1044475c125cSmrg # Change the help message to a mode-specific one. 1045475c125cSmrg generic_help="$help" 1046475c125cSmrg help="Try \`$progname --help --mode=$mode' for more information." 1047475c125cSmrg} 104805b261ecSmrg 104905b261ecSmrg 10504642e01fSmrg# func_lalib_p file 10514642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 10524642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 10534642e01fSmrg# determined imposters. 10544642e01fSmrgfunc_lalib_p () 10554642e01fSmrg{ 10564642e01fSmrg test -f "$1" && 10574642e01fSmrg $SED -e 4q "$1" 2>/dev/null \ 10584642e01fSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 10594642e01fSmrg} 106005b261ecSmrg 10614642e01fSmrg# func_lalib_unsafe_p file 10624642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 10634642e01fSmrg# This function implements the same check as func_lalib_p without 10644642e01fSmrg# resorting to external programs. To this end, it redirects stdin and 10654642e01fSmrg# closes it afterwards, without saving the original file descriptor. 10664642e01fSmrg# As a safety measure, use it only where a negative result would be 10674642e01fSmrg# fatal anyway. Works if `file' does not exist. 10684642e01fSmrgfunc_lalib_unsafe_p () 10694642e01fSmrg{ 10704642e01fSmrg lalib_p=no 10714642e01fSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 10724642e01fSmrg for lalib_p_l in 1 2 3 4 10734642e01fSmrg do 10744642e01fSmrg read lalib_p_line 10754642e01fSmrg case "$lalib_p_line" in 10764642e01fSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 10774642e01fSmrg esac 10784642e01fSmrg done 10794642e01fSmrg exec 0<&5 5<&- 10804642e01fSmrg fi 10814642e01fSmrg test "$lalib_p" = yes 10824642e01fSmrg} 108305b261ecSmrg 10844642e01fSmrg# func_ltwrapper_script_p file 10854642e01fSmrg# True iff FILE is a libtool wrapper script 10864642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 10874642e01fSmrg# determined imposters. 10884642e01fSmrgfunc_ltwrapper_script_p () 10894642e01fSmrg{ 10904642e01fSmrg func_lalib_p "$1" 10914642e01fSmrg} 109205b261ecSmrg 10934642e01fSmrg# func_ltwrapper_executable_p file 10944642e01fSmrg# True iff FILE is a libtool wrapper executable 10954642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 10964642e01fSmrg# determined imposters. 10974642e01fSmrgfunc_ltwrapper_executable_p () 10984642e01fSmrg{ 10994642e01fSmrg func_ltwrapper_exec_suffix= 11004642e01fSmrg case $1 in 11014642e01fSmrg *.exe) ;; 11024642e01fSmrg *) func_ltwrapper_exec_suffix=.exe ;; 11034642e01fSmrg esac 11044642e01fSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 11054642e01fSmrg} 110605b261ecSmrg 11074642e01fSmrg# func_ltwrapper_scriptname file 11084642e01fSmrg# Assumes file is an ltwrapper_executable 11094642e01fSmrg# uses $file to determine the appropriate filename for a 11104642e01fSmrg# temporary ltwrapper_script. 11114642e01fSmrgfunc_ltwrapper_scriptname () 11124642e01fSmrg{ 1113475c125cSmrg func_ltwrapper_scriptname_result="" 1114475c125cSmrg if func_ltwrapper_executable_p "$1"; then 1115475c125cSmrg func_dirname_and_basename "$1" "" "." 1116475c125cSmrg func_stripname '' '.exe' "$func_basename_result" 1117475c125cSmrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1118475c125cSmrg fi 11194642e01fSmrg} 11204642e01fSmrg 11214642e01fSmrg# func_ltwrapper_p file 11224642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable 11234642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 11244642e01fSmrg# determined imposters. 11254642e01fSmrgfunc_ltwrapper_p () 11264642e01fSmrg{ 11274642e01fSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 11284642e01fSmrg} 11294642e01fSmrg 11304642e01fSmrg 11314642e01fSmrg# func_execute_cmds commands fail_cmd 11324642e01fSmrg# Execute tilde-delimited COMMANDS. 11334642e01fSmrg# If FAIL_CMD is given, eval that upon failure. 11344642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD! 11354642e01fSmrgfunc_execute_cmds () 11364642e01fSmrg{ 11374642e01fSmrg $opt_debug 11384642e01fSmrg save_ifs=$IFS; IFS='~' 11394642e01fSmrg for cmd in $1; do 11404642e01fSmrg IFS=$save_ifs 11414642e01fSmrg eval cmd=\"$cmd\" 11424642e01fSmrg func_show_eval "$cmd" "${2-:}" 11434642e01fSmrg done 11444642e01fSmrg IFS=$save_ifs 11454642e01fSmrg} 11464642e01fSmrg 11474642e01fSmrg 11484642e01fSmrg# func_source file 11494642e01fSmrg# Source FILE, adding directory component if necessary. 11504642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 11514642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 11524642e01fSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 11534642e01fSmrg# `FILE.' does not work on cygwin managed mounts. 11544642e01fSmrgfunc_source () 11554642e01fSmrg{ 11564642e01fSmrg $opt_debug 11574642e01fSmrg case $1 in 11584642e01fSmrg */* | *\\*) . "$1" ;; 11594642e01fSmrg *) . "./$1" ;; 11604642e01fSmrg esac 11614642e01fSmrg} 11624642e01fSmrg 11634642e01fSmrg 11644642e01fSmrg# func_infer_tag arg 11654642e01fSmrg# Infer tagged configuration to use if any are available and 11664642e01fSmrg# if one wasn't chosen via the "--tag" command line option. 11674642e01fSmrg# Only attempt this if the compiler in the base compile 11684642e01fSmrg# command doesn't match the default compiler. 11694642e01fSmrg# arg is usually of the form 'gcc ...' 11704642e01fSmrgfunc_infer_tag () 11714642e01fSmrg{ 11724642e01fSmrg $opt_debug 11734642e01fSmrg if test -n "$available_tags" && test -z "$tagname"; then 11744642e01fSmrg CC_quoted= 11754642e01fSmrg for arg in $CC; do 1176475c125cSmrg func_quote_for_eval "$arg" 1177475c125cSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 11784642e01fSmrg done 11796747b715Smrg CC_expanded=`func_echo_all $CC` 11806747b715Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 11814642e01fSmrg case $@ in 11824642e01fSmrg # Blanks in the command may have been stripped by the calling shell, 11834642e01fSmrg # but not from the CC environment variable when configure was run. 11846747b715Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 11856747b715Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 11864642e01fSmrg # Blanks at the start of $base_compile will cause this to fail 11874642e01fSmrg # if we don't check for them as well. 11884642e01fSmrg *) 11894642e01fSmrg for z in $available_tags; do 11904642e01fSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 11914642e01fSmrg # Evaluate the configuration. 11924642e01fSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 11934642e01fSmrg CC_quoted= 11944642e01fSmrg for arg in $CC; do 11954642e01fSmrg # Double-quote args containing other shell metacharacters. 1196475c125cSmrg func_quote_for_eval "$arg" 1197475c125cSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 11984642e01fSmrg done 11996747b715Smrg CC_expanded=`func_echo_all $CC` 12006747b715Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 12014642e01fSmrg case "$@ " in 12026747b715Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 12036747b715Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 12044642e01fSmrg # The compiler in the base compile command matches 12054642e01fSmrg # the one in the tagged configuration. 12064642e01fSmrg # Assume this is the tagged configuration we want. 12074642e01fSmrg tagname=$z 12084642e01fSmrg break 12094642e01fSmrg ;; 12104642e01fSmrg esac 12114642e01fSmrg fi 12124642e01fSmrg done 12134642e01fSmrg # If $tagname still isn't set, then no tagged configuration 12144642e01fSmrg # was found and let the user know that the "--tag" command 12154642e01fSmrg # line option must be used. 1216475c125cSmrg if test -z "$tagname"; then 1217475c125cSmrg func_echo "unable to infer tagged configuration" 1218475c125cSmrg func_fatal_error "specify a tag with \`--tag'" 1219475c125cSmrg# else 1220475c125cSmrg# func_verbose "using $tagname tagged configuration" 1221475c125cSmrg fi 1222475c125cSmrg ;; 1223475c125cSmrg esac 1224475c125cSmrg fi 12256747b715Smrg} 12266747b715Smrg 12276747b715Smrg 12286747b715Smrg 1229475c125cSmrg# func_write_libtool_object output_name pic_name nonpic_name 1230475c125cSmrg# Create a libtool object file (analogous to a ".la" file), 1231475c125cSmrg# but don't create it if we're doing a dry run. 1232475c125cSmrgfunc_write_libtool_object () 12336747b715Smrg{ 1234475c125cSmrg write_libobj=${1} 1235475c125cSmrg if test "$build_libtool_libs" = yes; then 1236475c125cSmrg write_lobj=\'${2}\' 1237475c125cSmrg else 1238475c125cSmrg write_lobj=none 1239475c125cSmrg fi 12406747b715Smrg 1241475c125cSmrg if test "$build_old_libs" = yes; then 1242475c125cSmrg write_oldobj=\'${3}\' 1243475c125cSmrg else 1244475c125cSmrg write_oldobj=none 1245475c125cSmrg fi 12466747b715Smrg 1247475c125cSmrg $opt_dry_run || { 1248475c125cSmrg cat >${write_libobj}T <<EOF 1249475c125cSmrg# $write_libobj - a libtool object file 1250475c125cSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1251475c125cSmrg# 1252475c125cSmrg# Please DO NOT delete this file! 1253475c125cSmrg# It is necessary for linking the library. 12546747b715Smrg 1255475c125cSmrg# Name of the PIC object. 1256475c125cSmrgpic_object=$write_lobj 12576747b715Smrg 1258475c125cSmrg# Name of the non-PIC object 1259475c125cSmrgnon_pic_object=$write_oldobj 12606747b715Smrg 1261475c125cSmrgEOF 1262475c125cSmrg $MV "${write_libobj}T" "${write_libobj}" 1263475c125cSmrg } 12646747b715Smrg} 12656747b715Smrg 12664642e01fSmrg# func_mode_compile arg... 12674642e01fSmrgfunc_mode_compile () 12684642e01fSmrg{ 12694642e01fSmrg $opt_debug 12704642e01fSmrg # Get the compilation command and the source file. 12714642e01fSmrg base_compile= 12724642e01fSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 12734642e01fSmrg suppress_opt=yes 12744642e01fSmrg suppress_output= 12754642e01fSmrg arg_mode=normal 12764642e01fSmrg libobj= 12774642e01fSmrg later= 12784642e01fSmrg pie_flag= 12794642e01fSmrg 12804642e01fSmrg for arg 12814642e01fSmrg do 12824642e01fSmrg case $arg_mode in 12834642e01fSmrg arg ) 12844642e01fSmrg # do not "continue". Instead, add this to base_compile 12854642e01fSmrg lastarg="$arg" 12864642e01fSmrg arg_mode=normal 12874642e01fSmrg ;; 12884642e01fSmrg 12894642e01fSmrg target ) 12904642e01fSmrg libobj="$arg" 12914642e01fSmrg arg_mode=normal 12924642e01fSmrg continue 12934642e01fSmrg ;; 12944642e01fSmrg 12954642e01fSmrg normal ) 12964642e01fSmrg # Accept any command-line options. 12974642e01fSmrg case $arg in 12984642e01fSmrg -o) 12994642e01fSmrg test -n "$libobj" && \ 13004642e01fSmrg func_fatal_error "you cannot specify \`-o' more than once" 13014642e01fSmrg arg_mode=target 13024642e01fSmrg continue 13034642e01fSmrg ;; 13044642e01fSmrg 13054642e01fSmrg -pie | -fpie | -fPIE) 1306475c125cSmrg pie_flag="$pie_flag $arg" 13074642e01fSmrg continue 13084642e01fSmrg ;; 13094642e01fSmrg 13104642e01fSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 1311475c125cSmrg later="$later $arg" 13124642e01fSmrg continue 13134642e01fSmrg ;; 13144642e01fSmrg 13154642e01fSmrg -no-suppress) 131605b261ecSmrg suppress_opt=no 131705b261ecSmrg continue 131805b261ecSmrg ;; 131905b261ecSmrg 132005b261ecSmrg -Xcompiler) 132105b261ecSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 132205b261ecSmrg continue # The current "srcfile" will either be retained or 132305b261ecSmrg ;; # replaced later. I would guess that would be a bug. 132405b261ecSmrg 132505b261ecSmrg -Wc,*) 13264642e01fSmrg func_stripname '-Wc,' '' "$arg" 13274642e01fSmrg args=$func_stripname_result 132805b261ecSmrg lastarg= 132905b261ecSmrg save_ifs="$IFS"; IFS=',' 13304642e01fSmrg for arg in $args; do 133105b261ecSmrg IFS="$save_ifs" 1332475c125cSmrg func_quote_for_eval "$arg" 1333475c125cSmrg lastarg="$lastarg $func_quote_for_eval_result" 133405b261ecSmrg done 133505b261ecSmrg IFS="$save_ifs" 13364642e01fSmrg func_stripname ' ' '' "$lastarg" 13374642e01fSmrg lastarg=$func_stripname_result 133805b261ecSmrg 133905b261ecSmrg # Add the arguments to base_compile. 1340475c125cSmrg base_compile="$base_compile $lastarg" 134105b261ecSmrg continue 134205b261ecSmrg ;; 134305b261ecSmrg 13444642e01fSmrg *) 134505b261ecSmrg # Accept the current argument as the source file. 134605b261ecSmrg # The previous "srcfile" becomes the current argument. 134705b261ecSmrg # 134805b261ecSmrg lastarg="$srcfile" 134905b261ecSmrg srcfile="$arg" 135005b261ecSmrg ;; 135105b261ecSmrg esac # case $arg 135205b261ecSmrg ;; 135305b261ecSmrg esac # case $arg_mode 135405b261ecSmrg 135505b261ecSmrg # Aesthetically quote the previous argument. 1356475c125cSmrg func_quote_for_eval "$lastarg" 1357475c125cSmrg base_compile="$base_compile $func_quote_for_eval_result" 135805b261ecSmrg done # for arg 135905b261ecSmrg 136005b261ecSmrg case $arg_mode in 136105b261ecSmrg arg) 13624642e01fSmrg func_fatal_error "you must specify an argument for -Xcompile" 136305b261ecSmrg ;; 136405b261ecSmrg target) 13654642e01fSmrg func_fatal_error "you must specify a target with \`-o'" 136605b261ecSmrg ;; 136705b261ecSmrg *) 136805b261ecSmrg # Get the name of the library object. 13694642e01fSmrg test -z "$libobj" && { 13704642e01fSmrg func_basename "$srcfile" 13714642e01fSmrg libobj="$func_basename_result" 13724642e01fSmrg } 137305b261ecSmrg ;; 137405b261ecSmrg esac 137505b261ecSmrg 137605b261ecSmrg # Recognize several different file suffixes. 137705b261ecSmrg # If the user specifies -o file.o, it is replaced with file.lo 137805b261ecSmrg case $libobj in 13794642e01fSmrg *.[cCFSifmso] | \ 13804642e01fSmrg *.ada | *.adb | *.ads | *.asm | \ 13814642e01fSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 13826747b715Smrg *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) 13834642e01fSmrg func_xform "$libobj" 13844642e01fSmrg libobj=$func_xform_result 13854642e01fSmrg ;; 138605b261ecSmrg esac 138705b261ecSmrg 138805b261ecSmrg case $libobj in 13894642e01fSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 139005b261ecSmrg *) 13914642e01fSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 139205b261ecSmrg ;; 139305b261ecSmrg esac 139405b261ecSmrg 139505b261ecSmrg func_infer_tag $base_compile 139605b261ecSmrg 139705b261ecSmrg for arg in $later; do 139805b261ecSmrg case $arg in 13994642e01fSmrg -shared) 14004642e01fSmrg test "$build_libtool_libs" != yes && \ 14014642e01fSmrg func_fatal_configuration "can not build a shared library" 14024642e01fSmrg build_old_libs=no 14034642e01fSmrg continue 14044642e01fSmrg ;; 14054642e01fSmrg 140605b261ecSmrg -static) 14074642e01fSmrg build_libtool_libs=no 140805b261ecSmrg build_old_libs=yes 140905b261ecSmrg continue 141005b261ecSmrg ;; 141105b261ecSmrg 141205b261ecSmrg -prefer-pic) 141305b261ecSmrg pic_mode=yes 141405b261ecSmrg continue 141505b261ecSmrg ;; 141605b261ecSmrg 141705b261ecSmrg -prefer-non-pic) 141805b261ecSmrg pic_mode=no 141905b261ecSmrg continue 142005b261ecSmrg ;; 142105b261ecSmrg esac 142205b261ecSmrg done 142305b261ecSmrg 14244642e01fSmrg func_quote_for_eval "$libobj" 14254642e01fSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 14264642e01fSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 14274642e01fSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 14284642e01fSmrg func_dirname_and_basename "$obj" "/" "" 14294642e01fSmrg objname="$func_basename_result" 14304642e01fSmrg xdir="$func_dirname_result" 143105b261ecSmrg lobj=${xdir}$objdir/$objname 143205b261ecSmrg 14334642e01fSmrg test -z "$base_compile" && \ 14344642e01fSmrg func_fatal_help "you must specify a compilation command" 143505b261ecSmrg 143605b261ecSmrg # Delete any leftover library objects. 143705b261ecSmrg if test "$build_old_libs" = yes; then 143805b261ecSmrg removelist="$obj $lobj $libobj ${libobj}T" 143905b261ecSmrg else 144005b261ecSmrg removelist="$lobj $libobj ${libobj}T" 144105b261ecSmrg fi 144205b261ecSmrg 144305b261ecSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 144405b261ecSmrg case $host_os in 14454642e01fSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 144605b261ecSmrg pic_mode=default 144705b261ecSmrg ;; 144805b261ecSmrg esac 144905b261ecSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 145005b261ecSmrg # non-PIC code in shared libraries is not supported 145105b261ecSmrg pic_mode=default 145205b261ecSmrg fi 145305b261ecSmrg 145405b261ecSmrg # Calculate the filename of the output object if compiler does 145505b261ecSmrg # not support -o with -c 145605b261ecSmrg if test "$compiler_c_o" = no; then 14576747b715Smrg output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 145805b261ecSmrg lockfile="$output_obj.lock" 145905b261ecSmrg else 146005b261ecSmrg output_obj= 146105b261ecSmrg need_locks=no 146205b261ecSmrg lockfile= 146305b261ecSmrg fi 146405b261ecSmrg 146505b261ecSmrg # Lock this critical section if it is needed 146605b261ecSmrg # We use this script file to make the link, it avoids creating a new file 146705b261ecSmrg if test "$need_locks" = yes; then 14684642e01fSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 14694642e01fSmrg func_echo "Waiting for $lockfile to be removed" 147005b261ecSmrg sleep 2 147105b261ecSmrg done 147205b261ecSmrg elif test "$need_locks" = warn; then 147305b261ecSmrg if test -f "$lockfile"; then 14744642e01fSmrg $ECHO "\ 147505b261ecSmrg*** ERROR, $lockfile exists and contains: 147605b261ecSmrg`cat $lockfile 2>/dev/null` 147705b261ecSmrg 147805b261ecSmrgThis indicates that another process is trying to use the same 147905b261ecSmrgtemporary object file, and libtool could not work around it because 148005b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 148105b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 148205b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 148305b261ecSmrgcompiler." 148405b261ecSmrg 14854642e01fSmrg $opt_dry_run || $RM $removelist 148605b261ecSmrg exit $EXIT_FAILURE 148705b261ecSmrg fi 1488475c125cSmrg removelist="$removelist $output_obj" 14894642e01fSmrg $ECHO "$srcfile" > "$lockfile" 149005b261ecSmrg fi 149105b261ecSmrg 14924642e01fSmrg $opt_dry_run || $RM $removelist 1493475c125cSmrg removelist="$removelist $lockfile" 14944642e01fSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 14954642e01fSmrg 1496475c125cSmrg if test -n "$fix_srcfile_path"; then 1497475c125cSmrg eval srcfile=\"$fix_srcfile_path\" 1498475c125cSmrg fi 14994642e01fSmrg func_quote_for_eval "$srcfile" 15004642e01fSmrg qsrcfile=$func_quote_for_eval_result 150105b261ecSmrg 150205b261ecSmrg # Only build a PIC object if we are building libtool libraries. 150305b261ecSmrg if test "$build_libtool_libs" = yes; then 150405b261ecSmrg # Without this assignment, base_compile gets emptied. 150505b261ecSmrg fbsd_hideous_sh_bug=$base_compile 150605b261ecSmrg 150705b261ecSmrg if test "$pic_mode" != no; then 150805b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 150905b261ecSmrg else 151005b261ecSmrg # Don't build PIC code 151105b261ecSmrg command="$base_compile $qsrcfile" 151205b261ecSmrg fi 151305b261ecSmrg 15144642e01fSmrg func_mkdir_p "$xdir$objdir" 151505b261ecSmrg 151605b261ecSmrg if test -z "$output_obj"; then 151705b261ecSmrg # Place PIC objects in $objdir 1518475c125cSmrg command="$command -o $lobj" 151905b261ecSmrg fi 152005b261ecSmrg 15214642e01fSmrg func_show_eval_locale "$command" \ 15224642e01fSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 152305b261ecSmrg 152405b261ecSmrg if test "$need_locks" = warn && 152505b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 15264642e01fSmrg $ECHO "\ 152705b261ecSmrg*** ERROR, $lockfile contains: 152805b261ecSmrg`cat $lockfile 2>/dev/null` 152905b261ecSmrg 153005b261ecSmrgbut it should contain: 153105b261ecSmrg$srcfile 153205b261ecSmrg 153305b261ecSmrgThis indicates that another process is trying to use the same 153405b261ecSmrgtemporary object file, and libtool could not work around it because 153505b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 153605b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 153705b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 153805b261ecSmrgcompiler." 153905b261ecSmrg 15404642e01fSmrg $opt_dry_run || $RM $removelist 154105b261ecSmrg exit $EXIT_FAILURE 154205b261ecSmrg fi 154305b261ecSmrg 154405b261ecSmrg # Just move the object if needed, then go on to compile the next one 154505b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 15464642e01fSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 15474642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 154805b261ecSmrg fi 154905b261ecSmrg 155005b261ecSmrg # Allow error messages only from the first compilation. 155105b261ecSmrg if test "$suppress_opt" = yes; then 15524642e01fSmrg suppress_output=' >/dev/null 2>&1' 155305b261ecSmrg fi 155405b261ecSmrg fi 155505b261ecSmrg 155605b261ecSmrg # Only build a position-dependent object if we build old libraries. 155705b261ecSmrg if test "$build_old_libs" = yes; then 155805b261ecSmrg if test "$pic_mode" != yes; then 155905b261ecSmrg # Don't build PIC code 15604642e01fSmrg command="$base_compile $qsrcfile$pie_flag" 156105b261ecSmrg else 156205b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 156305b261ecSmrg fi 156405b261ecSmrg if test "$compiler_c_o" = yes; then 1565475c125cSmrg command="$command -o $obj" 156605b261ecSmrg fi 156705b261ecSmrg 156805b261ecSmrg # Suppress compiler output if we already did a PIC compilation. 1569475c125cSmrg command="$command$suppress_output" 15704642e01fSmrg func_show_eval_locale "$command" \ 15714642e01fSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 157205b261ecSmrg 157305b261ecSmrg if test "$need_locks" = warn && 157405b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 15754642e01fSmrg $ECHO "\ 157605b261ecSmrg*** ERROR, $lockfile contains: 157705b261ecSmrg`cat $lockfile 2>/dev/null` 157805b261ecSmrg 157905b261ecSmrgbut it should contain: 158005b261ecSmrg$srcfile 158105b261ecSmrg 158205b261ecSmrgThis indicates that another process is trying to use the same 158305b261ecSmrgtemporary object file, and libtool could not work around it because 158405b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 158505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 158605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 158705b261ecSmrgcompiler." 158805b261ecSmrg 15894642e01fSmrg $opt_dry_run || $RM $removelist 159005b261ecSmrg exit $EXIT_FAILURE 159105b261ecSmrg fi 159205b261ecSmrg 159305b261ecSmrg # Just move the object if needed 159405b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 15954642e01fSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 15964642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 159705b261ecSmrg fi 159805b261ecSmrg fi 159905b261ecSmrg 16004642e01fSmrg $opt_dry_run || { 16014642e01fSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 160205b261ecSmrg 16034642e01fSmrg # Unlock the critical section if it was locked 16044642e01fSmrg if test "$need_locks" != no; then 16054642e01fSmrg removelist=$lockfile 16064642e01fSmrg $RM "$lockfile" 16074642e01fSmrg fi 16084642e01fSmrg } 160905b261ecSmrg 161005b261ecSmrg exit $EXIT_SUCCESS 16114642e01fSmrg} 161205b261ecSmrg 16134642e01fSmrg$opt_help || { 1614475c125cSmrg test "$mode" = compile && func_mode_compile ${1+"$@"} 16154642e01fSmrg} 161605b261ecSmrg 16174642e01fSmrgfunc_mode_help () 16184642e01fSmrg{ 16194642e01fSmrg # We need to display help for each of the modes. 1620475c125cSmrg case $mode in 16214642e01fSmrg "") 16224642e01fSmrg # Generic help is extracted from the usage comments 16234642e01fSmrg # at the start of this file. 16244642e01fSmrg func_help 16254642e01fSmrg ;; 162605b261ecSmrg 16274642e01fSmrg clean) 16284642e01fSmrg $ECHO \ 16294642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 163005b261ecSmrg 16314642e01fSmrgRemove files from the build directory. 163205b261ecSmrg 16334642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 16344642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16354642e01fSmrgto RM. 163605b261ecSmrg 16374642e01fSmrgIf FILE is a libtool library, object or program, all the files associated 16384642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 16394642e01fSmrg ;; 164005b261ecSmrg 16414642e01fSmrg compile) 16424642e01fSmrg $ECHO \ 16434642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 164405b261ecSmrg 16454642e01fSmrgCompile a source file into a libtool library object. 164605b261ecSmrg 16474642e01fSmrgThis mode accepts the following additional options: 164805b261ecSmrg 16494642e01fSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 16504642e01fSmrg -no-suppress do not suppress compiler output for multiple passes 16516747b715Smrg -prefer-pic try to build PIC objects only 16526747b715Smrg -prefer-non-pic try to build non-PIC objects only 16534642e01fSmrg -shared do not build a \`.o' file suitable for static linking 16544642e01fSmrg -static only build a \`.o' file suitable for static linking 16556747b715Smrg -Wc,FLAG pass FLAG directly to the compiler 165605b261ecSmrg 16574642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 16584642e01fSmrgfrom the given SOURCEFILE. 165905b261ecSmrg 16604642e01fSmrgThe output file name is determined by removing the directory component from 16614642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 16624642e01fSmrglibrary object suffix, \`.lo'." 16634642e01fSmrg ;; 166405b261ecSmrg 16654642e01fSmrg execute) 16664642e01fSmrg $ECHO \ 16674642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 166805b261ecSmrg 16694642e01fSmrgAutomatically set library path, then run a program. 167005b261ecSmrg 16714642e01fSmrgThis mode accepts the following additional options: 167205b261ecSmrg 16734642e01fSmrg -dlopen FILE add the directory containing FILE to the library path 167405b261ecSmrg 16754642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen' 16764642e01fSmrgflags. 167705b261ecSmrg 16784642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 16794642e01fSmrginto their corresponding uninstalled binary, and any of their required library 16804642e01fSmrgdirectories are added to the library path. 168105b261ecSmrg 16824642e01fSmrgThen, COMMAND is executed, with ARGS as arguments." 16834642e01fSmrg ;; 168405b261ecSmrg 16854642e01fSmrg finish) 16864642e01fSmrg $ECHO \ 16874642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 168805b261ecSmrg 16894642e01fSmrgComplete the installation of libtool libraries. 169005b261ecSmrg 16914642e01fSmrgEach LIBDIR is a directory that contains libtool libraries. 169205b261ecSmrg 16934642e01fSmrgThe commands that this mode executes may require superuser privileges. Use 16944642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed." 16954642e01fSmrg ;; 169605b261ecSmrg 16974642e01fSmrg install) 16984642e01fSmrg $ECHO \ 16994642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 170005b261ecSmrg 17014642e01fSmrgInstall executables or libraries. 170205b261ecSmrg 17034642e01fSmrgINSTALL-COMMAND is the installation command. The first component should be 17044642e01fSmrgeither the \`install' or \`cp' program. 170505b261ecSmrg 17064642e01fSmrgThe following components of INSTALL-COMMAND are treated specially: 170705b261ecSmrg 17086747b715Smrg -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 170905b261ecSmrg 17104642e01fSmrgThe rest of the components are interpreted as arguments to that command (only 17114642e01fSmrgBSD-compatible install options are recognized)." 17124642e01fSmrg ;; 171305b261ecSmrg 17144642e01fSmrg link) 17154642e01fSmrg $ECHO \ 17164642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 171705b261ecSmrg 17184642e01fSmrgLink object files or libraries together to form another library, or to 17194642e01fSmrgcreate an executable program. 172005b261ecSmrg 17214642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create 17224642e01fSmrga program from several object files. 172305b261ecSmrg 17244642e01fSmrgThe following components of LINK-COMMAND are treated specially: 172505b261ecSmrg 17264642e01fSmrg -all-static do not do any dynamic linking at all 17274642e01fSmrg -avoid-version do not add a version suffix if possible 17286747b715Smrg -bindir BINDIR specify path to binaries directory (for systems where 17296747b715Smrg libraries must be found in the PATH setting at runtime) 17304642e01fSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 17314642e01fSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 17324642e01fSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 17334642e01fSmrg -export-symbols SYMFILE 17344642e01fSmrg try to export only the symbols listed in SYMFILE 17354642e01fSmrg -export-symbols-regex REGEX 17364642e01fSmrg try to export only the symbols matching REGEX 17374642e01fSmrg -LLIBDIR search LIBDIR for required installed libraries 17384642e01fSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 17394642e01fSmrg -module build a library that can dlopened 17404642e01fSmrg -no-fast-install disable the fast-install mode 17414642e01fSmrg -no-install link a not-installable executable 17424642e01fSmrg -no-undefined declare that a library does not refer to external symbols 17434642e01fSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 17444642e01fSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 17454642e01fSmrg -precious-files-regex REGEX 17464642e01fSmrg don't remove output files matching REGEX 17474642e01fSmrg -release RELEASE specify package release information 17484642e01fSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 17494642e01fSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 17504642e01fSmrg -shared only do dynamic linking of libtool libraries 17514642e01fSmrg -shrext SUFFIX override the standard shared library file extension 17524642e01fSmrg -static do not do any dynamic linking of uninstalled libtool libraries 17534642e01fSmrg -static-libtool-libs 17544642e01fSmrg do not do any dynamic linking of libtool libraries 17554642e01fSmrg -version-info CURRENT[:REVISION[:AGE]] 17564642e01fSmrg specify library version info [each variable defaults to 0] 17574642e01fSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 17586747b715Smrg -Wc,FLAG 17596747b715Smrg -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 17606747b715Smrg -Wl,FLAG 17616747b715Smrg -Xlinker FLAG pass linker-specific FLAG directly to the linker 17626747b715Smrg -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 176305b261ecSmrg 17644642e01fSmrgAll other options (arguments beginning with \`-') are ignored. 176505b261ecSmrg 17664642e01fSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 17674642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library 17684642e01fSmrgobject files. 176905b261ecSmrg 17704642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 17714642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 17724642e01fSmrgrequired, except when creating a convenience library. 177305b261ecSmrg 17744642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 17754642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 177605b261ecSmrg 17774642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 17784642e01fSmrgis created, otherwise an executable program is created." 177905b261ecSmrg ;; 178005b261ecSmrg 17814642e01fSmrg uninstall) 17824642e01fSmrg $ECHO \ 17834642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 178405b261ecSmrg 17854642e01fSmrgRemove libraries from an installation directory. 178605b261ecSmrg 17874642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 17884642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 17894642e01fSmrgto RM. 179005b261ecSmrg 17914642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted. 17924642e01fSmrgOtherwise, only FILE itself is deleted using RM." 17934642e01fSmrg ;; 179405b261ecSmrg 17954642e01fSmrg *) 1796475c125cSmrg func_fatal_help "invalid operation mode \`$mode'" 17974642e01fSmrg ;; 17984642e01fSmrg esac 179905b261ecSmrg 18006747b715Smrg echo 18014642e01fSmrg $ECHO "Try \`$progname --help' for more information about other modes." 18024642e01fSmrg} 180305b261ecSmrg 18046747b715Smrg# Now that we've collected a possible --mode arg, show help if necessary 18056747b715Smrgif $opt_help; then 18066747b715Smrg if test "$opt_help" = :; then 18076747b715Smrg func_mode_help 18086747b715Smrg else 18096747b715Smrg { 18106747b715Smrg func_help noexit 1811475c125cSmrg for mode in compile link execute install finish uninstall clean; do 18126747b715Smrg func_mode_help 18136747b715Smrg done 18146747b715Smrg } | sed -n '1p; 2,$s/^Usage:/ or: /p' 18156747b715Smrg { 18166747b715Smrg func_help noexit 1817475c125cSmrg for mode in compile link execute install finish uninstall clean; do 18186747b715Smrg echo 18196747b715Smrg func_mode_help 18206747b715Smrg done 18216747b715Smrg } | 18226747b715Smrg sed '1d 18236747b715Smrg /^When reporting/,/^Report/{ 18246747b715Smrg H 18256747b715Smrg d 18266747b715Smrg } 18276747b715Smrg $x 18286747b715Smrg /information about other modes/d 18296747b715Smrg /more detailed .*MODE/d 18306747b715Smrg s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 18316747b715Smrg fi 18326747b715Smrg exit $? 18336747b715Smrgfi 183405b261ecSmrg 183505b261ecSmrg 18364642e01fSmrg# func_mode_execute arg... 18374642e01fSmrgfunc_mode_execute () 18384642e01fSmrg{ 18394642e01fSmrg $opt_debug 18404642e01fSmrg # The first argument is the command name. 18414642e01fSmrg cmd="$nonopt" 18424642e01fSmrg test -z "$cmd" && \ 18434642e01fSmrg func_fatal_help "you must specify a COMMAND" 184405b261ecSmrg 18454642e01fSmrg # Handle -dlopen flags immediately. 1846475c125cSmrg for file in $execute_dlfiles; do 18474642e01fSmrg test -f "$file" \ 18484642e01fSmrg || func_fatal_help "\`$file' is not a file" 184905b261ecSmrg 18504642e01fSmrg dir= 18514642e01fSmrg case $file in 18524642e01fSmrg *.la) 18534642e01fSmrg # Check to see that this really is a libtool archive. 18544642e01fSmrg func_lalib_unsafe_p "$file" \ 18554642e01fSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 185605b261ecSmrg 18574642e01fSmrg # Read the libtool library. 18584642e01fSmrg dlname= 18594642e01fSmrg library_names= 18604642e01fSmrg func_source "$file" 186105b261ecSmrg 18624642e01fSmrg # Skip this library if it cannot be dlopened. 18634642e01fSmrg if test -z "$dlname"; then 18644642e01fSmrg # Warn if it was a shared library. 18654642e01fSmrg test -n "$library_names" && \ 18664642e01fSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 18674642e01fSmrg continue 18684642e01fSmrg fi 186905b261ecSmrg 18704642e01fSmrg func_dirname "$file" "" "." 18714642e01fSmrg dir="$func_dirname_result" 187205b261ecSmrg 18734642e01fSmrg if test -f "$dir/$objdir/$dlname"; then 1874475c125cSmrg dir="$dir/$objdir" 18754642e01fSmrg else 18764642e01fSmrg if test ! -f "$dir/$dlname"; then 18774642e01fSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 18784642e01fSmrg fi 18794642e01fSmrg fi 188005b261ecSmrg ;; 188105b261ecSmrg 18824642e01fSmrg *.lo) 18834642e01fSmrg # Just add the directory containing the .lo file. 18844642e01fSmrg func_dirname "$file" "" "." 18854642e01fSmrg dir="$func_dirname_result" 188605b261ecSmrg ;; 188705b261ecSmrg 18884642e01fSmrg *) 18894642e01fSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 189005b261ecSmrg continue 189105b261ecSmrg ;; 18924642e01fSmrg esac 189305b261ecSmrg 18944642e01fSmrg # Get the absolute pathname. 18954642e01fSmrg absdir=`cd "$dir" && pwd` 18964642e01fSmrg test -n "$absdir" && dir="$absdir" 189705b261ecSmrg 18984642e01fSmrg # Now add the directory to shlibpath_var. 18994642e01fSmrg if eval "test -z \"\$$shlibpath_var\""; then 19004642e01fSmrg eval "$shlibpath_var=\"\$dir\"" 19014642e01fSmrg else 19024642e01fSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 19034642e01fSmrg fi 19044642e01fSmrg done 190505b261ecSmrg 19064642e01fSmrg # This variable tells wrapper scripts just to set shlibpath_var 19074642e01fSmrg # rather than running their programs. 19084642e01fSmrg libtool_execute_magic="$magic" 190905b261ecSmrg 19104642e01fSmrg # Check if any of the arguments is a wrapper script. 19114642e01fSmrg args= 19124642e01fSmrg for file 19134642e01fSmrg do 19144642e01fSmrg case $file in 19156747b715Smrg -* | *.la | *.lo ) ;; 19164642e01fSmrg *) 19174642e01fSmrg # Do a test to see if this is really a libtool program. 19184642e01fSmrg if func_ltwrapper_script_p "$file"; then 19194642e01fSmrg func_source "$file" 19204642e01fSmrg # Transform arg to wrapped name. 19214642e01fSmrg file="$progdir/$program" 19224642e01fSmrg elif func_ltwrapper_executable_p "$file"; then 19234642e01fSmrg func_ltwrapper_scriptname "$file" 19244642e01fSmrg func_source "$func_ltwrapper_scriptname_result" 19254642e01fSmrg # Transform arg to wrapped name. 19264642e01fSmrg file="$progdir/$program" 19274642e01fSmrg fi 19284642e01fSmrg ;; 19294642e01fSmrg esac 19304642e01fSmrg # Quote arguments (to preserve shell metacharacters). 1931475c125cSmrg func_quote_for_eval "$file" 1932475c125cSmrg args="$args $func_quote_for_eval_result" 19334642e01fSmrg done 193405b261ecSmrg 19354642e01fSmrg if test "X$opt_dry_run" = Xfalse; then 19364642e01fSmrg if test -n "$shlibpath_var"; then 19374642e01fSmrg # Export the shlibpath_var. 19384642e01fSmrg eval "export $shlibpath_var" 19394642e01fSmrg fi 194005b261ecSmrg 19414642e01fSmrg # Restore saved environment variables 19424642e01fSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 19434642e01fSmrg do 19444642e01fSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 19454642e01fSmrg $lt_var=\$save_$lt_var; export $lt_var 194605b261ecSmrg else 19474642e01fSmrg $lt_unset $lt_var 19484642e01fSmrg fi" 19494642e01fSmrg done 195005b261ecSmrg 19514642e01fSmrg # Now prepare to actually exec the command. 19524642e01fSmrg exec_cmd="\$cmd$args" 19534642e01fSmrg else 19544642e01fSmrg # Display what would be done. 19554642e01fSmrg if test -n "$shlibpath_var"; then 19564642e01fSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 19576747b715Smrg echo "export $shlibpath_var" 19584642e01fSmrg fi 19594642e01fSmrg $ECHO "$cmd$args" 19604642e01fSmrg exit $EXIT_SUCCESS 19614642e01fSmrg fi 19624642e01fSmrg} 196305b261ecSmrg 1964475c125cSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"} 196505b261ecSmrg 196605b261ecSmrg 19674642e01fSmrg# func_mode_finish arg... 19684642e01fSmrgfunc_mode_finish () 19694642e01fSmrg{ 19704642e01fSmrg $opt_debug 1971475c125cSmrg libdirs="$nonopt" 19724642e01fSmrg admincmds= 197305b261ecSmrg 19746747b715Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1975475c125cSmrg for dir 1976475c125cSmrg do 1977475c125cSmrg libdirs="$libdirs $dir" 1978475c125cSmrg done 1979475c125cSmrg 19804642e01fSmrg for libdir in $libdirs; do 19814642e01fSmrg if test -n "$finish_cmds"; then 19824642e01fSmrg # Do each command in the finish commands. 19834642e01fSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 19844642e01fSmrg'"$cmd"'"' 198505b261ecSmrg fi 19864642e01fSmrg if test -n "$finish_eval"; then 19874642e01fSmrg # Do the single finish_eval. 19884642e01fSmrg eval cmds=\"$finish_eval\" 1989475c125cSmrg $opt_dry_run || eval "$cmds" || admincmds="$admincmds 19904642e01fSmrg $cmds" 19914642e01fSmrg fi 19924642e01fSmrg done 19934642e01fSmrg fi 199405b261ecSmrg 19954642e01fSmrg # Exit here if they wanted silent mode. 19964642e01fSmrg $opt_silent && exit $EXIT_SUCCESS 199705b261ecSmrg 1998475c125cSmrg echo "----------------------------------------------------------------------" 1999475c125cSmrg echo "Libraries have been installed in:" 2000475c125cSmrg for libdir in $libdirs; do 2001475c125cSmrg $ECHO " $libdir" 2002475c125cSmrg done 2003475c125cSmrg echo 2004475c125cSmrg echo "If you ever happen to want to link against installed libraries" 2005475c125cSmrg echo "in a given directory, LIBDIR, you must either use libtool, and" 2006475c125cSmrg echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2007475c125cSmrg echo "flag during linking and do at least one of the following:" 2008475c125cSmrg if test -n "$shlibpath_var"; then 2009475c125cSmrg echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2010475c125cSmrg echo " during execution" 2011475c125cSmrg fi 2012475c125cSmrg if test -n "$runpath_var"; then 2013475c125cSmrg echo " - add LIBDIR to the \`$runpath_var' environment variable" 2014475c125cSmrg echo " during linking" 2015475c125cSmrg fi 2016475c125cSmrg if test -n "$hardcode_libdir_flag_spec"; then 2017475c125cSmrg libdir=LIBDIR 2018475c125cSmrg eval flag=\"$hardcode_libdir_flag_spec\" 20194642e01fSmrg 2020475c125cSmrg $ECHO " - use the \`$flag' linker flag" 2021475c125cSmrg fi 2022475c125cSmrg if test -n "$admincmds"; then 2023475c125cSmrg $ECHO " - have your system administrator run these commands:$admincmds" 20246747b715Smrg fi 2025475c125cSmrg if test -f /etc/ld.so.conf; then 2026475c125cSmrg echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2027475c125cSmrg fi 2028475c125cSmrg echo 2029475c125cSmrg 2030475c125cSmrg echo "See any operating system documentation about shared libraries for" 2031475c125cSmrg case $host in 2032475c125cSmrg solaris2.[6789]|solaris2.1[0-9]) 2033475c125cSmrg echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2034475c125cSmrg echo "pages." 2035475c125cSmrg ;; 2036475c125cSmrg *) 2037475c125cSmrg echo "more information, such as the ld(1) and ld.so(8) manual pages." 2038475c125cSmrg ;; 2039475c125cSmrg esac 2040475c125cSmrg echo "----------------------------------------------------------------------" 20414642e01fSmrg exit $EXIT_SUCCESS 20424642e01fSmrg} 20434642e01fSmrg 2044475c125cSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"} 20454642e01fSmrg 20464642e01fSmrg 20474642e01fSmrg# func_mode_install arg... 20484642e01fSmrgfunc_mode_install () 20494642e01fSmrg{ 20504642e01fSmrg $opt_debug 20514642e01fSmrg # There may be an optional sh(1) argument at the beginning of 20524642e01fSmrg # install_prog (especially on Windows NT). 20534642e01fSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 20544642e01fSmrg # Allow the use of GNU shtool's install command. 20556747b715Smrg case $nonopt in *shtool*) :;; *) false;; esac; then 20564642e01fSmrg # Aesthetically quote it. 20574642e01fSmrg func_quote_for_eval "$nonopt" 20584642e01fSmrg install_prog="$func_quote_for_eval_result " 20594642e01fSmrg arg=$1 20604642e01fSmrg shift 20614642e01fSmrg else 20624642e01fSmrg install_prog= 20634642e01fSmrg arg=$nonopt 20644642e01fSmrg fi 20654642e01fSmrg 20664642e01fSmrg # The real first argument should be the name of the installation program. 20674642e01fSmrg # Aesthetically quote it. 20684642e01fSmrg func_quote_for_eval "$arg" 2069475c125cSmrg install_prog="$install_prog$func_quote_for_eval_result" 20706747b715Smrg install_shared_prog=$install_prog 20716747b715Smrg case " $install_prog " in 20726747b715Smrg *[\\\ /]cp\ *) install_cp=: ;; 20736747b715Smrg *) install_cp=false ;; 20746747b715Smrg esac 20754642e01fSmrg 20764642e01fSmrg # We need to accept at least all the BSD install flags. 20774642e01fSmrg dest= 20784642e01fSmrg files= 20794642e01fSmrg opts= 20804642e01fSmrg prev= 20814642e01fSmrg install_type= 20824642e01fSmrg isdir=no 20834642e01fSmrg stripme= 20846747b715Smrg no_mode=: 20854642e01fSmrg for arg 20864642e01fSmrg do 20876747b715Smrg arg2= 20884642e01fSmrg if test -n "$dest"; then 2089475c125cSmrg files="$files $dest" 20904642e01fSmrg dest=$arg 20914642e01fSmrg continue 20924642e01fSmrg fi 20934642e01fSmrg 20944642e01fSmrg case $arg in 20954642e01fSmrg -d) isdir=yes ;; 20964642e01fSmrg -f) 20976747b715Smrg if $install_cp; then :; else 20986747b715Smrg prev=$arg 20996747b715Smrg fi 21004642e01fSmrg ;; 21014642e01fSmrg -g | -m | -o) 21024642e01fSmrg prev=$arg 21034642e01fSmrg ;; 21044642e01fSmrg -s) 21054642e01fSmrg stripme=" -s" 21064642e01fSmrg continue 21074642e01fSmrg ;; 21084642e01fSmrg -*) 21094642e01fSmrg ;; 21104642e01fSmrg *) 21114642e01fSmrg # If the previous option needed an argument, then skip it. 21124642e01fSmrg if test -n "$prev"; then 21136747b715Smrg if test "x$prev" = x-m && test -n "$install_override_mode"; then 21146747b715Smrg arg2=$install_override_mode 21156747b715Smrg no_mode=false 21166747b715Smrg fi 211705b261ecSmrg prev= 211805b261ecSmrg else 21194642e01fSmrg dest=$arg 21204642e01fSmrg continue 212105b261ecSmrg fi 212205b261ecSmrg ;; 21234642e01fSmrg esac 212405b261ecSmrg 21254642e01fSmrg # Aesthetically quote the argument. 21264642e01fSmrg func_quote_for_eval "$arg" 2127475c125cSmrg install_prog="$install_prog $func_quote_for_eval_result" 21286747b715Smrg if test -n "$arg2"; then 21296747b715Smrg func_quote_for_eval "$arg2" 21306747b715Smrg fi 2131475c125cSmrg install_shared_prog="$install_shared_prog $func_quote_for_eval_result" 21324642e01fSmrg done 213305b261ecSmrg 21344642e01fSmrg test -z "$install_prog" && \ 21354642e01fSmrg func_fatal_help "you must specify an install program" 213605b261ecSmrg 21374642e01fSmrg test -n "$prev" && \ 21384642e01fSmrg func_fatal_help "the \`$prev' option requires an argument" 213905b261ecSmrg 21406747b715Smrg if test -n "$install_override_mode" && $no_mode; then 21416747b715Smrg if $install_cp; then :; else 21426747b715Smrg func_quote_for_eval "$install_override_mode" 2143475c125cSmrg install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" 21446747b715Smrg fi 21456747b715Smrg fi 21466747b715Smrg 21474642e01fSmrg if test -z "$files"; then 21484642e01fSmrg if test -z "$dest"; then 21494642e01fSmrg func_fatal_help "no file or destination specified" 21504642e01fSmrg else 21514642e01fSmrg func_fatal_help "you must specify a destination" 21524642e01fSmrg fi 215305b261ecSmrg fi 215405b261ecSmrg 21554642e01fSmrg # Strip any trailing slash from the destination. 21564642e01fSmrg func_stripname '' '/' "$dest" 21574642e01fSmrg dest=$func_stripname_result 215805b261ecSmrg 21594642e01fSmrg # Check to see that the destination is a directory. 21604642e01fSmrg test -d "$dest" && isdir=yes 21614642e01fSmrg if test "$isdir" = yes; then 21624642e01fSmrg destdir="$dest" 21634642e01fSmrg destname= 216405b261ecSmrg else 21654642e01fSmrg func_dirname_and_basename "$dest" "" "." 21664642e01fSmrg destdir="$func_dirname_result" 21674642e01fSmrg destname="$func_basename_result" 216805b261ecSmrg 21694642e01fSmrg # Not a directory, so check to see that there is only one file specified. 21704642e01fSmrg set dummy $files; shift 21714642e01fSmrg test "$#" -gt 1 && \ 21724642e01fSmrg func_fatal_help "\`$dest' is not a directory" 217305b261ecSmrg fi 21744642e01fSmrg case $destdir in 21754642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 217605b261ecSmrg *) 21774642e01fSmrg for file in $files; do 21784642e01fSmrg case $file in 21794642e01fSmrg *.lo) ;; 21804642e01fSmrg *) 21814642e01fSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 21824642e01fSmrg ;; 21834642e01fSmrg esac 21844642e01fSmrg done 218505b261ecSmrg ;; 218605b261ecSmrg esac 218705b261ecSmrg 21884642e01fSmrg # This variable tells wrapper scripts just to set variables rather 21894642e01fSmrg # than running their programs. 21904642e01fSmrg libtool_install_magic="$magic" 219105b261ecSmrg 21924642e01fSmrg staticlibs= 21934642e01fSmrg future_libdirs= 21944642e01fSmrg current_libdirs= 21954642e01fSmrg for file in $files; do 219605b261ecSmrg 21974642e01fSmrg # Do each installation. 21984642e01fSmrg case $file in 21994642e01fSmrg *.$libext) 22004642e01fSmrg # Do the static libraries later. 2201475c125cSmrg staticlibs="$staticlibs $file" 22024642e01fSmrg ;; 22034642e01fSmrg 22044642e01fSmrg *.la) 22054642e01fSmrg # Check to see that this really is a libtool archive. 22064642e01fSmrg func_lalib_unsafe_p "$file" \ 22074642e01fSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 22084642e01fSmrg 22094642e01fSmrg library_names= 22104642e01fSmrg old_library= 22114642e01fSmrg relink_command= 22124642e01fSmrg func_source "$file" 22134642e01fSmrg 22144642e01fSmrg # Add the libdir to current_libdirs if it is the destination. 22154642e01fSmrg if test "X$destdir" = "X$libdir"; then 22164642e01fSmrg case "$current_libdirs " in 22174642e01fSmrg *" $libdir "*) ;; 2218475c125cSmrg *) current_libdirs="$current_libdirs $libdir" ;; 221905b261ecSmrg esac 22204642e01fSmrg else 22214642e01fSmrg # Note the libdir as a future libdir. 22224642e01fSmrg case "$future_libdirs " in 22234642e01fSmrg *" $libdir "*) ;; 2224475c125cSmrg *) future_libdirs="$future_libdirs $libdir" ;; 22254642e01fSmrg esac 22264642e01fSmrg fi 222705b261ecSmrg 22284642e01fSmrg func_dirname "$file" "/" "" 22294642e01fSmrg dir="$func_dirname_result" 2230475c125cSmrg dir="$dir$objdir" 22314642e01fSmrg 22324642e01fSmrg if test -n "$relink_command"; then 22334642e01fSmrg # Determine the prefix the user has applied to our future dir. 22346747b715Smrg inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 22354642e01fSmrg 22364642e01fSmrg # Don't allow the user to place us outside of our expected 22374642e01fSmrg # location b/c this prevents finding dependent libraries that 22384642e01fSmrg # are installed to the same prefix. 22394642e01fSmrg # At present, this check doesn't affect windows .dll's that 22404642e01fSmrg # are installed into $libdir/../bin (currently, that works fine) 22414642e01fSmrg # but it's something to keep an eye on. 22424642e01fSmrg test "$inst_prefix_dir" = "$destdir" && \ 22434642e01fSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 22444642e01fSmrg 22454642e01fSmrg if test -n "$inst_prefix_dir"; then 22464642e01fSmrg # Stick the inst_prefix_dir data into the link command. 22476747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 22484642e01fSmrg else 22496747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 22504642e01fSmrg fi 22514642e01fSmrg 22524642e01fSmrg func_warning "relinking \`$file'" 22534642e01fSmrg func_show_eval "$relink_command" \ 22544642e01fSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 22554642e01fSmrg fi 22564642e01fSmrg 22574642e01fSmrg # See the names of the shared library. 22584642e01fSmrg set dummy $library_names; shift 22594642e01fSmrg if test -n "$1"; then 22604642e01fSmrg realname="$1" 22614642e01fSmrg shift 22624642e01fSmrg 22634642e01fSmrg srcname="$realname" 22644642e01fSmrg test -n "$relink_command" && srcname="$realname"T 22654642e01fSmrg 22664642e01fSmrg # Install the shared library and build the symlinks. 22676747b715Smrg func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 22684642e01fSmrg 'exit $?' 22694642e01fSmrg tstripme="$stripme" 22704642e01fSmrg case $host_os in 22714642e01fSmrg cygwin* | mingw* | pw32* | cegcc*) 22724642e01fSmrg case $realname in 22734642e01fSmrg *.dll.a) 22744642e01fSmrg tstripme="" 22754642e01fSmrg ;; 22764642e01fSmrg esac 227705b261ecSmrg ;; 227805b261ecSmrg esac 22794642e01fSmrg if test -n "$tstripme" && test -n "$striplib"; then 22804642e01fSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 228105b261ecSmrg fi 22824642e01fSmrg 22834642e01fSmrg if test "$#" -gt 0; then 22844642e01fSmrg # Delete the old symlinks, and create new ones. 22854642e01fSmrg # Try `ln -sf' first, because the `ln' binary might depend on 22864642e01fSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 22874642e01fSmrg # so we also need to try rm && ln -s. 22884642e01fSmrg for linkname 22894642e01fSmrg do 22904642e01fSmrg test "$linkname" != "$realname" \ 22914642e01fSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 229205b261ecSmrg done 229305b261ecSmrg fi 229405b261ecSmrg 22954642e01fSmrg # Do each command in the postinstall commands. 22964642e01fSmrg lib="$destdir/$realname" 22974642e01fSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 229805b261ecSmrg fi 229905b261ecSmrg 23004642e01fSmrg # Install the pseudo-library for information purposes. 23014642e01fSmrg func_basename "$file" 23024642e01fSmrg name="$func_basename_result" 23034642e01fSmrg instname="$dir/$name"i 23044642e01fSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 230505b261ecSmrg 23064642e01fSmrg # Maybe install the static library, too. 2307475c125cSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 23084642e01fSmrg ;; 230905b261ecSmrg 23104642e01fSmrg *.lo) 23114642e01fSmrg # Install (i.e. copy) a libtool object. 231205b261ecSmrg 23134642e01fSmrg # Figure out destination file name, if it wasn't already specified. 23144642e01fSmrg if test -n "$destname"; then 23154642e01fSmrg destfile="$destdir/$destname" 23164642e01fSmrg else 23174642e01fSmrg func_basename "$file" 23184642e01fSmrg destfile="$func_basename_result" 23194642e01fSmrg destfile="$destdir/$destfile" 23204642e01fSmrg fi 23214642e01fSmrg 23224642e01fSmrg # Deduce the name of the destination old-style object file. 23234642e01fSmrg case $destfile in 23244642e01fSmrg *.lo) 23254642e01fSmrg func_lo2o "$destfile" 23264642e01fSmrg staticdest=$func_lo2o_result 23274642e01fSmrg ;; 23284642e01fSmrg *.$objext) 23294642e01fSmrg staticdest="$destfile" 23304642e01fSmrg destfile= 23314642e01fSmrg ;; 23324642e01fSmrg *) 23334642e01fSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 23344642e01fSmrg ;; 233505b261ecSmrg esac 233605b261ecSmrg 23374642e01fSmrg # Install the libtool object if requested. 23384642e01fSmrg test -n "$destfile" && \ 23394642e01fSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 23404642e01fSmrg 23414642e01fSmrg # Install the old object if enabled. 23424642e01fSmrg if test "$build_old_libs" = yes; then 23434642e01fSmrg # Deduce the name of the old-style object file. 23444642e01fSmrg func_lo2o "$file" 23454642e01fSmrg staticobj=$func_lo2o_result 23464642e01fSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 234705b261ecSmrg fi 23484642e01fSmrg exit $EXIT_SUCCESS 23494642e01fSmrg ;; 235005b261ecSmrg 23514642e01fSmrg *) 23524642e01fSmrg # Figure out destination file name, if it wasn't already specified. 23534642e01fSmrg if test -n "$destname"; then 23544642e01fSmrg destfile="$destdir/$destname" 23554642e01fSmrg else 23564642e01fSmrg func_basename "$file" 23574642e01fSmrg destfile="$func_basename_result" 23584642e01fSmrg destfile="$destdir/$destfile" 23594642e01fSmrg fi 236005b261ecSmrg 23614642e01fSmrg # If the file is missing, and there is a .exe on the end, strip it 23624642e01fSmrg # because it is most likely a libtool script we actually want to 23634642e01fSmrg # install 23644642e01fSmrg stripped_ext="" 23654642e01fSmrg case $file in 23664642e01fSmrg *.exe) 23674642e01fSmrg if test ! -f "$file"; then 23684642e01fSmrg func_stripname '' '.exe' "$file" 23694642e01fSmrg file=$func_stripname_result 23704642e01fSmrg stripped_ext=".exe" 23714642e01fSmrg fi 23724642e01fSmrg ;; 23734642e01fSmrg esac 237405b261ecSmrg 23754642e01fSmrg # Do a test to see if this is really a libtool program. 23764642e01fSmrg case $host in 23774642e01fSmrg *cygwin* | *mingw*) 23784642e01fSmrg if func_ltwrapper_executable_p "$file"; then 23794642e01fSmrg func_ltwrapper_scriptname "$file" 23804642e01fSmrg wrapper=$func_ltwrapper_scriptname_result 23814642e01fSmrg else 23824642e01fSmrg func_stripname '' '.exe' "$file" 23834642e01fSmrg wrapper=$func_stripname_result 23844642e01fSmrg fi 23854642e01fSmrg ;; 23864642e01fSmrg *) 23874642e01fSmrg wrapper=$file 23884642e01fSmrg ;; 23894642e01fSmrg esac 23904642e01fSmrg if func_ltwrapper_script_p "$wrapper"; then 23914642e01fSmrg notinst_deplibs= 23924642e01fSmrg relink_command= 239305b261ecSmrg 23944642e01fSmrg func_source "$wrapper" 23954642e01fSmrg 23964642e01fSmrg # Check the variables that should have been set. 23974642e01fSmrg test -z "$generated_by_libtool_version" && \ 23984642e01fSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 23994642e01fSmrg 24004642e01fSmrg finalize=yes 24014642e01fSmrg for lib in $notinst_deplibs; do 24024642e01fSmrg # Check to see that each library is installed. 24034642e01fSmrg libdir= 24044642e01fSmrg if test -f "$lib"; then 24054642e01fSmrg func_source "$lib" 24064642e01fSmrg fi 24076747b715Smrg libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 24084642e01fSmrg if test -n "$libdir" && test ! -f "$libfile"; then 24094642e01fSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 24104642e01fSmrg finalize=no 24114642e01fSmrg fi 24124642e01fSmrg done 24134642e01fSmrg 24144642e01fSmrg relink_command= 24154642e01fSmrg func_source "$wrapper" 24164642e01fSmrg 24174642e01fSmrg outputname= 24184642e01fSmrg if test "$fast_install" = no && test -n "$relink_command"; then 24194642e01fSmrg $opt_dry_run || { 24204642e01fSmrg if test "$finalize" = yes; then 24214642e01fSmrg tmpdir=`func_mktempdir` 24224642e01fSmrg func_basename "$file$stripped_ext" 24234642e01fSmrg file="$func_basename_result" 24244642e01fSmrg outputname="$tmpdir/$file" 24254642e01fSmrg # Replace the output file specification. 24266747b715Smrg relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 24274642e01fSmrg 24284642e01fSmrg $opt_silent || { 24294642e01fSmrg func_quote_for_expand "$relink_command" 24304642e01fSmrg eval "func_echo $func_quote_for_expand_result" 24314642e01fSmrg } 24324642e01fSmrg if eval "$relink_command"; then : 24334642e01fSmrg else 24344642e01fSmrg func_error "error: relink \`$file' with the above command before installing it" 24354642e01fSmrg $opt_dry_run || ${RM}r "$tmpdir" 24364642e01fSmrg continue 24374642e01fSmrg fi 24384642e01fSmrg file="$outputname" 24394642e01fSmrg else 24404642e01fSmrg func_warning "cannot relink \`$file'" 24414642e01fSmrg fi 24424642e01fSmrg } 244305b261ecSmrg else 24444642e01fSmrg # Install the binary that we compiled earlier. 24456747b715Smrg file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 244605b261ecSmrg fi 24474642e01fSmrg fi 244805b261ecSmrg 24494642e01fSmrg # remove .exe since cygwin /usr/bin/install will append another 24504642e01fSmrg # one anyway 24514642e01fSmrg case $install_prog,$host in 24524642e01fSmrg */usr/bin/install*,*cygwin*) 24534642e01fSmrg case $file:$destfile in 24544642e01fSmrg *.exe:*.exe) 24554642e01fSmrg # this is ok 24564642e01fSmrg ;; 24574642e01fSmrg *.exe:*) 24584642e01fSmrg destfile=$destfile.exe 24594642e01fSmrg ;; 24604642e01fSmrg *:*.exe) 24614642e01fSmrg func_stripname '' '.exe' "$destfile" 24624642e01fSmrg destfile=$func_stripname_result 24634642e01fSmrg ;; 24644642e01fSmrg esac 246505b261ecSmrg ;; 246605b261ecSmrg esac 24674642e01fSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 24684642e01fSmrg $opt_dry_run || if test -n "$outputname"; then 24694642e01fSmrg ${RM}r "$tmpdir" 24704642e01fSmrg fi 24714642e01fSmrg ;; 24724642e01fSmrg esac 24734642e01fSmrg done 247405b261ecSmrg 24754642e01fSmrg for file in $staticlibs; do 24764642e01fSmrg func_basename "$file" 24774642e01fSmrg name="$func_basename_result" 24784642e01fSmrg 24794642e01fSmrg # Set up the ranlib parameters. 24804642e01fSmrg oldlib="$destdir/$name" 24814642e01fSmrg 24824642e01fSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 24834642e01fSmrg 24844642e01fSmrg if test -n "$stripme" && test -n "$old_striplib"; then 24854642e01fSmrg func_show_eval "$old_striplib $oldlib" 'exit $?' 24864642e01fSmrg fi 24874642e01fSmrg 24884642e01fSmrg # Do each command in the postinstall commands. 24894642e01fSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 24904642e01fSmrg done 24914642e01fSmrg 24924642e01fSmrg test -n "$future_libdirs" && \ 24934642e01fSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 24944642e01fSmrg 24954642e01fSmrg if test -n "$current_libdirs"; then 24964642e01fSmrg # Maybe just do a dry run. 24974642e01fSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 24984642e01fSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 24994642e01fSmrg else 25004642e01fSmrg exit $EXIT_SUCCESS 25014642e01fSmrg fi 25024642e01fSmrg} 25034642e01fSmrg 2504475c125cSmrgtest "$mode" = install && func_mode_install ${1+"$@"} 25054642e01fSmrg 25064642e01fSmrg 25074642e01fSmrg# func_generate_dlsyms outputname originator pic_p 25084642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 25094642e01fSmrg# a dlpreopen symbol table. 25104642e01fSmrgfunc_generate_dlsyms () 25114642e01fSmrg{ 25124642e01fSmrg $opt_debug 25134642e01fSmrg my_outputname="$1" 25144642e01fSmrg my_originator="$2" 25154642e01fSmrg my_pic_p="${3-no}" 25164642e01fSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 25174642e01fSmrg my_dlsyms= 25184642e01fSmrg 25194642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 25204642e01fSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 25214642e01fSmrg my_dlsyms="${my_outputname}S.c" 25224642e01fSmrg else 25234642e01fSmrg func_error "not configured to extract global symbols from dlpreopened files" 25244642e01fSmrg fi 25254642e01fSmrg fi 25264642e01fSmrg 25274642e01fSmrg if test -n "$my_dlsyms"; then 25284642e01fSmrg case $my_dlsyms in 25294642e01fSmrg "") ;; 25304642e01fSmrg *.c) 25314642e01fSmrg # Discover the nlist of each of the dlfiles. 25324642e01fSmrg nlist="$output_objdir/${my_outputname}.nm" 25334642e01fSmrg 25344642e01fSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 25354642e01fSmrg 25364642e01fSmrg # Parse the name list into a source file. 25374642e01fSmrg func_verbose "creating $output_objdir/$my_dlsyms" 25384642e01fSmrg 25394642e01fSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 25404642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 25414642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 25424642e01fSmrg 25434642e01fSmrg#ifdef __cplusplus 25444642e01fSmrgextern \"C\" { 25454642e01fSmrg#endif 25464642e01fSmrg 25476747b715Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 25486747b715Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 25496747b715Smrg#endif 25506747b715Smrg 25514642e01fSmrg/* External symbol declarations for the compiler. */\ 25524642e01fSmrg" 25534642e01fSmrg 25544642e01fSmrg if test "$dlself" = yes; then 25554642e01fSmrg func_verbose "generating symbol list for \`$output'" 25564642e01fSmrg 25574642e01fSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 25584642e01fSmrg 25594642e01fSmrg # Add our own program objects to the symbol list. 25606747b715Smrg progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 25614642e01fSmrg for progfile in $progfiles; do 2562475c125cSmrg func_verbose "extracting global C symbols from \`$progfile'" 2563475c125cSmrg $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 25644642e01fSmrg done 25654642e01fSmrg 25664642e01fSmrg if test -n "$exclude_expsyms"; then 25674642e01fSmrg $opt_dry_run || { 25684642e01fSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 25694642e01fSmrg eval '$MV "$nlist"T "$nlist"' 25704642e01fSmrg } 257105b261ecSmrg fi 25724642e01fSmrg 25734642e01fSmrg if test -n "$export_symbols_regex"; then 25744642e01fSmrg $opt_dry_run || { 25754642e01fSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 25764642e01fSmrg eval '$MV "$nlist"T "$nlist"' 25774642e01fSmrg } 25784642e01fSmrg fi 25794642e01fSmrg 25804642e01fSmrg # Prepare the list of exported symbols 25814642e01fSmrg if test -z "$export_symbols"; then 25824642e01fSmrg export_symbols="$output_objdir/$outputname.exp" 25834642e01fSmrg $opt_dry_run || { 25844642e01fSmrg $RM $export_symbols 25854642e01fSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 25864642e01fSmrg case $host in 25874642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 25884642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 25894642e01fSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 25904642e01fSmrg ;; 25914642e01fSmrg esac 25924642e01fSmrg } 259305b261ecSmrg else 25944642e01fSmrg $opt_dry_run || { 25954642e01fSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 25964642e01fSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 25974642e01fSmrg eval '$MV "$nlist"T "$nlist"' 25984642e01fSmrg case $host in 25996747b715Smrg *cygwin* | *mingw* | *cegcc* ) 26004642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 26014642e01fSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 26024642e01fSmrg ;; 26034642e01fSmrg esac 26044642e01fSmrg } 260505b261ecSmrg fi 26064642e01fSmrg fi 260705b261ecSmrg 26084642e01fSmrg for dlprefile in $dlprefiles; do 26094642e01fSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 26104642e01fSmrg func_basename "$dlprefile" 26114642e01fSmrg name="$func_basename_result" 2612475c125cSmrg $opt_dry_run || { 2613475c125cSmrg eval '$ECHO ": $name " >> "$nlist"' 2614475c125cSmrg eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 2615475c125cSmrg } 26164642e01fSmrg done 26174642e01fSmrg 26184642e01fSmrg $opt_dry_run || { 26194642e01fSmrg # Make sure we have at least an empty file. 26204642e01fSmrg test -f "$nlist" || : > "$nlist" 26214642e01fSmrg 26224642e01fSmrg if test -n "$exclude_expsyms"; then 26234642e01fSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 26244642e01fSmrg $MV "$nlist"T "$nlist" 262505b261ecSmrg fi 26264642e01fSmrg 26274642e01fSmrg # Try sorting and uniquifying the output. 26284642e01fSmrg if $GREP -v "^: " < "$nlist" | 26294642e01fSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 26304642e01fSmrg sort -k 3 26314642e01fSmrg else 26324642e01fSmrg sort +2 26334642e01fSmrg fi | 26344642e01fSmrg uniq > "$nlist"S; then 26354642e01fSmrg : 263605b261ecSmrg else 26374642e01fSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 263805b261ecSmrg fi 263905b261ecSmrg 26404642e01fSmrg if test -f "$nlist"S; then 26414642e01fSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 264205b261ecSmrg else 26436747b715Smrg echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 264405b261ecSmrg fi 264505b261ecSmrg 26466747b715Smrg echo >> "$output_objdir/$my_dlsyms" "\ 264705b261ecSmrg 26484642e01fSmrg/* The mapping between symbol names and symbols. */ 26494642e01fSmrgtypedef struct { 26504642e01fSmrg const char *name; 26514642e01fSmrg void *address; 26524642e01fSmrg} lt_dlsymlist; 2653475c125cSmrg" 2654475c125cSmrg case $host in 2655475c125cSmrg *cygwin* | *mingw* | *cegcc* ) 2656475c125cSmrg echo >> "$output_objdir/$my_dlsyms" "\ 2657475c125cSmrg/* DATA imports from DLLs on WIN32 con't be const, because 2658475c125cSmrg runtime relocations are performed -- see ld's documentation 2659475c125cSmrg on pseudo-relocs. */" 2660475c125cSmrg lt_dlsym_const= ;; 2661475c125cSmrg *osf5*) 2662475c125cSmrg echo >> "$output_objdir/$my_dlsyms" "\ 2663475c125cSmrg/* This system does not cope well with relocations in const data */" 2664475c125cSmrg lt_dlsym_const= ;; 2665475c125cSmrg *) 2666475c125cSmrg lt_dlsym_const=const ;; 2667475c125cSmrg esac 2668475c125cSmrg 2669475c125cSmrg echo >> "$output_objdir/$my_dlsyms" "\ 2670475c125cSmrgextern $lt_dlsym_const lt_dlsymlist 26714642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 2672475c125cSmrg$lt_dlsym_const lt_dlsymlist 26734642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 26744642e01fSmrg{\ 26754642e01fSmrg { \"$my_originator\", (void *) 0 }," 267605b261ecSmrg 26774642e01fSmrg case $need_lib_prefix in 26784642e01fSmrg no) 26794642e01fSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 26804642e01fSmrg ;; 26814642e01fSmrg *) 26824642e01fSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 26834642e01fSmrg ;; 26844642e01fSmrg esac 26856747b715Smrg echo >> "$output_objdir/$my_dlsyms" "\ 26864642e01fSmrg {0, (void *) 0} 26874642e01fSmrg}; 268805b261ecSmrg 26894642e01fSmrg/* This works around a problem in FreeBSD linker */ 26904642e01fSmrg#ifdef FREEBSD_WORKAROUND 26914642e01fSmrgstatic const void *lt_preloaded_setup() { 26924642e01fSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 26934642e01fSmrg} 26944642e01fSmrg#endif 26954642e01fSmrg 26964642e01fSmrg#ifdef __cplusplus 26974642e01fSmrg} 26984642e01fSmrg#endif\ 26994642e01fSmrg" 27004642e01fSmrg } # !$opt_dry_run 27014642e01fSmrg 27024642e01fSmrg pic_flag_for_symtable= 27034642e01fSmrg case "$compile_command " in 27044642e01fSmrg *" -static "*) ;; 27054642e01fSmrg *) 27064642e01fSmrg case $host in 27074642e01fSmrg # compiling the symbol table file with pic_flag works around 27084642e01fSmrg # a FreeBSD bug that causes programs to crash when -lm is 27094642e01fSmrg # linked before any other PIC object. But we must not use 27104642e01fSmrg # pic_flag when linking with -static. The problem exists in 27114642e01fSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 27124642e01fSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 27134642e01fSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 27144642e01fSmrg *-*-hpux*) 27154642e01fSmrg pic_flag_for_symtable=" $pic_flag" ;; 27164642e01fSmrg *) 27174642e01fSmrg if test "X$my_pic_p" != Xno; then 27184642e01fSmrg pic_flag_for_symtable=" $pic_flag" 271905b261ecSmrg fi 27204642e01fSmrg ;; 27214642e01fSmrg esac 27224642e01fSmrg ;; 27234642e01fSmrg esac 27244642e01fSmrg symtab_cflags= 27254642e01fSmrg for arg in $LTCFLAGS; do 27264642e01fSmrg case $arg in 27274642e01fSmrg -pie | -fpie | -fPIE) ;; 2728475c125cSmrg *) symtab_cflags="$symtab_cflags $arg" ;; 27294642e01fSmrg esac 27304642e01fSmrg done 273105b261ecSmrg 27324642e01fSmrg # Now compile the dynamic symbol file. 27334642e01fSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 273405b261ecSmrg 27354642e01fSmrg # Clean up the generated files. 27364642e01fSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 273705b261ecSmrg 27384642e01fSmrg # Transform the symbol file into the correct name. 27394642e01fSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 27404642e01fSmrg case $host in 27414642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 27424642e01fSmrg if test -f "$output_objdir/$my_outputname.def"; then 27436747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 27446747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 27454642e01fSmrg else 27466747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 27476747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 274805b261ecSmrg fi 27494642e01fSmrg ;; 27504642e01fSmrg *) 27516747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 27526747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 27534642e01fSmrg ;; 27544642e01fSmrg esac 27554642e01fSmrg ;; 27564642e01fSmrg *) 27574642e01fSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 27584642e01fSmrg ;; 27594642e01fSmrg esac 27604642e01fSmrg else 27614642e01fSmrg # We keep going just in case the user didn't refer to 27624642e01fSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 27634642e01fSmrg # really was required. 276405b261ecSmrg 27654642e01fSmrg # Nullify the symbol file. 27666747b715Smrg compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 27676747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 27684642e01fSmrg fi 27694642e01fSmrg} 277005b261ecSmrg 27714642e01fSmrg# func_win32_libid arg 27724642e01fSmrg# return the library type of file 'arg' 27734642e01fSmrg# 27744642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs 27754642e01fSmrg# Has to be a shell function in order to 'eat' the argument 27764642e01fSmrg# that is supplied when $file_magic_command is called. 27776747b715Smrg# Despite the name, also deal with 64 bit binaries. 27784642e01fSmrgfunc_win32_libid () 27794642e01fSmrg{ 27804642e01fSmrg $opt_debug 27814642e01fSmrg win32_libid_type="unknown" 27824642e01fSmrg win32_fileres=`file -L $1 2>/dev/null` 27834642e01fSmrg case $win32_fileres in 27844642e01fSmrg *ar\ archive\ import\ library*) # definitely import 27854642e01fSmrg win32_libid_type="x86 archive import" 27864642e01fSmrg ;; 27874642e01fSmrg *ar\ archive*) # could be an import, or static 27886747b715Smrg # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 27894642e01fSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 27906747b715Smrg $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 2791475c125cSmrg win32_nmres=`eval $NM -f posix -A $1 | 27924642e01fSmrg $SED -n -e ' 27934642e01fSmrg 1,100{ 27944642e01fSmrg / I /{ 27954642e01fSmrg s,.*,import, 27964642e01fSmrg p 27974642e01fSmrg q 27984642e01fSmrg } 27994642e01fSmrg }'` 28004642e01fSmrg case $win32_nmres in 28014642e01fSmrg import*) win32_libid_type="x86 archive import";; 28024642e01fSmrg *) win32_libid_type="x86 archive static";; 28034642e01fSmrg esac 28044642e01fSmrg fi 28054642e01fSmrg ;; 28064642e01fSmrg *DLL*) 28074642e01fSmrg win32_libid_type="x86 DLL" 28084642e01fSmrg ;; 28094642e01fSmrg *executable*) # but shell scripts are "executable" too... 28104642e01fSmrg case $win32_fileres in 28114642e01fSmrg *MS\ Windows\ PE\ Intel*) 28124642e01fSmrg win32_libid_type="x86 DLL" 28134642e01fSmrg ;; 28144642e01fSmrg esac 28154642e01fSmrg ;; 28164642e01fSmrg esac 28174642e01fSmrg $ECHO "$win32_libid_type" 28184642e01fSmrg} 281905b261ecSmrg 282005b261ecSmrg 282105b261ecSmrg 28224642e01fSmrg# func_extract_an_archive dir oldlib 28234642e01fSmrgfunc_extract_an_archive () 28244642e01fSmrg{ 28254642e01fSmrg $opt_debug 28264642e01fSmrg f_ex_an_ar_dir="$1"; shift 28274642e01fSmrg f_ex_an_ar_oldlib="$1" 28286747b715Smrg if test "$lock_old_archive_extraction" = yes; then 28296747b715Smrg lockfile=$f_ex_an_ar_oldlib.lock 28306747b715Smrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 28316747b715Smrg func_echo "Waiting for $lockfile to be removed" 28326747b715Smrg sleep 2 28336747b715Smrg done 28346747b715Smrg fi 28356747b715Smrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 28366747b715Smrg 'stat=$?; rm -f "$lockfile"; exit $stat' 28376747b715Smrg if test "$lock_old_archive_extraction" = yes; then 28386747b715Smrg $opt_dry_run || rm -f "$lockfile" 28396747b715Smrg fi 28404642e01fSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 28414642e01fSmrg : 28424642e01fSmrg else 28434642e01fSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 28444642e01fSmrg fi 28454642e01fSmrg} 284605b261ecSmrg 284705b261ecSmrg 28484642e01fSmrg# func_extract_archives gentop oldlib ... 28494642e01fSmrgfunc_extract_archives () 28504642e01fSmrg{ 28514642e01fSmrg $opt_debug 28524642e01fSmrg my_gentop="$1"; shift 28534642e01fSmrg my_oldlibs=${1+"$@"} 28544642e01fSmrg my_oldobjs="" 28554642e01fSmrg my_xlib="" 28564642e01fSmrg my_xabs="" 28574642e01fSmrg my_xdir="" 285805b261ecSmrg 28594642e01fSmrg for my_xlib in $my_oldlibs; do 28604642e01fSmrg # Extract the objects. 28614642e01fSmrg case $my_xlib in 28624642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 28634642e01fSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 28644642e01fSmrg esac 28654642e01fSmrg func_basename "$my_xlib" 28664642e01fSmrg my_xlib="$func_basename_result" 28674642e01fSmrg my_xlib_u=$my_xlib 28684642e01fSmrg while :; do 28694642e01fSmrg case " $extracted_archives " in 28704642e01fSmrg *" $my_xlib_u "*) 28714642e01fSmrg func_arith $extracted_serial + 1 28724642e01fSmrg extracted_serial=$func_arith_result 28734642e01fSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 28744642e01fSmrg *) break ;; 28754642e01fSmrg esac 28764642e01fSmrg done 28774642e01fSmrg extracted_archives="$extracted_archives $my_xlib_u" 28784642e01fSmrg my_xdir="$my_gentop/$my_xlib_u" 287905b261ecSmrg 28804642e01fSmrg func_mkdir_p "$my_xdir" 288105b261ecSmrg 28824642e01fSmrg case $host in 28834642e01fSmrg *-darwin*) 28844642e01fSmrg func_verbose "Extracting $my_xabs" 28854642e01fSmrg # Do not bother doing anything if just a dry run 28864642e01fSmrg $opt_dry_run || { 28874642e01fSmrg darwin_orig_dir=`pwd` 28884642e01fSmrg cd $my_xdir || exit $? 28894642e01fSmrg darwin_archive=$my_xabs 28904642e01fSmrg darwin_curdir=`pwd` 28914642e01fSmrg darwin_base_archive=`basename "$darwin_archive"` 28924642e01fSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 28934642e01fSmrg if test -n "$darwin_arches"; then 28944642e01fSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 28954642e01fSmrg darwin_arch= 28964642e01fSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 28974642e01fSmrg for darwin_arch in $darwin_arches ; do 28984642e01fSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 28994642e01fSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 29004642e01fSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 29014642e01fSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 29024642e01fSmrg cd "$darwin_curdir" 29034642e01fSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 29044642e01fSmrg done # $darwin_arches 29054642e01fSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 29064642e01fSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 29074642e01fSmrg darwin_file= 29084642e01fSmrg darwin_files= 29094642e01fSmrg for darwin_file in $darwin_filelist; do 29106747b715Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 29114642e01fSmrg $LIPO -create -output "$darwin_file" $darwin_files 29124642e01fSmrg done # $darwin_filelist 29134642e01fSmrg $RM -rf unfat-$$ 29144642e01fSmrg cd "$darwin_orig_dir" 291505b261ecSmrg else 29164642e01fSmrg cd $darwin_orig_dir 29174642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 29184642e01fSmrg fi # $darwin_arches 29194642e01fSmrg } # !$opt_dry_run 29204642e01fSmrg ;; 29214642e01fSmrg *) 29224642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 29234642e01fSmrg ;; 29244642e01fSmrg esac 29256747b715Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 29264642e01fSmrg done 292705b261ecSmrg 29284642e01fSmrg func_extract_archives_result="$my_oldobjs" 29294642e01fSmrg} 293005b261ecSmrg 293105b261ecSmrg 29326747b715Smrg# func_emit_wrapper [arg=no] 29336747b715Smrg# 29346747b715Smrg# Emit a libtool wrapper script on stdout. 29356747b715Smrg# Don't directly open a file because we may want to 29366747b715Smrg# incorporate the script contents within a cygwin/mingw 29376747b715Smrg# wrapper executable. Must ONLY be called from within 29386747b715Smrg# func_mode_link because it depends on a number of variables 29396747b715Smrg# set therein. 29404642e01fSmrg# 29416747b715Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29426747b715Smrg# variable will take. If 'yes', then the emitted script 29436747b715Smrg# will assume that the directory in which it is stored is 29446747b715Smrg# the $objdir directory. This is a cygwin/mingw-specific 29456747b715Smrg# behavior. 29466747b715Smrgfunc_emit_wrapper () 29474642e01fSmrg{ 29486747b715Smrg func_emit_wrapper_arg1=${1-no} 294905b261ecSmrg 29504642e01fSmrg $ECHO "\ 29514642e01fSmrg#! $SHELL 295205b261ecSmrg 29534642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname 29544642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 29554642e01fSmrg# 29564642e01fSmrg# The $output program cannot be directly executed until all the libtool 29574642e01fSmrg# libraries that it depends on are installed. 29584642e01fSmrg# 29594642e01fSmrg# This wrapper script should never be moved out of the build directory. 29604642e01fSmrg# If it is, it will not operate correctly. 296105b261ecSmrg 29624642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 29634642e01fSmrg# metacharacters that are still active within double-quoted strings. 29644642e01fSmrgsed_quote_subst='$sed_quote_subst' 296505b261ecSmrg 29664642e01fSmrg# Be Bourne compatible 29674642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 29684642e01fSmrg emulate sh 29694642e01fSmrg NULLCMD=: 29704642e01fSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 29714642e01fSmrg # is contrary to our usage. Disable this feature. 29724642e01fSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 29734642e01fSmrg setopt NO_GLOB_SUBST 29744642e01fSmrgelse 29754642e01fSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 29764642e01fSmrgfi 29774642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 29784642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh 297905b261ecSmrg 29804642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 29814642e01fSmrg# if CDPATH is set. 29824642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 298305b261ecSmrg 29844642e01fSmrgrelink_command=\"$relink_command\" 298505b261ecSmrg 29864642e01fSmrg# This environment variable determines our operation mode. 29874642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 29884642e01fSmrg # install mode needs the following variables: 29894642e01fSmrg generated_by_libtool_version='$macro_version' 29904642e01fSmrg notinst_deplibs='$notinst_deplibs' 29914642e01fSmrgelse 29924642e01fSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 29934642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 29946747b715Smrg file=\"\$0\"" 29956747b715Smrg 29966747b715Smrg qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 29976747b715Smrg $ECHO "\ 29986747b715Smrg 29996747b715Smrg# A function that is used when there is no print builtin or printf. 30006747b715Smrgfunc_fallback_echo () 30016747b715Smrg{ 30026747b715Smrg eval 'cat <<_LTECHO_EOF 30036747b715Smrg\$1 30046747b715Smrg_LTECHO_EOF' 30056747b715Smrg} 30066747b715Smrg ECHO=\"$qECHO\" 30076747b715Smrg fi 30086747b715Smrg 30096747b715Smrg# Very basic option parsing. These options are (a) specific to 30106747b715Smrg# the libtool wrapper, (b) are identical between the wrapper 30116747b715Smrg# /script/ and the wrapper /executable/ which is used only on 30126747b715Smrg# windows platforms, and (c) all begin with the string "--lt-" 30136747b715Smrg# (application programs are unlikely to have options which match 30146747b715Smrg# this pattern). 30156747b715Smrg# 30166747b715Smrg# There are only two supported options: --lt-debug and 30176747b715Smrg# --lt-dump-script. There is, deliberately, no --lt-help. 30186747b715Smrg# 30196747b715Smrg# The first argument to this parsing function should be the 30206747b715Smrg# script's $0 value, followed by "$@". 30216747b715Smrglt_option_debug= 30226747b715Smrgfunc_parse_lt_options () 30236747b715Smrg{ 30246747b715Smrg lt_script_arg0=\$0 30256747b715Smrg shift 30266747b715Smrg for lt_opt 30276747b715Smrg do 30286747b715Smrg case \"\$lt_opt\" in 30296747b715Smrg --lt-debug) lt_option_debug=1 ;; 30306747b715Smrg --lt-dump-script) 30316747b715Smrg lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 30326747b715Smrg test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 30336747b715Smrg lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 30346747b715Smrg cat \"\$lt_dump_D/\$lt_dump_F\" 30356747b715Smrg exit 0 30366747b715Smrg ;; 30376747b715Smrg --lt-*) 30386747b715Smrg \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 30396747b715Smrg exit 1 30406747b715Smrg ;; 30416747b715Smrg esac 30426747b715Smrg done 30436747b715Smrg 30446747b715Smrg # Print the debug banner immediately: 30456747b715Smrg if test -n \"\$lt_option_debug\"; then 30466747b715Smrg echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 30476747b715Smrg fi 30486747b715Smrg} 30496747b715Smrg 30506747b715Smrg# Used when --lt-debug. Prints its arguments to stdout 30516747b715Smrg# (redirection is the responsibility of the caller) 30526747b715Smrgfunc_lt_dump_args () 30536747b715Smrg{ 30546747b715Smrg lt_dump_args_N=1; 30556747b715Smrg for lt_arg 30566747b715Smrg do 30576747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 30586747b715Smrg lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 30596747b715Smrg done 30606747b715Smrg} 30616747b715Smrg 30626747b715Smrg# Core function for launching the target application 30636747b715Smrgfunc_exec_program_core () 30646747b715Smrg{ 30654642e01fSmrg" 30666747b715Smrg case $host in 30676747b715Smrg # Backslashes separate directories on plain windows 30686747b715Smrg *-*-mingw | *-*-os2* | *-cegcc*) 30696747b715Smrg $ECHO "\ 30706747b715Smrg if test -n \"\$lt_option_debug\"; then 30716747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 30726747b715Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 30736747b715Smrg fi 30746747b715Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 30756747b715Smrg" 30766747b715Smrg ;; 30776747b715Smrg 30786747b715Smrg *) 30796747b715Smrg $ECHO "\ 30806747b715Smrg if test -n \"\$lt_option_debug\"; then 30816747b715Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 30826747b715Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 30836747b715Smrg fi 30846747b715Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 30856747b715Smrg" 30866747b715Smrg ;; 30876747b715Smrg esac 30886747b715Smrg $ECHO "\ 30896747b715Smrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 30906747b715Smrg exit 1 30916747b715Smrg} 30926747b715Smrg 30936747b715Smrg# A function to encapsulate launching the target application 30946747b715Smrg# Strips options in the --lt-* namespace from \$@ and 30956747b715Smrg# launches target application with the remaining arguments. 30966747b715Smrgfunc_exec_program () 30976747b715Smrg{ 30986747b715Smrg for lt_wr_arg 30996747b715Smrg do 31006747b715Smrg case \$lt_wr_arg in 31016747b715Smrg --lt-*) ;; 31026747b715Smrg *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 31036747b715Smrg esac 31046747b715Smrg shift 31056747b715Smrg done 31066747b715Smrg func_exec_program_core \${1+\"\$@\"} 31076747b715Smrg} 31086747b715Smrg 31096747b715Smrg # Parse options 31106747b715Smrg func_parse_lt_options \"\$0\" \${1+\"\$@\"} 311105b261ecSmrg 31124642e01fSmrg # Find the directory that this script lives in. 31136747b715Smrg thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 31144642e01fSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 311505b261ecSmrg 31164642e01fSmrg # Follow symbolic links until we get to the real thisdir. 31176747b715Smrg file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 31184642e01fSmrg while test -n \"\$file\"; do 31196747b715Smrg destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 312005b261ecSmrg 31214642e01fSmrg # If there was a directory component, then change thisdir. 31224642e01fSmrg if test \"x\$destdir\" != \"x\$file\"; then 31234642e01fSmrg case \"\$destdir\" in 31244642e01fSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 31254642e01fSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 312605b261ecSmrg esac 31274642e01fSmrg fi 312805b261ecSmrg 31296747b715Smrg file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 31306747b715Smrg file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 31314642e01fSmrg done 313205b261ecSmrg 31334642e01fSmrg # Usually 'no', except on cygwin/mingw when embedded into 31344642e01fSmrg # the cwrapper. 31356747b715Smrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 31364642e01fSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 31374642e01fSmrg # special case for '.' 31384642e01fSmrg if test \"\$thisdir\" = \".\"; then 31394642e01fSmrg thisdir=\`pwd\` 31404642e01fSmrg fi 31414642e01fSmrg # remove .libs from thisdir 31424642e01fSmrg case \"\$thisdir\" in 31436747b715Smrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 31444642e01fSmrg $objdir ) thisdir=. ;; 31454642e01fSmrg esac 31464642e01fSmrg fi 31474642e01fSmrg 31484642e01fSmrg # Try to get the absolute directory name. 31494642e01fSmrg absdir=\`cd \"\$thisdir\" && pwd\` 31504642e01fSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 31514642e01fSmrg" 31524642e01fSmrg 31534642e01fSmrg if test "$fast_install" = yes; then 31544642e01fSmrg $ECHO "\ 31554642e01fSmrg program=lt-'$outputname'$exeext 31564642e01fSmrg progdir=\"\$thisdir/$objdir\" 31574642e01fSmrg 31584642e01fSmrg if test ! -f \"\$progdir/\$program\" || 31594642e01fSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 31604642e01fSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 31614642e01fSmrg 31624642e01fSmrg file=\"\$\$-\$program\" 31634642e01fSmrg 31644642e01fSmrg if test ! -d \"\$progdir\"; then 31654642e01fSmrg $MKDIR \"\$progdir\" 31664642e01fSmrg else 31674642e01fSmrg $RM \"\$progdir/\$file\" 31684642e01fSmrg fi" 31694642e01fSmrg 31704642e01fSmrg $ECHO "\ 31714642e01fSmrg 31724642e01fSmrg # relink executable if necessary 31734642e01fSmrg if test -n \"\$relink_command\"; then 31744642e01fSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 31754642e01fSmrg else 31764642e01fSmrg $ECHO \"\$relink_command_output\" >&2 31774642e01fSmrg $RM \"\$progdir/\$file\" 31784642e01fSmrg exit 1 317905b261ecSmrg fi 31804642e01fSmrg fi 318105b261ecSmrg 31824642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 31834642e01fSmrg { $RM \"\$progdir/\$program\"; 31844642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 31854642e01fSmrg $RM \"\$progdir/\$file\" 31864642e01fSmrg fi" 31874642e01fSmrg else 31884642e01fSmrg $ECHO "\ 31894642e01fSmrg program='$outputname' 31904642e01fSmrg progdir=\"\$thisdir/$objdir\" 31914642e01fSmrg" 319205b261ecSmrg fi 319305b261ecSmrg 31944642e01fSmrg $ECHO "\ 319505b261ecSmrg 31964642e01fSmrg if test -f \"\$progdir/\$program\"; then" 319705b261ecSmrg 31984642e01fSmrg # Export our shlibpath_var if we have one. 31994642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 32004642e01fSmrg $ECHO "\ 32014642e01fSmrg # Add our own library path to $shlibpath_var 32024642e01fSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 320305b261ecSmrg 32044642e01fSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 32054642e01fSmrg # The second colon is a workaround for a bug in BeOS R4 sed 32066747b715Smrg $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 32074642e01fSmrg 32084642e01fSmrg export $shlibpath_var 32094642e01fSmrg" 321005b261ecSmrg fi 321105b261ecSmrg 3212475c125cSmrg # fixup the dll searchpath if we need to. 3213475c125cSmrg if test -n "$dllsearchpath"; then 3214475c125cSmrg $ECHO "\ 3215475c125cSmrg # Add the dll search path components to the executable PATH 3216475c125cSmrg PATH=$dllsearchpath:\$PATH 3217475c125cSmrg" 3218475c125cSmrg fi 3219475c125cSmrg 32204642e01fSmrg $ECHO "\ 32214642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 32224642e01fSmrg # Run the actual program with our arguments. 32236747b715Smrg func_exec_program \${1+\"\$@\"} 32244642e01fSmrg fi 32254642e01fSmrg else 32264642e01fSmrg # The program doesn't exist. 32274642e01fSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 32284642e01fSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 32296747b715Smrg \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 32304642e01fSmrg exit 1 32314642e01fSmrg fi 32324642e01fSmrgfi\ 32334642e01fSmrg" 32344642e01fSmrg} 323505b261ecSmrg 323605b261ecSmrg 3237475c125cSmrg# func_to_host_path arg 3238475c125cSmrg# 3239475c125cSmrg# Convert paths to host format when used with build tools. 3240475c125cSmrg# Intended for use with "native" mingw (where libtool itself 3241475c125cSmrg# is running under the msys shell), or in the following cross- 3242475c125cSmrg# build environments: 3243475c125cSmrg# $build $host 3244475c125cSmrg# mingw (msys) mingw [e.g. native] 3245475c125cSmrg# cygwin mingw 3246475c125cSmrg# *nix + wine mingw 3247475c125cSmrg# where wine is equipped with the `winepath' executable. 3248475c125cSmrg# In the native mingw case, the (msys) shell automatically 3249475c125cSmrg# converts paths for any non-msys applications it launches, 3250475c125cSmrg# but that facility isn't available from inside the cwrapper. 3251475c125cSmrg# Similar accommodations are necessary for $host mingw and 3252475c125cSmrg# $build cygwin. Calling this function does no harm for other 3253475c125cSmrg# $host/$build combinations not listed above. 3254475c125cSmrg# 3255475c125cSmrg# ARG is the path (on $build) that should be converted to 3256475c125cSmrg# the proper representation for $host. The result is stored 3257475c125cSmrg# in $func_to_host_path_result. 3258475c125cSmrgfunc_to_host_path () 3259475c125cSmrg{ 3260475c125cSmrg func_to_host_path_result="$1" 3261475c125cSmrg if test -n "$1"; then 3262475c125cSmrg case $host in 3263475c125cSmrg *mingw* ) 3264475c125cSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3265475c125cSmrg case $build in 3266475c125cSmrg *mingw* ) # actually, msys 3267475c125cSmrg # awkward: cmd appends spaces to result 3268475c125cSmrg func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | 3269475c125cSmrg $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 3270475c125cSmrg ;; 3271475c125cSmrg *cygwin* ) 3272475c125cSmrg func_to_host_path_result=`cygpath -w "$1" | 3273475c125cSmrg $SED -e "$lt_sed_naive_backslashify"` 3274475c125cSmrg ;; 3275475c125cSmrg * ) 3276475c125cSmrg # Unfortunately, winepath does not exit with a non-zero 3277475c125cSmrg # error code, so we are forced to check the contents of 3278475c125cSmrg # stdout. On the other hand, if the command is not 3279475c125cSmrg # found, the shell will set an exit code of 127 and print 3280475c125cSmrg # *an error message* to stdout. So we must check for both 3281475c125cSmrg # error code of zero AND non-empty stdout, which explains 3282475c125cSmrg # the odd construction: 3283475c125cSmrg func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 3284475c125cSmrg if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 3285475c125cSmrg func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | 3286475c125cSmrg $SED -e "$lt_sed_naive_backslashify"` 3287475c125cSmrg else 3288475c125cSmrg # Allow warning below. 3289475c125cSmrg func_to_host_path_result= 3290475c125cSmrg fi 3291475c125cSmrg ;; 3292475c125cSmrg esac 3293475c125cSmrg if test -z "$func_to_host_path_result" ; then 3294475c125cSmrg func_error "Could not determine host path corresponding to" 3295475c125cSmrg func_error " \`$1'" 3296475c125cSmrg func_error "Continuing, but uninstalled executables may not work." 3297475c125cSmrg # Fallback: 3298475c125cSmrg func_to_host_path_result="$1" 3299475c125cSmrg fi 3300475c125cSmrg ;; 3301475c125cSmrg esac 3302475c125cSmrg fi 3303475c125cSmrg} 3304475c125cSmrg# end: func_to_host_path 3305475c125cSmrg 3306475c125cSmrg# func_to_host_pathlist arg 3307475c125cSmrg# 3308475c125cSmrg# Convert pathlists to host format when used with build tools. 3309475c125cSmrg# See func_to_host_path(), above. This function supports the 3310475c125cSmrg# following $build/$host combinations (but does no harm for 3311475c125cSmrg# combinations not listed here): 3312475c125cSmrg# $build $host 3313475c125cSmrg# mingw (msys) mingw [e.g. native] 3314475c125cSmrg# cygwin mingw 3315475c125cSmrg# *nix + wine mingw 3316475c125cSmrg# 3317475c125cSmrg# Path separators are also converted from $build format to 3318475c125cSmrg# $host format. If ARG begins or ends with a path separator 3319475c125cSmrg# character, it is preserved (but converted to $host format) 3320475c125cSmrg# on output. 3321475c125cSmrg# 3322475c125cSmrg# ARG is a pathlist (on $build) that should be converted to 3323475c125cSmrg# the proper representation on $host. The result is stored 3324475c125cSmrg# in $func_to_host_pathlist_result. 3325475c125cSmrgfunc_to_host_pathlist () 3326475c125cSmrg{ 3327475c125cSmrg func_to_host_pathlist_result="$1" 3328475c125cSmrg if test -n "$1"; then 3329475c125cSmrg case $host in 3330475c125cSmrg *mingw* ) 3331475c125cSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3332475c125cSmrg # Remove leading and trailing path separator characters from 3333475c125cSmrg # ARG. msys behavior is inconsistent here, cygpath turns them 3334475c125cSmrg # into '.;' and ';.', and winepath ignores them completely. 3335475c125cSmrg func_stripname : : "$1" 3336475c125cSmrg func_to_host_pathlist_tmp1=$func_stripname_result 3337475c125cSmrg case $build in 3338475c125cSmrg *mingw* ) # Actually, msys. 3339475c125cSmrg # Awkward: cmd appends spaces to result. 3340475c125cSmrg func_to_host_pathlist_result=` 3341475c125cSmrg ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | 3342475c125cSmrg $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 3343475c125cSmrg ;; 3344475c125cSmrg *cygwin* ) 3345475c125cSmrg func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | 3346475c125cSmrg $SED -e "$lt_sed_naive_backslashify"` 3347475c125cSmrg ;; 3348475c125cSmrg * ) 3349475c125cSmrg # unfortunately, winepath doesn't convert pathlists 3350475c125cSmrg func_to_host_pathlist_result="" 3351475c125cSmrg func_to_host_pathlist_oldIFS=$IFS 3352475c125cSmrg IFS=: 3353475c125cSmrg for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 3354475c125cSmrg IFS=$func_to_host_pathlist_oldIFS 3355475c125cSmrg if test -n "$func_to_host_pathlist_f" ; then 3356475c125cSmrg func_to_host_path "$func_to_host_pathlist_f" 3357475c125cSmrg if test -n "$func_to_host_path_result" ; then 3358475c125cSmrg if test -z "$func_to_host_pathlist_result" ; then 3359475c125cSmrg func_to_host_pathlist_result="$func_to_host_path_result" 3360475c125cSmrg else 3361475c125cSmrg func_append func_to_host_pathlist_result ";$func_to_host_path_result" 3362475c125cSmrg fi 3363475c125cSmrg fi 3364475c125cSmrg fi 3365475c125cSmrg done 3366475c125cSmrg IFS=$func_to_host_pathlist_oldIFS 3367475c125cSmrg ;; 3368475c125cSmrg esac 3369475c125cSmrg if test -z "$func_to_host_pathlist_result"; then 3370475c125cSmrg func_error "Could not determine the host path(s) corresponding to" 3371475c125cSmrg func_error " \`$1'" 3372475c125cSmrg func_error "Continuing, but uninstalled executables may not work." 3373475c125cSmrg # Fallback. This may break if $1 contains DOS-style drive 3374475c125cSmrg # specifications. The fix is not to complicate the expression 3375475c125cSmrg # below, but for the user to provide a working wine installation 3376475c125cSmrg # with winepath so that path translation in the cross-to-mingw 3377475c125cSmrg # case works properly. 3378475c125cSmrg lt_replace_pathsep_nix_to_dos="s|:|;|g" 3379475c125cSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 3380475c125cSmrg $SED -e "$lt_replace_pathsep_nix_to_dos"` 3381475c125cSmrg fi 3382475c125cSmrg # Now, add the leading and trailing path separators back 3383475c125cSmrg case "$1" in 3384475c125cSmrg :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 3385475c125cSmrg ;; 3386475c125cSmrg esac 3387475c125cSmrg case "$1" in 3388475c125cSmrg *: ) func_append func_to_host_pathlist_result ";" 3389475c125cSmrg ;; 3390475c125cSmrg esac 3391475c125cSmrg ;; 3392475c125cSmrg esac 3393475c125cSmrg fi 3394475c125cSmrg} 3395475c125cSmrg# end: func_to_host_pathlist 3396475c125cSmrg 33974642e01fSmrg# func_emit_cwrapperexe_src 33984642e01fSmrg# emit the source code for a wrapper executable on stdout 33994642e01fSmrg# Must ONLY be called from within func_mode_link because 34004642e01fSmrg# it depends on a number of variable set therein. 34014642e01fSmrgfunc_emit_cwrapperexe_src () 34024642e01fSmrg{ 34034642e01fSmrg cat <<EOF 340405b261ecSmrg 34054642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 34064642e01fSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 340705b261ecSmrg 34084642e01fSmrg The $output program cannot be directly executed until all the libtool 34094642e01fSmrg libraries that it depends on are installed. 341005b261ecSmrg 34114642e01fSmrg This wrapper executable should never be moved out of the build directory. 34124642e01fSmrg If it is, it will not operate correctly. 34134642e01fSmrg*/ 34144642e01fSmrgEOF 34154642e01fSmrg cat <<"EOF" 34166747b715Smrg#ifdef _MSC_VER 34176747b715Smrg# define _CRT_SECURE_NO_DEPRECATE 1 34186747b715Smrg#endif 34194642e01fSmrg#include <stdio.h> 34204642e01fSmrg#include <stdlib.h> 34214642e01fSmrg#ifdef _MSC_VER 34224642e01fSmrg# include <direct.h> 34234642e01fSmrg# include <process.h> 34244642e01fSmrg# include <io.h> 34254642e01fSmrg#else 34264642e01fSmrg# include <unistd.h> 34274642e01fSmrg# include <stdint.h> 34284642e01fSmrg# ifdef __CYGWIN__ 34294642e01fSmrg# include <io.h> 34306747b715Smrg# endif 34316747b715Smrg#endif 34326747b715Smrg#include <malloc.h> 34336747b715Smrg#include <stdarg.h> 34346747b715Smrg#include <assert.h> 34356747b715Smrg#include <string.h> 34366747b715Smrg#include <ctype.h> 34376747b715Smrg#include <errno.h> 34386747b715Smrg#include <fcntl.h> 34396747b715Smrg#include <sys/stat.h> 34406747b715Smrg 34416747b715Smrg/* declarations of non-ANSI functions */ 34426747b715Smrg#if defined(__MINGW32__) 34436747b715Smrg# ifdef __STRICT_ANSI__ 34446747b715Smrgint _putenv (const char *); 34456747b715Smrg# endif 34466747b715Smrg#elif defined(__CYGWIN__) 34476747b715Smrg# ifdef __STRICT_ANSI__ 34484642e01fSmrgchar *realpath (const char *, char *); 34494642e01fSmrgint putenv (char *); 34504642e01fSmrgint setenv (const char *, const char *, int); 34514642e01fSmrg# endif 34526747b715Smrg/* #elif defined (other platforms) ... */ 34536747b715Smrg#endif 34546747b715Smrg 34556747b715Smrg/* portability defines, excluding path handling macros */ 34566747b715Smrg#if defined(_MSC_VER) 34576747b715Smrg# define setmode _setmode 34586747b715Smrg# define stat _stat 34596747b715Smrg# define chmod _chmod 34606747b715Smrg# define getcwd _getcwd 34616747b715Smrg# define putenv _putenv 34626747b715Smrg# define S_IXUSR _S_IEXEC 34636747b715Smrg# ifndef _INTPTR_T_DEFINED 34646747b715Smrg# define _INTPTR_T_DEFINED 34656747b715Smrg# define intptr_t int 34666747b715Smrg# endif 34676747b715Smrg#elif defined(__MINGW32__) 34686747b715Smrg# define setmode _setmode 34696747b715Smrg# define stat _stat 34706747b715Smrg# define chmod _chmod 34716747b715Smrg# define getcwd _getcwd 34726747b715Smrg# define putenv _putenv 34736747b715Smrg#elif defined(__CYGWIN__) 34746747b715Smrg# define HAVE_SETENV 34756747b715Smrg# define FOPEN_WB "wb" 34766747b715Smrg/* #elif defined (other platforms) ... */ 34774642e01fSmrg#endif 347805b261ecSmrg 34794642e01fSmrg#if defined(PATH_MAX) 34804642e01fSmrg# define LT_PATHMAX PATH_MAX 34814642e01fSmrg#elif defined(MAXPATHLEN) 34824642e01fSmrg# define LT_PATHMAX MAXPATHLEN 34834642e01fSmrg#else 34844642e01fSmrg# define LT_PATHMAX 1024 34854642e01fSmrg#endif 348605b261ecSmrg 34874642e01fSmrg#ifndef S_IXOTH 34884642e01fSmrg# define S_IXOTH 0 34894642e01fSmrg#endif 34904642e01fSmrg#ifndef S_IXGRP 34914642e01fSmrg# define S_IXGRP 0 34924642e01fSmrg#endif 349305b261ecSmrg 34946747b715Smrg/* path handling portability macros */ 34954642e01fSmrg#ifndef DIR_SEPARATOR 34964642e01fSmrg# define DIR_SEPARATOR '/' 34974642e01fSmrg# define PATH_SEPARATOR ':' 34984642e01fSmrg#endif 349905b261ecSmrg 35004642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 35014642e01fSmrg defined (__OS2__) 35024642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 35034642e01fSmrg# define FOPEN_WB "wb" 35044642e01fSmrg# ifndef DIR_SEPARATOR_2 35054642e01fSmrg# define DIR_SEPARATOR_2 '\\' 35064642e01fSmrg# endif 35074642e01fSmrg# ifndef PATH_SEPARATOR_2 35084642e01fSmrg# define PATH_SEPARATOR_2 ';' 35094642e01fSmrg# endif 35104642e01fSmrg#endif 351105b261ecSmrg 35124642e01fSmrg#ifndef DIR_SEPARATOR_2 35134642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 35144642e01fSmrg#else /* DIR_SEPARATOR_2 */ 35154642e01fSmrg# define IS_DIR_SEPARATOR(ch) \ 35164642e01fSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 35174642e01fSmrg#endif /* DIR_SEPARATOR_2 */ 351805b261ecSmrg 35194642e01fSmrg#ifndef PATH_SEPARATOR_2 35204642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 35214642e01fSmrg#else /* PATH_SEPARATOR_2 */ 35224642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 35234642e01fSmrg#endif /* PATH_SEPARATOR_2 */ 352405b261ecSmrg 35254642e01fSmrg#ifndef FOPEN_WB 35264642e01fSmrg# define FOPEN_WB "w" 35274642e01fSmrg#endif 35284642e01fSmrg#ifndef _O_BINARY 35294642e01fSmrg# define _O_BINARY 0 35304642e01fSmrg#endif 353105b261ecSmrg 35324642e01fSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 35334642e01fSmrg#define XFREE(stale) do { \ 35344642e01fSmrg if (stale) { free ((void *) stale); stale = 0; } \ 35354642e01fSmrg} while (0) 353605b261ecSmrg 35376747b715Smrg#if defined(LT_DEBUGWRAPPER) 35386747b715Smrgstatic int lt_debug = 1; 35394642e01fSmrg#else 35406747b715Smrgstatic int lt_debug = 0; 35414642e01fSmrg#endif 354205b261ecSmrg 35436747b715Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 354405b261ecSmrg 35454642e01fSmrgvoid *xmalloc (size_t num); 35464642e01fSmrgchar *xstrdup (const char *string); 35474642e01fSmrgconst char *base_name (const char *name); 35484642e01fSmrgchar *find_executable (const char *wrapper); 35494642e01fSmrgchar *chase_symlinks (const char *pathspec); 35504642e01fSmrgint make_executable (const char *path); 35514642e01fSmrgint check_executable (const char *path); 35524642e01fSmrgchar *strendzap (char *str, const char *pat); 35536747b715Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 35546747b715Smrgvoid lt_fatal (const char *file, int line, const char *message, ...); 35556747b715Smrgstatic const char *nonnull (const char *s); 35566747b715Smrgstatic const char *nonempty (const char *s); 35574642e01fSmrgvoid lt_setenv (const char *name, const char *value); 35584642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 35594642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value); 35604642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value); 35616747b715Smrgchar **prepare_spawn (char **argv); 35626747b715Smrgvoid lt_dump_script (FILE *f); 35634642e01fSmrgEOF 35644642e01fSmrg 35654642e01fSmrg cat <<EOF 3566475c125cSmrgconst char * MAGIC_EXE = "$magic_exe"; 35674642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 35684642e01fSmrgEOF 356905b261ecSmrg 35704642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3571475c125cSmrg func_to_host_pathlist "$temp_rpath" 35724642e01fSmrg cat <<EOF 3573475c125cSmrgconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 35744642e01fSmrgEOF 35754642e01fSmrg else 35764642e01fSmrg cat <<"EOF" 35774642e01fSmrgconst char * LIB_PATH_VALUE = ""; 35784642e01fSmrgEOF 357905b261ecSmrg fi 358005b261ecSmrg 35814642e01fSmrg if test -n "$dllsearchpath"; then 3582475c125cSmrg func_to_host_pathlist "$dllsearchpath:" 35834642e01fSmrg cat <<EOF 35844642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH"; 3585475c125cSmrgconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 358605b261ecSmrgEOF 358705b261ecSmrg else 35884642e01fSmrg cat <<"EOF" 35894642e01fSmrgconst char * EXE_PATH_VARNAME = ""; 35904642e01fSmrgconst char * EXE_PATH_VALUE = ""; 35914642e01fSmrgEOF 359205b261ecSmrg fi 35934642e01fSmrg 35944642e01fSmrg if test "$fast_install" = yes; then 35954642e01fSmrg cat <<EOF 35964642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 35974642e01fSmrgEOF 359805b261ecSmrg else 35994642e01fSmrg cat <<EOF 36004642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 36014642e01fSmrgEOF 360205b261ecSmrg fi 360305b261ecSmrg 360405b261ecSmrg 36054642e01fSmrg cat <<"EOF" 360605b261ecSmrg 36074642e01fSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 360805b261ecSmrg 36094642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 36104642e01fSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 36116747b715Smrgstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 361205b261ecSmrg 36134642e01fSmrgint 36144642e01fSmrgmain (int argc, char *argv[]) 36154642e01fSmrg{ 36164642e01fSmrg char **newargz; 36174642e01fSmrg int newargc; 36184642e01fSmrg char *tmp_pathspec; 36194642e01fSmrg char *actual_cwrapper_path; 36204642e01fSmrg char *actual_cwrapper_name; 36214642e01fSmrg char *target_name; 36224642e01fSmrg char *lt_argv_zero; 36234642e01fSmrg intptr_t rval = 127; 362405b261ecSmrg 36254642e01fSmrg int i; 362605b261ecSmrg 36274642e01fSmrg program_name = (char *) xstrdup (base_name (argv[0])); 36286747b715Smrg newargz = XMALLOC (char *, argc + 1); 362905b261ecSmrg 36306747b715Smrg /* very simple arg parsing; don't want to rely on getopt 36316747b715Smrg * also, copy all non cwrapper options to newargz, except 36326747b715Smrg * argz[0], which is handled differently 36336747b715Smrg */ 36346747b715Smrg newargc=0; 36354642e01fSmrg for (i = 1; i < argc; i++) 36364642e01fSmrg { 36374642e01fSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 36384642e01fSmrg { 36394642e01fSmrgEOF 36404642e01fSmrg case "$host" in 36414642e01fSmrg *mingw* | *cygwin* ) 36424642e01fSmrg # make stdout use "unix" line endings 36434642e01fSmrg echo " setmode(1,_O_BINARY);" 36444642e01fSmrg ;; 36454642e01fSmrg esac 364605b261ecSmrg 36474642e01fSmrg cat <<"EOF" 36486747b715Smrg lt_dump_script (stdout); 36494642e01fSmrg return 0; 36504642e01fSmrg } 36516747b715Smrg if (strcmp (argv[i], debug_opt) == 0) 36526747b715Smrg { 36536747b715Smrg lt_debug = 1; 36546747b715Smrg continue; 36556747b715Smrg } 36566747b715Smrg if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 36576747b715Smrg { 36586747b715Smrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 36596747b715Smrg namespace, but it is not one of the ones we know about and 36606747b715Smrg have already dealt with, above (inluding dump-script), then 36616747b715Smrg report an error. Otherwise, targets might begin to believe 36626747b715Smrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 36636747b715Smrg namespace. The first time any user complains about this, we'll 36646747b715Smrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 36656747b715Smrg or a configure.ac-settable value. 36666747b715Smrg */ 36676747b715Smrg lt_fatal (__FILE__, __LINE__, 36686747b715Smrg "unrecognized %s option: '%s'", 36696747b715Smrg ltwrapper_option_prefix, argv[i]); 36706747b715Smrg } 36716747b715Smrg /* otherwise ... */ 36726747b715Smrg newargz[++newargc] = xstrdup (argv[i]); 36734642e01fSmrg } 36746747b715Smrg newargz[++newargc] = NULL; 36756747b715Smrg 36766747b715SmrgEOF 36776747b715Smrg cat <<EOF 36786747b715Smrg /* The GNU banner must be the first non-error debug message */ 36796747b715Smrg lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 36806747b715SmrgEOF 36816747b715Smrg cat <<"EOF" 36826747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 36836747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 368405b261ecSmrg 36854642e01fSmrg tmp_pathspec = find_executable (argv[0]); 36864642e01fSmrg if (tmp_pathspec == NULL) 36876747b715Smrg lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 36886747b715Smrg lt_debugprintf (__FILE__, __LINE__, 36896747b715Smrg "(main) found exe (before symlink chase) at: %s\n", 36906747b715Smrg tmp_pathspec); 36914642e01fSmrg 36924642e01fSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 36936747b715Smrg lt_debugprintf (__FILE__, __LINE__, 36946747b715Smrg "(main) found exe (after symlink chase) at: %s\n", 36956747b715Smrg actual_cwrapper_path); 36964642e01fSmrg XFREE (tmp_pathspec); 36974642e01fSmrg 36986747b715Smrg actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 36994642e01fSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 37004642e01fSmrg 37014642e01fSmrg /* wrapper name transforms */ 37024642e01fSmrg strendzap (actual_cwrapper_name, ".exe"); 37034642e01fSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 37044642e01fSmrg XFREE (actual_cwrapper_name); 37054642e01fSmrg actual_cwrapper_name = tmp_pathspec; 37064642e01fSmrg tmp_pathspec = 0; 37074642e01fSmrg 37084642e01fSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 37094642e01fSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 37104642e01fSmrg strendzap (target_name, ".exe"); 37114642e01fSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 37124642e01fSmrg XFREE (target_name); 37134642e01fSmrg target_name = tmp_pathspec; 37144642e01fSmrg tmp_pathspec = 0; 37154642e01fSmrg 37166747b715Smrg lt_debugprintf (__FILE__, __LINE__, 37176747b715Smrg "(main) libtool target name: %s\n", 37186747b715Smrg target_name); 37194642e01fSmrgEOF 372005b261ecSmrg 37214642e01fSmrg cat <<EOF 37224642e01fSmrg newargz[0] = 37234642e01fSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 37244642e01fSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 37254642e01fSmrg strcpy (newargz[0], actual_cwrapper_path); 37264642e01fSmrg strcat (newargz[0], "$objdir"); 37274642e01fSmrg strcat (newargz[0], "/"); 37284642e01fSmrgEOF 372905b261ecSmrg 37304642e01fSmrg cat <<"EOF" 37314642e01fSmrg /* stop here, and copy so we don't have to do this twice */ 37324642e01fSmrg tmp_pathspec = xstrdup (newargz[0]); 373305b261ecSmrg 37344642e01fSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 37354642e01fSmrg strcat (newargz[0], actual_cwrapper_name); 373605b261ecSmrg 37374642e01fSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 37384642e01fSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 37394642e01fSmrg XFREE (tmp_pathspec); 37404642e01fSmrg tmp_pathspec = NULL; 37414642e01fSmrgEOF 374205b261ecSmrg 37434642e01fSmrg case $host_os in 37444642e01fSmrg mingw*) 37454642e01fSmrg cat <<"EOF" 37464642e01fSmrg { 37474642e01fSmrg char* p; 37484642e01fSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 37494642e01fSmrg { 37504642e01fSmrg *p = '/'; 37514642e01fSmrg } 37524642e01fSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 37534642e01fSmrg { 37544642e01fSmrg *p = '/'; 37554642e01fSmrg } 37564642e01fSmrg } 37574642e01fSmrgEOF 37584642e01fSmrg ;; 37594642e01fSmrg esac 376005b261ecSmrg 37614642e01fSmrg cat <<"EOF" 37624642e01fSmrg XFREE (target_name); 37634642e01fSmrg XFREE (actual_cwrapper_path); 37644642e01fSmrg XFREE (actual_cwrapper_name); 376505b261ecSmrg 37664642e01fSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 37674642e01fSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 37686747b715Smrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 3769475c125cSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 377005b261ecSmrg 37716747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 37726747b715Smrg nonnull (lt_argv_zero)); 37734642e01fSmrg for (i = 0; i < newargc; i++) 37744642e01fSmrg { 37756747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 37766747b715Smrg i, nonnull (newargz[i])); 37774642e01fSmrg } 377805b261ecSmrg 37794642e01fSmrgEOF 378005b261ecSmrg 37814642e01fSmrg case $host_os in 37824642e01fSmrg mingw*) 37834642e01fSmrg cat <<"EOF" 37844642e01fSmrg /* execv doesn't actually work on mingw as expected on unix */ 37856747b715Smrg newargz = prepare_spawn (newargz); 37864642e01fSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 37874642e01fSmrg if (rval == -1) 37884642e01fSmrg { 37894642e01fSmrg /* failed to start process */ 37906747b715Smrg lt_debugprintf (__FILE__, __LINE__, 37916747b715Smrg "(main) failed to launch target \"%s\": %s\n", 37926747b715Smrg lt_argv_zero, nonnull (strerror (errno))); 37934642e01fSmrg return 127; 37944642e01fSmrg } 37954642e01fSmrg return rval; 37964642e01fSmrgEOF 37974642e01fSmrg ;; 37984642e01fSmrg *) 37994642e01fSmrg cat <<"EOF" 38004642e01fSmrg execv (lt_argv_zero, newargz); 38014642e01fSmrg return rval; /* =127, but avoids unused variable warning */ 38024642e01fSmrgEOF 38034642e01fSmrg ;; 38044642e01fSmrg esac 380505b261ecSmrg 38064642e01fSmrg cat <<"EOF" 38074642e01fSmrg} 380805b261ecSmrg 38094642e01fSmrgvoid * 38104642e01fSmrgxmalloc (size_t num) 38114642e01fSmrg{ 38124642e01fSmrg void *p = (void *) malloc (num); 38134642e01fSmrg if (!p) 38146747b715Smrg lt_fatal (__FILE__, __LINE__, "memory exhausted"); 381505b261ecSmrg 38164642e01fSmrg return p; 38174642e01fSmrg} 381805b261ecSmrg 38194642e01fSmrgchar * 38204642e01fSmrgxstrdup (const char *string) 38214642e01fSmrg{ 38224642e01fSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 38234642e01fSmrg string) : NULL; 38244642e01fSmrg} 382505b261ecSmrg 38264642e01fSmrgconst char * 38274642e01fSmrgbase_name (const char *name) 38284642e01fSmrg{ 38294642e01fSmrg const char *base; 383005b261ecSmrg 38314642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 38324642e01fSmrg /* Skip over the disk name in MSDOS pathnames. */ 38334642e01fSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 38344642e01fSmrg name += 2; 38354642e01fSmrg#endif 383605b261ecSmrg 38374642e01fSmrg for (base = name; *name; name++) 38384642e01fSmrg if (IS_DIR_SEPARATOR (*name)) 38394642e01fSmrg base = name + 1; 38404642e01fSmrg return base; 38414642e01fSmrg} 384205b261ecSmrg 38434642e01fSmrgint 38444642e01fSmrgcheck_executable (const char *path) 38454642e01fSmrg{ 38464642e01fSmrg struct stat st; 384705b261ecSmrg 38486747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 38496747b715Smrg nonempty (path)); 38504642e01fSmrg if ((!path) || (!*path)) 38514642e01fSmrg return 0; 385205b261ecSmrg 38534642e01fSmrg if ((stat (path, &st) >= 0) 38544642e01fSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 38554642e01fSmrg return 1; 38564642e01fSmrg else 38574642e01fSmrg return 0; 38584642e01fSmrg} 385905b261ecSmrg 38604642e01fSmrgint 38614642e01fSmrgmake_executable (const char *path) 38624642e01fSmrg{ 38634642e01fSmrg int rval = 0; 38644642e01fSmrg struct stat st; 386505b261ecSmrg 38666747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 38676747b715Smrg nonempty (path)); 38684642e01fSmrg if ((!path) || (!*path)) 38694642e01fSmrg return 0; 387005b261ecSmrg 38714642e01fSmrg if (stat (path, &st) >= 0) 38724642e01fSmrg { 38734642e01fSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 38744642e01fSmrg } 38754642e01fSmrg return rval; 38764642e01fSmrg} 387705b261ecSmrg 38784642e01fSmrg/* Searches for the full path of the wrapper. Returns 38794642e01fSmrg newly allocated full path name if found, NULL otherwise 38804642e01fSmrg Does not chase symlinks, even on platforms that support them. 38814642e01fSmrg*/ 38824642e01fSmrgchar * 38834642e01fSmrgfind_executable (const char *wrapper) 38844642e01fSmrg{ 38854642e01fSmrg int has_slash = 0; 38864642e01fSmrg const char *p; 38874642e01fSmrg const char *p_next; 38884642e01fSmrg /* static buffer for getcwd */ 38894642e01fSmrg char tmp[LT_PATHMAX + 1]; 38904642e01fSmrg int tmp_len; 38914642e01fSmrg char *concat_name; 389205b261ecSmrg 38936747b715Smrg lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 38946747b715Smrg nonempty (wrapper)); 389505b261ecSmrg 38964642e01fSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 38974642e01fSmrg return NULL; 389805b261ecSmrg 38994642e01fSmrg /* Absolute path? */ 39004642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 39014642e01fSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 39024642e01fSmrg { 39034642e01fSmrg concat_name = xstrdup (wrapper); 39044642e01fSmrg if (check_executable (concat_name)) 39054642e01fSmrg return concat_name; 39064642e01fSmrg XFREE (concat_name); 39074642e01fSmrg } 39084642e01fSmrg else 39094642e01fSmrg { 39104642e01fSmrg#endif 39114642e01fSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 39124642e01fSmrg { 39134642e01fSmrg concat_name = xstrdup (wrapper); 39144642e01fSmrg if (check_executable (concat_name)) 39154642e01fSmrg return concat_name; 39164642e01fSmrg XFREE (concat_name); 39174642e01fSmrg } 39184642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 39194642e01fSmrg } 39204642e01fSmrg#endif 392105b261ecSmrg 39224642e01fSmrg for (p = wrapper; *p; p++) 39234642e01fSmrg if (*p == '/') 39244642e01fSmrg { 39254642e01fSmrg has_slash = 1; 39264642e01fSmrg break; 39274642e01fSmrg } 39284642e01fSmrg if (!has_slash) 39294642e01fSmrg { 39304642e01fSmrg /* no slashes; search PATH */ 39314642e01fSmrg const char *path = getenv ("PATH"); 39324642e01fSmrg if (path != NULL) 39334642e01fSmrg { 39344642e01fSmrg for (p = path; *p; p = p_next) 39354642e01fSmrg { 39364642e01fSmrg const char *q; 39374642e01fSmrg size_t p_len; 39384642e01fSmrg for (q = p; *q; q++) 39394642e01fSmrg if (IS_PATH_SEPARATOR (*q)) 39404642e01fSmrg break; 39414642e01fSmrg p_len = q - p; 39424642e01fSmrg p_next = (*q == '\0' ? q : q + 1); 39434642e01fSmrg if (p_len == 0) 39444642e01fSmrg { 39454642e01fSmrg /* empty path: current directory */ 39464642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 39476747b715Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 39486747b715Smrg nonnull (strerror (errno))); 39494642e01fSmrg tmp_len = strlen (tmp); 39504642e01fSmrg concat_name = 39514642e01fSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 39524642e01fSmrg memcpy (concat_name, tmp, tmp_len); 39534642e01fSmrg concat_name[tmp_len] = '/'; 39544642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 39554642e01fSmrg } 39564642e01fSmrg else 39574642e01fSmrg { 39584642e01fSmrg concat_name = 39594642e01fSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 39604642e01fSmrg memcpy (concat_name, p, p_len); 39614642e01fSmrg concat_name[p_len] = '/'; 39624642e01fSmrg strcpy (concat_name + p_len + 1, wrapper); 39634642e01fSmrg } 39644642e01fSmrg if (check_executable (concat_name)) 39654642e01fSmrg return concat_name; 39664642e01fSmrg XFREE (concat_name); 39674642e01fSmrg } 39684642e01fSmrg } 39694642e01fSmrg /* not found in PATH; assume curdir */ 39704642e01fSmrg } 39714642e01fSmrg /* Relative path | not found in path: prepend cwd */ 39724642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 39736747b715Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 39746747b715Smrg nonnull (strerror (errno))); 39754642e01fSmrg tmp_len = strlen (tmp); 39764642e01fSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 39774642e01fSmrg memcpy (concat_name, tmp, tmp_len); 39784642e01fSmrg concat_name[tmp_len] = '/'; 39794642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 398005b261ecSmrg 39814642e01fSmrg if (check_executable (concat_name)) 39824642e01fSmrg return concat_name; 39834642e01fSmrg XFREE (concat_name); 39844642e01fSmrg return NULL; 39854642e01fSmrg} 398605b261ecSmrg 39874642e01fSmrgchar * 39884642e01fSmrgchase_symlinks (const char *pathspec) 39894642e01fSmrg{ 39904642e01fSmrg#ifndef S_ISLNK 39914642e01fSmrg return xstrdup (pathspec); 39924642e01fSmrg#else 39934642e01fSmrg char buf[LT_PATHMAX]; 39944642e01fSmrg struct stat s; 39954642e01fSmrg char *tmp_pathspec = xstrdup (pathspec); 39964642e01fSmrg char *p; 39974642e01fSmrg int has_symlinks = 0; 39984642e01fSmrg while (strlen (tmp_pathspec) && !has_symlinks) 39994642e01fSmrg { 40006747b715Smrg lt_debugprintf (__FILE__, __LINE__, 40016747b715Smrg "checking path component for symlinks: %s\n", 40026747b715Smrg tmp_pathspec); 40034642e01fSmrg if (lstat (tmp_pathspec, &s) == 0) 40044642e01fSmrg { 40054642e01fSmrg if (S_ISLNK (s.st_mode) != 0) 40064642e01fSmrg { 40074642e01fSmrg has_symlinks = 1; 40084642e01fSmrg break; 40094642e01fSmrg } 401005b261ecSmrg 40114642e01fSmrg /* search backwards for last DIR_SEPARATOR */ 40124642e01fSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 40134642e01fSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 40144642e01fSmrg p--; 40154642e01fSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 40164642e01fSmrg { 40174642e01fSmrg /* no more DIR_SEPARATORS left */ 40184642e01fSmrg break; 40194642e01fSmrg } 40204642e01fSmrg *p = '\0'; 40214642e01fSmrg } 40224642e01fSmrg else 40234642e01fSmrg { 40246747b715Smrg lt_fatal (__FILE__, __LINE__, 40256747b715Smrg "error accessing file \"%s\": %s", 40266747b715Smrg tmp_pathspec, nonnull (strerror (errno))); 40274642e01fSmrg } 40284642e01fSmrg } 40294642e01fSmrg XFREE (tmp_pathspec); 403005b261ecSmrg 40314642e01fSmrg if (!has_symlinks) 40324642e01fSmrg { 40334642e01fSmrg return xstrdup (pathspec); 40344642e01fSmrg } 403505b261ecSmrg 40364642e01fSmrg tmp_pathspec = realpath (pathspec, buf); 40374642e01fSmrg if (tmp_pathspec == 0) 40384642e01fSmrg { 40396747b715Smrg lt_fatal (__FILE__, __LINE__, 40406747b715Smrg "could not follow symlinks for %s", pathspec); 40414642e01fSmrg } 40424642e01fSmrg return xstrdup (tmp_pathspec); 40434642e01fSmrg#endif 40444642e01fSmrg} 404505b261ecSmrg 40464642e01fSmrgchar * 40474642e01fSmrgstrendzap (char *str, const char *pat) 40484642e01fSmrg{ 40494642e01fSmrg size_t len, patlen; 405005b261ecSmrg 40514642e01fSmrg assert (str != NULL); 40524642e01fSmrg assert (pat != NULL); 405305b261ecSmrg 40544642e01fSmrg len = strlen (str); 40554642e01fSmrg patlen = strlen (pat); 405605b261ecSmrg 40574642e01fSmrg if (patlen <= len) 40584642e01fSmrg { 40594642e01fSmrg str += len - patlen; 40604642e01fSmrg if (strcmp (str, pat) == 0) 40614642e01fSmrg *str = '\0'; 40624642e01fSmrg } 40634642e01fSmrg return str; 40644642e01fSmrg} 406505b261ecSmrg 40666747b715Smrgvoid 40676747b715Smrglt_debugprintf (const char *file, int line, const char *fmt, ...) 40686747b715Smrg{ 40696747b715Smrg va_list args; 40706747b715Smrg if (lt_debug) 40716747b715Smrg { 40726747b715Smrg (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 40736747b715Smrg va_start (args, fmt); 40746747b715Smrg (void) vfprintf (stderr, fmt, args); 40756747b715Smrg va_end (args); 40766747b715Smrg } 40776747b715Smrg} 40786747b715Smrg 40794642e01fSmrgstatic void 40806747b715Smrglt_error_core (int exit_status, const char *file, 40816747b715Smrg int line, const char *mode, 40824642e01fSmrg const char *message, va_list ap) 40834642e01fSmrg{ 40846747b715Smrg fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 40854642e01fSmrg vfprintf (stderr, message, ap); 40864642e01fSmrg fprintf (stderr, ".\n"); 408705b261ecSmrg 40884642e01fSmrg if (exit_status >= 0) 40894642e01fSmrg exit (exit_status); 40904642e01fSmrg} 409105b261ecSmrg 40924642e01fSmrgvoid 40936747b715Smrglt_fatal (const char *file, int line, const char *message, ...) 40944642e01fSmrg{ 40954642e01fSmrg va_list ap; 40964642e01fSmrg va_start (ap, message); 40976747b715Smrg lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 40984642e01fSmrg va_end (ap); 40994642e01fSmrg} 410005b261ecSmrg 41016747b715Smrgstatic const char * 41026747b715Smrgnonnull (const char *s) 41036747b715Smrg{ 41046747b715Smrg return s ? s : "(null)"; 41056747b715Smrg} 41066747b715Smrg 41076747b715Smrgstatic const char * 41086747b715Smrgnonempty (const char *s) 41096747b715Smrg{ 41106747b715Smrg return (s && !*s) ? "(empty)" : nonnull (s); 41116747b715Smrg} 41126747b715Smrg 41134642e01fSmrgvoid 41144642e01fSmrglt_setenv (const char *name, const char *value) 41154642e01fSmrg{ 41166747b715Smrg lt_debugprintf (__FILE__, __LINE__, 41176747b715Smrg "(lt_setenv) setting '%s' to '%s'\n", 41186747b715Smrg nonnull (name), nonnull (value)); 41194642e01fSmrg { 41204642e01fSmrg#ifdef HAVE_SETENV 41214642e01fSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 41224642e01fSmrg char *str = xstrdup (value); 41234642e01fSmrg setenv (name, str, 1); 41244642e01fSmrg#else 41254642e01fSmrg int len = strlen (name) + 1 + strlen (value) + 1; 41264642e01fSmrg char *str = XMALLOC (char, len); 41274642e01fSmrg sprintf (str, "%s=%s", name, value); 41284642e01fSmrg if (putenv (str) != EXIT_SUCCESS) 41294642e01fSmrg { 41304642e01fSmrg XFREE (str); 41314642e01fSmrg } 41324642e01fSmrg#endif 41334642e01fSmrg } 41344642e01fSmrg} 413505b261ecSmrg 41364642e01fSmrgchar * 41374642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 41384642e01fSmrg{ 41394642e01fSmrg char *new_value; 41404642e01fSmrg if (orig_value && *orig_value) 41414642e01fSmrg { 41424642e01fSmrg int orig_value_len = strlen (orig_value); 41434642e01fSmrg int add_len = strlen (add); 41444642e01fSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 41454642e01fSmrg if (to_end) 41464642e01fSmrg { 41474642e01fSmrg strcpy (new_value, orig_value); 41484642e01fSmrg strcpy (new_value + orig_value_len, add); 41494642e01fSmrg } 41504642e01fSmrg else 41514642e01fSmrg { 41524642e01fSmrg strcpy (new_value, add); 41534642e01fSmrg strcpy (new_value + add_len, orig_value); 41544642e01fSmrg } 41554642e01fSmrg } 41564642e01fSmrg else 41574642e01fSmrg { 41584642e01fSmrg new_value = xstrdup (add); 41594642e01fSmrg } 41604642e01fSmrg return new_value; 41614642e01fSmrg} 416205b261ecSmrg 41634642e01fSmrgvoid 41644642e01fSmrglt_update_exe_path (const char *name, const char *value) 41654642e01fSmrg{ 41666747b715Smrg lt_debugprintf (__FILE__, __LINE__, 41676747b715Smrg "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 41686747b715Smrg nonnull (name), nonnull (value)); 416905b261ecSmrg 41704642e01fSmrg if (name && *name && value && *value) 41714642e01fSmrg { 41724642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 41734642e01fSmrg /* some systems can't cope with a ':'-terminated path #' */ 41744642e01fSmrg int len = strlen (new_value); 41754642e01fSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 41764642e01fSmrg { 41774642e01fSmrg new_value[len-1] = '\0'; 41784642e01fSmrg } 41794642e01fSmrg lt_setenv (name, new_value); 41804642e01fSmrg XFREE (new_value); 41814642e01fSmrg } 41824642e01fSmrg} 418305b261ecSmrg 41844642e01fSmrgvoid 41854642e01fSmrglt_update_lib_path (const char *name, const char *value) 41864642e01fSmrg{ 41876747b715Smrg lt_debugprintf (__FILE__, __LINE__, 41886747b715Smrg "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 41896747b715Smrg nonnull (name), nonnull (value)); 419005b261ecSmrg 41914642e01fSmrg if (name && *name && value && *value) 41924642e01fSmrg { 41934642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 41944642e01fSmrg lt_setenv (name, new_value); 41954642e01fSmrg XFREE (new_value); 41964642e01fSmrg } 41974642e01fSmrg} 419805b261ecSmrg 41996747b715SmrgEOF 42006747b715Smrg case $host_os in 42016747b715Smrg mingw*) 42026747b715Smrg cat <<"EOF" 42036747b715Smrg 42046747b715Smrg/* Prepares an argument vector before calling spawn(). 42056747b715Smrg Note that spawn() does not by itself call the command interpreter 42066747b715Smrg (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 42076747b715Smrg ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 42086747b715Smrg GetVersionEx(&v); 42096747b715Smrg v.dwPlatformId == VER_PLATFORM_WIN32_NT; 42106747b715Smrg }) ? "cmd.exe" : "command.com"). 42116747b715Smrg Instead it simply concatenates the arguments, separated by ' ', and calls 42126747b715Smrg CreateProcess(). We must quote the arguments since Win32 CreateProcess() 42136747b715Smrg interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 42146747b715Smrg special way: 42156747b715Smrg - Space and tab are interpreted as delimiters. They are not treated as 42166747b715Smrg delimiters if they are surrounded by double quotes: "...". 42176747b715Smrg - Unescaped double quotes are removed from the input. Their only effect is 42186747b715Smrg that within double quotes, space and tab are treated like normal 42196747b715Smrg characters. 42206747b715Smrg - Backslashes not followed by double quotes are not special. 42216747b715Smrg - But 2*n+1 backslashes followed by a double quote become 42226747b715Smrg n backslashes followed by a double quote (n >= 0): 42236747b715Smrg \" -> " 42246747b715Smrg \\\" -> \" 42256747b715Smrg \\\\\" -> \\" 42266747b715Smrg */ 42276747b715Smrg#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" 42286747b715Smrg#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" 42296747b715Smrgchar ** 42306747b715Smrgprepare_spawn (char **argv) 42316747b715Smrg{ 42326747b715Smrg size_t argc; 42336747b715Smrg char **new_argv; 42346747b715Smrg size_t i; 42356747b715Smrg 42366747b715Smrg /* Count number of arguments. */ 42376747b715Smrg for (argc = 0; argv[argc] != NULL; argc++) 42386747b715Smrg ; 42396747b715Smrg 42406747b715Smrg /* Allocate new argument vector. */ 42416747b715Smrg new_argv = XMALLOC (char *, argc + 1); 42426747b715Smrg 42436747b715Smrg /* Put quoted arguments into the new argument vector. */ 42446747b715Smrg for (i = 0; i < argc; i++) 42456747b715Smrg { 42466747b715Smrg const char *string = argv[i]; 42476747b715Smrg 42486747b715Smrg if (string[0] == '\0') 42496747b715Smrg new_argv[i] = xstrdup ("\"\""); 42506747b715Smrg else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 42516747b715Smrg { 42526747b715Smrg int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 42536747b715Smrg size_t length; 42546747b715Smrg unsigned int backslashes; 42556747b715Smrg const char *s; 42566747b715Smrg char *quoted_string; 42576747b715Smrg char *p; 42586747b715Smrg 42596747b715Smrg length = 0; 42606747b715Smrg backslashes = 0; 42616747b715Smrg if (quote_around) 42626747b715Smrg length++; 42636747b715Smrg for (s = string; *s != '\0'; s++) 42646747b715Smrg { 42656747b715Smrg char c = *s; 42666747b715Smrg if (c == '"') 42676747b715Smrg length += backslashes + 1; 42686747b715Smrg length++; 42696747b715Smrg if (c == '\\') 42706747b715Smrg backslashes++; 42716747b715Smrg else 42726747b715Smrg backslashes = 0; 42736747b715Smrg } 42746747b715Smrg if (quote_around) 42756747b715Smrg length += backslashes + 1; 42766747b715Smrg 42776747b715Smrg quoted_string = XMALLOC (char, length + 1); 42786747b715Smrg 42796747b715Smrg p = quoted_string; 42806747b715Smrg backslashes = 0; 42816747b715Smrg if (quote_around) 42826747b715Smrg *p++ = '"'; 42836747b715Smrg for (s = string; *s != '\0'; s++) 42846747b715Smrg { 42856747b715Smrg char c = *s; 42866747b715Smrg if (c == '"') 42876747b715Smrg { 42886747b715Smrg unsigned int j; 42896747b715Smrg for (j = backslashes + 1; j > 0; j--) 42906747b715Smrg *p++ = '\\'; 42916747b715Smrg } 42926747b715Smrg *p++ = c; 42936747b715Smrg if (c == '\\') 42946747b715Smrg backslashes++; 42956747b715Smrg else 42966747b715Smrg backslashes = 0; 42976747b715Smrg } 42986747b715Smrg if (quote_around) 42996747b715Smrg { 43006747b715Smrg unsigned int j; 43016747b715Smrg for (j = backslashes; j > 0; j--) 43026747b715Smrg *p++ = '\\'; 43036747b715Smrg *p++ = '"'; 43046747b715Smrg } 43056747b715Smrg *p = '\0'; 43066747b715Smrg 43076747b715Smrg new_argv[i] = quoted_string; 43086747b715Smrg } 43096747b715Smrg else 43106747b715Smrg new_argv[i] = (char *) string; 43116747b715Smrg } 43126747b715Smrg new_argv[argc] = NULL; 43136747b715Smrg 43146747b715Smrg return new_argv; 43156747b715Smrg} 43166747b715SmrgEOF 43176747b715Smrg ;; 43186747b715Smrg esac 43196747b715Smrg 43206747b715Smrg cat <<"EOF" 43216747b715Smrgvoid lt_dump_script (FILE* f) 43226747b715Smrg{ 43236747b715SmrgEOF 43246747b715Smrg func_emit_wrapper yes | 43256747b715Smrg $SED -e 's/\([\\"]\)/\\\1/g' \ 43266747b715Smrg -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' 432705b261ecSmrg 43286747b715Smrg cat <<"EOF" 43296747b715Smrg} 43304642e01fSmrgEOF 43314642e01fSmrg} 43324642e01fSmrg# end: func_emit_cwrapperexe_src 433305b261ecSmrg 43346747b715Smrg# func_win32_import_lib_p ARG 43356747b715Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd 43366747b715Smrgfunc_win32_import_lib_p () 43376747b715Smrg{ 43386747b715Smrg $opt_debug 43396747b715Smrg case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 43406747b715Smrg *import*) : ;; 43416747b715Smrg *) false ;; 43426747b715Smrg esac 43436747b715Smrg} 43446747b715Smrg 43454642e01fSmrg# func_mode_link arg... 43464642e01fSmrgfunc_mode_link () 43474642e01fSmrg{ 43484642e01fSmrg $opt_debug 43494642e01fSmrg case $host in 43504642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 43514642e01fSmrg # It is impossible to link a dll without this setting, and 43524642e01fSmrg # we shouldn't force the makefile maintainer to figure out 43534642e01fSmrg # which system we are compiling for in order to pass an extra 43544642e01fSmrg # flag for every libtool invocation. 43554642e01fSmrg # allow_undefined=no 435605b261ecSmrg 43574642e01fSmrg # FIXME: Unfortunately, there are problems with the above when trying 43584642e01fSmrg # to make a dll which has undefined symbols, in which case not 43594642e01fSmrg # even a static library is built. For now, we need to specify 43604642e01fSmrg # -no-undefined on the libtool link line when we can be certain 43614642e01fSmrg # that all symbols are satisfied, otherwise we get a static library. 43624642e01fSmrg allow_undefined=yes 43634642e01fSmrg ;; 43644642e01fSmrg *) 43654642e01fSmrg allow_undefined=yes 43664642e01fSmrg ;; 43674642e01fSmrg esac 43684642e01fSmrg libtool_args=$nonopt 43694642e01fSmrg base_compile="$nonopt $@" 43704642e01fSmrg compile_command=$nonopt 43714642e01fSmrg finalize_command=$nonopt 437205b261ecSmrg 43734642e01fSmrg compile_rpath= 43744642e01fSmrg finalize_rpath= 43754642e01fSmrg compile_shlibpath= 43764642e01fSmrg finalize_shlibpath= 43774642e01fSmrg convenience= 43784642e01fSmrg old_convenience= 43794642e01fSmrg deplibs= 43804642e01fSmrg old_deplibs= 43814642e01fSmrg compiler_flags= 43824642e01fSmrg linker_flags= 43834642e01fSmrg dllsearchpath= 43844642e01fSmrg lib_search_path=`pwd` 43854642e01fSmrg inst_prefix_dir= 43864642e01fSmrg new_inherited_linker_flags= 438705b261ecSmrg 43884642e01fSmrg avoid_version=no 43896747b715Smrg bindir= 43904642e01fSmrg dlfiles= 43914642e01fSmrg dlprefiles= 43924642e01fSmrg dlself=no 43934642e01fSmrg export_dynamic=no 43944642e01fSmrg export_symbols= 43954642e01fSmrg export_symbols_regex= 43964642e01fSmrg generated= 43974642e01fSmrg libobjs= 43984642e01fSmrg ltlibs= 43994642e01fSmrg module=no 44004642e01fSmrg no_install=no 44014642e01fSmrg objs= 44024642e01fSmrg non_pic_objects= 44034642e01fSmrg precious_files_regex= 44044642e01fSmrg prefer_static_libs=no 44054642e01fSmrg preload=no 44064642e01fSmrg prev= 44074642e01fSmrg prevarg= 44084642e01fSmrg release= 44094642e01fSmrg rpath= 44104642e01fSmrg xrpath= 44114642e01fSmrg perm_rpath= 44124642e01fSmrg temp_rpath= 44134642e01fSmrg thread_safe=no 44144642e01fSmrg vinfo= 44154642e01fSmrg vinfo_number=no 44164642e01fSmrg weak_libs= 44174642e01fSmrg single_module="${wl}-single_module" 44184642e01fSmrg func_infer_tag $base_compile 441905b261ecSmrg 44204642e01fSmrg # We need to know -static, to get the right output filenames. 44214642e01fSmrg for arg 44224642e01fSmrg do 44234642e01fSmrg case $arg in 44244642e01fSmrg -shared) 44254642e01fSmrg test "$build_libtool_libs" != yes && \ 44264642e01fSmrg func_fatal_configuration "can not build a shared library" 44274642e01fSmrg build_old_libs=no 44284642e01fSmrg break 44294642e01fSmrg ;; 44304642e01fSmrg -all-static | -static | -static-libtool-libs) 44314642e01fSmrg case $arg in 44324642e01fSmrg -all-static) 44334642e01fSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 44344642e01fSmrg func_warning "complete static linking is impossible in this configuration" 44354642e01fSmrg fi 44364642e01fSmrg if test -n "$link_static_flag"; then 44374642e01fSmrg dlopen_self=$dlopen_self_static 44384642e01fSmrg fi 44394642e01fSmrg prefer_static_libs=yes 44404642e01fSmrg ;; 44414642e01fSmrg -static) 44424642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 44434642e01fSmrg dlopen_self=$dlopen_self_static 44444642e01fSmrg fi 44454642e01fSmrg prefer_static_libs=built 44464642e01fSmrg ;; 44474642e01fSmrg -static-libtool-libs) 44484642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 44494642e01fSmrg dlopen_self=$dlopen_self_static 44504642e01fSmrg fi 44514642e01fSmrg prefer_static_libs=yes 44524642e01fSmrg ;; 44534642e01fSmrg esac 44544642e01fSmrg build_libtool_libs=no 44554642e01fSmrg build_old_libs=yes 44564642e01fSmrg break 44574642e01fSmrg ;; 44584642e01fSmrg esac 44594642e01fSmrg done 446005b261ecSmrg 44614642e01fSmrg # See if our shared archives depend on static archives. 44624642e01fSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 446305b261ecSmrg 44644642e01fSmrg # Go through the arguments, transforming them on the way. 44654642e01fSmrg while test "$#" -gt 0; do 44664642e01fSmrg arg="$1" 44674642e01fSmrg shift 44684642e01fSmrg func_quote_for_eval "$arg" 44694642e01fSmrg qarg=$func_quote_for_eval_unquoted_result 44704642e01fSmrg func_append libtool_args " $func_quote_for_eval_result" 447105b261ecSmrg 44724642e01fSmrg # If the previous option needs an argument, assign it. 44734642e01fSmrg if test -n "$prev"; then 44744642e01fSmrg case $prev in 44754642e01fSmrg output) 44764642e01fSmrg func_append compile_command " @OUTPUT@" 44774642e01fSmrg func_append finalize_command " @OUTPUT@" 44784642e01fSmrg ;; 44794642e01fSmrg esac 448005b261ecSmrg 44814642e01fSmrg case $prev in 44826747b715Smrg bindir) 44836747b715Smrg bindir="$arg" 44846747b715Smrg prev= 44856747b715Smrg continue 44866747b715Smrg ;; 44874642e01fSmrg dlfiles|dlprefiles) 44884642e01fSmrg if test "$preload" = no; then 44894642e01fSmrg # Add the symbol object into the linking commands. 44904642e01fSmrg func_append compile_command " @SYMFILE@" 44914642e01fSmrg func_append finalize_command " @SYMFILE@" 44924642e01fSmrg preload=yes 449305b261ecSmrg fi 44944642e01fSmrg case $arg in 44954642e01fSmrg *.la | *.lo) ;; # We handle these cases below. 44964642e01fSmrg force) 44974642e01fSmrg if test "$dlself" = no; then 44984642e01fSmrg dlself=needless 44994642e01fSmrg export_dynamic=yes 45004642e01fSmrg fi 45014642e01fSmrg prev= 45024642e01fSmrg continue 45034642e01fSmrg ;; 45044642e01fSmrg self) 45054642e01fSmrg if test "$prev" = dlprefiles; then 45064642e01fSmrg dlself=yes 45074642e01fSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 45084642e01fSmrg dlself=yes 45094642e01fSmrg else 45104642e01fSmrg dlself=needless 45114642e01fSmrg export_dynamic=yes 45124642e01fSmrg fi 45134642e01fSmrg prev= 45144642e01fSmrg continue 45154642e01fSmrg ;; 45164642e01fSmrg *) 45174642e01fSmrg if test "$prev" = dlfiles; then 4518475c125cSmrg dlfiles="$dlfiles $arg" 45194642e01fSmrg else 4520475c125cSmrg dlprefiles="$dlprefiles $arg" 45214642e01fSmrg fi 45224642e01fSmrg prev= 45234642e01fSmrg continue 45244642e01fSmrg ;; 45254642e01fSmrg esac 45264642e01fSmrg ;; 45274642e01fSmrg expsyms) 45284642e01fSmrg export_symbols="$arg" 45294642e01fSmrg test -f "$arg" \ 45304642e01fSmrg || func_fatal_error "symbol file \`$arg' does not exist" 45314642e01fSmrg prev= 45324642e01fSmrg continue 45334642e01fSmrg ;; 45344642e01fSmrg expsyms_regex) 45354642e01fSmrg export_symbols_regex="$arg" 45364642e01fSmrg prev= 45374642e01fSmrg continue 45384642e01fSmrg ;; 45394642e01fSmrg framework) 454005b261ecSmrg case $host in 45414642e01fSmrg *-*-darwin*) 45424642e01fSmrg case "$deplibs " in 45434642e01fSmrg *" $qarg.ltframework "*) ;; 4544475c125cSmrg *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 45454642e01fSmrg ;; 45464642e01fSmrg esac 45474642e01fSmrg ;; 454805b261ecSmrg esac 45494642e01fSmrg prev= 45504642e01fSmrg continue 455105b261ecSmrg ;; 45524642e01fSmrg inst_prefix) 45534642e01fSmrg inst_prefix_dir="$arg" 45544642e01fSmrg prev= 45554642e01fSmrg continue 455605b261ecSmrg ;; 45574642e01fSmrg objectlist) 45584642e01fSmrg if test -f "$arg"; then 45594642e01fSmrg save_arg=$arg 45604642e01fSmrg moreargs= 45614642e01fSmrg for fil in `cat "$save_arg"` 45624642e01fSmrg do 4563475c125cSmrg# moreargs="$moreargs $fil" 45644642e01fSmrg arg=$fil 45654642e01fSmrg # A libtool-controlled object. 456605b261ecSmrg 45674642e01fSmrg # Check to see that this really is a libtool object. 45684642e01fSmrg if func_lalib_unsafe_p "$arg"; then 45694642e01fSmrg pic_object= 45704642e01fSmrg non_pic_object= 457105b261ecSmrg 45724642e01fSmrg # Read the .lo file 45734642e01fSmrg func_source "$arg" 457405b261ecSmrg 45754642e01fSmrg if test -z "$pic_object" || 45764642e01fSmrg test -z "$non_pic_object" || 45774642e01fSmrg test "$pic_object" = none && 45784642e01fSmrg test "$non_pic_object" = none; then 45794642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 45804642e01fSmrg fi 458105b261ecSmrg 45824642e01fSmrg # Extract subdirectory from the argument. 45834642e01fSmrg func_dirname "$arg" "/" "" 45844642e01fSmrg xdir="$func_dirname_result" 458505b261ecSmrg 45864642e01fSmrg if test "$pic_object" != none; then 45874642e01fSmrg # Prepend the subdirectory the object is found in. 45884642e01fSmrg pic_object="$xdir$pic_object" 458905b261ecSmrg 45904642e01fSmrg if test "$prev" = dlfiles; then 45914642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4592475c125cSmrg dlfiles="$dlfiles $pic_object" 45934642e01fSmrg prev= 45944642e01fSmrg continue 45954642e01fSmrg else 45964642e01fSmrg # If libtool objects are unsupported, then we need to preload. 45974642e01fSmrg prev=dlprefiles 45984642e01fSmrg fi 45994642e01fSmrg fi 460005b261ecSmrg 46014642e01fSmrg # CHECK ME: I think I busted this. -Ossama 46024642e01fSmrg if test "$prev" = dlprefiles; then 46034642e01fSmrg # Preload the old-style object. 4604475c125cSmrg dlprefiles="$dlprefiles $pic_object" 46054642e01fSmrg prev= 46064642e01fSmrg fi 460705b261ecSmrg 46084642e01fSmrg # A PIC object. 46094642e01fSmrg func_append libobjs " $pic_object" 46104642e01fSmrg arg="$pic_object" 46114642e01fSmrg fi 461205b261ecSmrg 46134642e01fSmrg # Non-PIC object. 46144642e01fSmrg if test "$non_pic_object" != none; then 46154642e01fSmrg # Prepend the subdirectory the object is found in. 46164642e01fSmrg non_pic_object="$xdir$non_pic_object" 461705b261ecSmrg 46184642e01fSmrg # A standard non-PIC object 46194642e01fSmrg func_append non_pic_objects " $non_pic_object" 46204642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 46214642e01fSmrg arg="$non_pic_object" 46224642e01fSmrg fi 46234642e01fSmrg else 46244642e01fSmrg # If the PIC object exists, use it instead. 46254642e01fSmrg # $xdir was prepended to $pic_object above. 46264642e01fSmrg non_pic_object="$pic_object" 46274642e01fSmrg func_append non_pic_objects " $non_pic_object" 46284642e01fSmrg fi 46294642e01fSmrg else 46304642e01fSmrg # Only an error if not doing a dry-run. 46314642e01fSmrg if $opt_dry_run; then 46324642e01fSmrg # Extract subdirectory from the argument. 46334642e01fSmrg func_dirname "$arg" "/" "" 46344642e01fSmrg xdir="$func_dirname_result" 46354642e01fSmrg 46364642e01fSmrg func_lo2o "$arg" 46374642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 46384642e01fSmrg non_pic_object=$xdir$func_lo2o_result 46394642e01fSmrg func_append libobjs " $pic_object" 46404642e01fSmrg func_append non_pic_objects " $non_pic_object" 46414642e01fSmrg else 46424642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 46434642e01fSmrg fi 46444642e01fSmrg fi 46454642e01fSmrg done 464605b261ecSmrg else 46474642e01fSmrg func_fatal_error "link input file \`$arg' does not exist" 464805b261ecSmrg fi 46494642e01fSmrg arg=$save_arg 46504642e01fSmrg prev= 46514642e01fSmrg continue 46524642e01fSmrg ;; 46534642e01fSmrg precious_regex) 46544642e01fSmrg precious_files_regex="$arg" 46554642e01fSmrg prev= 46564642e01fSmrg continue 46574642e01fSmrg ;; 46584642e01fSmrg release) 46594642e01fSmrg release="-$arg" 46604642e01fSmrg prev= 46614642e01fSmrg continue 46624642e01fSmrg ;; 46634642e01fSmrg rpath | xrpath) 46644642e01fSmrg # We need an absolute path. 46654642e01fSmrg case $arg in 46664642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 46674642e01fSmrg *) 46684642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 46694642e01fSmrg ;; 46704642e01fSmrg esac 46714642e01fSmrg if test "$prev" = rpath; then 46724642e01fSmrg case "$rpath " in 46734642e01fSmrg *" $arg "*) ;; 4674475c125cSmrg *) rpath="$rpath $arg" ;; 46754642e01fSmrg esac 467605b261ecSmrg else 46774642e01fSmrg case "$xrpath " in 46784642e01fSmrg *" $arg "*) ;; 4679475c125cSmrg *) xrpath="$xrpath $arg" ;; 46804642e01fSmrg esac 468105b261ecSmrg fi 46824642e01fSmrg prev= 46834642e01fSmrg continue 46844642e01fSmrg ;; 46854642e01fSmrg shrext) 46864642e01fSmrg shrext_cmds="$arg" 46874642e01fSmrg prev= 46884642e01fSmrg continue 46894642e01fSmrg ;; 46904642e01fSmrg weak) 4691475c125cSmrg weak_libs="$weak_libs $arg" 46924642e01fSmrg prev= 46934642e01fSmrg continue 46944642e01fSmrg ;; 46954642e01fSmrg xcclinker) 4696475c125cSmrg linker_flags="$linker_flags $qarg" 4697475c125cSmrg compiler_flags="$compiler_flags $qarg" 46984642e01fSmrg prev= 46994642e01fSmrg func_append compile_command " $qarg" 47004642e01fSmrg func_append finalize_command " $qarg" 47014642e01fSmrg continue 47024642e01fSmrg ;; 47034642e01fSmrg xcompiler) 4704475c125cSmrg compiler_flags="$compiler_flags $qarg" 47054642e01fSmrg prev= 47064642e01fSmrg func_append compile_command " $qarg" 47074642e01fSmrg func_append finalize_command " $qarg" 47084642e01fSmrg continue 47094642e01fSmrg ;; 47104642e01fSmrg xlinker) 4711475c125cSmrg linker_flags="$linker_flags $qarg" 4712475c125cSmrg compiler_flags="$compiler_flags $wl$qarg" 47134642e01fSmrg prev= 47144642e01fSmrg func_append compile_command " $wl$qarg" 47154642e01fSmrg func_append finalize_command " $wl$qarg" 47164642e01fSmrg continue 47174642e01fSmrg ;; 47184642e01fSmrg *) 47194642e01fSmrg eval "$prev=\"\$arg\"" 47204642e01fSmrg prev= 47214642e01fSmrg continue 47224642e01fSmrg ;; 472305b261ecSmrg esac 47244642e01fSmrg fi # test -n "$prev" 472505b261ecSmrg 47264642e01fSmrg prevarg="$arg" 472705b261ecSmrg 47284642e01fSmrg case $arg in 47294642e01fSmrg -all-static) 47304642e01fSmrg if test -n "$link_static_flag"; then 47314642e01fSmrg # See comment for -static flag below, for more details. 47324642e01fSmrg func_append compile_command " $link_static_flag" 47334642e01fSmrg func_append finalize_command " $link_static_flag" 47344642e01fSmrg fi 47354642e01fSmrg continue 47364642e01fSmrg ;; 473705b261ecSmrg 47384642e01fSmrg -allow-undefined) 47394642e01fSmrg # FIXME: remove this flag sometime in the future. 47404642e01fSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 47414642e01fSmrg ;; 474205b261ecSmrg 47434642e01fSmrg -avoid-version) 47444642e01fSmrg avoid_version=yes 47454642e01fSmrg continue 47464642e01fSmrg ;; 474705b261ecSmrg 47486747b715Smrg -bindir) 47496747b715Smrg prev=bindir 47506747b715Smrg continue 47516747b715Smrg ;; 47526747b715Smrg 47534642e01fSmrg -dlopen) 47544642e01fSmrg prev=dlfiles 47554642e01fSmrg continue 47564642e01fSmrg ;; 475705b261ecSmrg 47584642e01fSmrg -dlpreopen) 47594642e01fSmrg prev=dlprefiles 47604642e01fSmrg continue 47614642e01fSmrg ;; 476205b261ecSmrg 47634642e01fSmrg -export-dynamic) 47644642e01fSmrg export_dynamic=yes 47654642e01fSmrg continue 47664642e01fSmrg ;; 476705b261ecSmrg 47684642e01fSmrg -export-symbols | -export-symbols-regex) 47694642e01fSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 47704642e01fSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 47714642e01fSmrg fi 47724642e01fSmrg if test "X$arg" = "X-export-symbols"; then 47734642e01fSmrg prev=expsyms 47744642e01fSmrg else 47754642e01fSmrg prev=expsyms_regex 47764642e01fSmrg fi 47774642e01fSmrg continue 47784642e01fSmrg ;; 477905b261ecSmrg 47804642e01fSmrg -framework) 47814642e01fSmrg prev=framework 47824642e01fSmrg continue 47834642e01fSmrg ;; 478405b261ecSmrg 47854642e01fSmrg -inst-prefix-dir) 47864642e01fSmrg prev=inst_prefix 47874642e01fSmrg continue 47884642e01fSmrg ;; 478905b261ecSmrg 47904642e01fSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 47914642e01fSmrg # so, if we see these flags be careful not to treat them like -L 47924642e01fSmrg -L[A-Z][A-Z]*:*) 47934642e01fSmrg case $with_gcc/$host in 47944642e01fSmrg no/*-*-irix* | /*-*-irix*) 47954642e01fSmrg func_append compile_command " $arg" 47964642e01fSmrg func_append finalize_command " $arg" 47974642e01fSmrg ;; 47984642e01fSmrg esac 47994642e01fSmrg continue 48004642e01fSmrg ;; 480105b261ecSmrg 48024642e01fSmrg -L*) 4803475c125cSmrg func_stripname '-L' '' "$arg" 4804475c125cSmrg dir=$func_stripname_result 4805475c125cSmrg if test -z "$dir"; then 48064642e01fSmrg if test "$#" -gt 0; then 48074642e01fSmrg func_fatal_error "require no space between \`-L' and \`$1'" 48084642e01fSmrg else 48094642e01fSmrg func_fatal_error "need path for \`-L' option" 48104642e01fSmrg fi 48114642e01fSmrg fi 48124642e01fSmrg # We need an absolute path. 48134642e01fSmrg case $dir in 48144642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 48154642e01fSmrg *) 48164642e01fSmrg absdir=`cd "$dir" && pwd` 48174642e01fSmrg test -z "$absdir" && \ 48184642e01fSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 48194642e01fSmrg dir="$absdir" 48204642e01fSmrg ;; 48214642e01fSmrg esac 48224642e01fSmrg case "$deplibs " in 4823475c125cSmrg *" -L$dir "*) ;; 48244642e01fSmrg *) 4825475c125cSmrg deplibs="$deplibs -L$dir" 4826475c125cSmrg lib_search_path="$lib_search_path $dir" 48274642e01fSmrg ;; 48284642e01fSmrg esac 48294642e01fSmrg case $host in 48304642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 48316747b715Smrg testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 48324642e01fSmrg case :$dllsearchpath: in 48334642e01fSmrg *":$dir:"*) ;; 48344642e01fSmrg ::) dllsearchpath=$dir;; 4835475c125cSmrg *) dllsearchpath="$dllsearchpath:$dir";; 48364642e01fSmrg esac 48374642e01fSmrg case :$dllsearchpath: in 48384642e01fSmrg *":$testbindir:"*) ;; 48394642e01fSmrg ::) dllsearchpath=$testbindir;; 4840475c125cSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 48414642e01fSmrg esac 48424642e01fSmrg ;; 48434642e01fSmrg esac 48444642e01fSmrg continue 48454642e01fSmrg ;; 484605b261ecSmrg 48474642e01fSmrg -l*) 48484642e01fSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 48494642e01fSmrg case $host in 48506747b715Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 48514642e01fSmrg # These systems don't actually have a C or math library (as such) 48524642e01fSmrg continue 48534642e01fSmrg ;; 48544642e01fSmrg *-*-os2*) 48554642e01fSmrg # These systems don't actually have a C library (as such) 48564642e01fSmrg test "X$arg" = "X-lc" && continue 48574642e01fSmrg ;; 48584642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 48594642e01fSmrg # Do not include libc due to us having libc/libc_r. 48604642e01fSmrg test "X$arg" = "X-lc" && continue 48614642e01fSmrg ;; 48624642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 48634642e01fSmrg # Rhapsody C and math libraries are in the System framework 4864475c125cSmrg deplibs="$deplibs System.ltframework" 48654642e01fSmrg continue 48664642e01fSmrg ;; 48674642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 48684642e01fSmrg # Causes problems with __ctype 48694642e01fSmrg test "X$arg" = "X-lc" && continue 48704642e01fSmrg ;; 48714642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 48724642e01fSmrg # Compiler inserts libc in the correct place for threads to work 48734642e01fSmrg test "X$arg" = "X-lc" && continue 48744642e01fSmrg ;; 48754642e01fSmrg esac 48764642e01fSmrg elif test "X$arg" = "X-lc_r"; then 48774642e01fSmrg case $host in 48784642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 48794642e01fSmrg # Do not include libc_r directly, use -pthread flag. 48804642e01fSmrg continue 48814642e01fSmrg ;; 48824642e01fSmrg esac 48834642e01fSmrg fi 4884475c125cSmrg deplibs="$deplibs $arg" 48854642e01fSmrg continue 48864642e01fSmrg ;; 488705b261ecSmrg 48884642e01fSmrg -module) 48894642e01fSmrg module=yes 48904642e01fSmrg continue 48914642e01fSmrg ;; 489205b261ecSmrg 48934642e01fSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 48944642e01fSmrg # classes, name mangling, and exception handling. 48954642e01fSmrg # Darwin uses the -arch flag to determine output architecture. 4896475c125cSmrg -model|-arch|-isysroot) 4897475c125cSmrg compiler_flags="$compiler_flags $arg" 48984642e01fSmrg func_append compile_command " $arg" 48994642e01fSmrg func_append finalize_command " $arg" 49004642e01fSmrg prev=xcompiler 49014642e01fSmrg continue 49024642e01fSmrg ;; 490305b261ecSmrg 49044642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4905475c125cSmrg compiler_flags="$compiler_flags $arg" 49064642e01fSmrg func_append compile_command " $arg" 49074642e01fSmrg func_append finalize_command " $arg" 49084642e01fSmrg case "$new_inherited_linker_flags " in 49094642e01fSmrg *" $arg "*) ;; 4910475c125cSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 49114642e01fSmrg esac 49124642e01fSmrg continue 49134642e01fSmrg ;; 491405b261ecSmrg 49154642e01fSmrg -multi_module) 49164642e01fSmrg single_module="${wl}-multi_module" 49174642e01fSmrg continue 49184642e01fSmrg ;; 491905b261ecSmrg 49204642e01fSmrg -no-fast-install) 49214642e01fSmrg fast_install=no 49224642e01fSmrg continue 49234642e01fSmrg ;; 492405b261ecSmrg 49254642e01fSmrg -no-install) 49264642e01fSmrg case $host in 49274642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 49284642e01fSmrg # The PATH hackery in wrapper scripts is required on Windows 49294642e01fSmrg # and Darwin in order for the loader to find any dlls it needs. 49304642e01fSmrg func_warning "\`-no-install' is ignored for $host" 49314642e01fSmrg func_warning "assuming \`-no-fast-install' instead" 49324642e01fSmrg fast_install=no 49334642e01fSmrg ;; 49344642e01fSmrg *) no_install=yes ;; 49354642e01fSmrg esac 49364642e01fSmrg continue 49374642e01fSmrg ;; 493805b261ecSmrg 49394642e01fSmrg -no-undefined) 49404642e01fSmrg allow_undefined=no 49414642e01fSmrg continue 49424642e01fSmrg ;; 494305b261ecSmrg 49444642e01fSmrg -objectlist) 49454642e01fSmrg prev=objectlist 49464642e01fSmrg continue 49474642e01fSmrg ;; 494805b261ecSmrg 49494642e01fSmrg -o) prev=output ;; 495005b261ecSmrg 49514642e01fSmrg -precious-files-regex) 49524642e01fSmrg prev=precious_regex 49534642e01fSmrg continue 49544642e01fSmrg ;; 495505b261ecSmrg 49564642e01fSmrg -release) 49574642e01fSmrg prev=release 49584642e01fSmrg continue 49594642e01fSmrg ;; 496005b261ecSmrg 49614642e01fSmrg -rpath) 49624642e01fSmrg prev=rpath 49634642e01fSmrg continue 49644642e01fSmrg ;; 496505b261ecSmrg 49664642e01fSmrg -R) 49674642e01fSmrg prev=xrpath 49684642e01fSmrg continue 49694642e01fSmrg ;; 497005b261ecSmrg 49714642e01fSmrg -R*) 49724642e01fSmrg func_stripname '-R' '' "$arg" 49734642e01fSmrg dir=$func_stripname_result 49744642e01fSmrg # We need an absolute path. 49754642e01fSmrg case $dir in 49764642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 49774642e01fSmrg *) 49784642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 49794642e01fSmrg ;; 49804642e01fSmrg esac 49814642e01fSmrg case "$xrpath " in 49824642e01fSmrg *" $dir "*) ;; 4983475c125cSmrg *) xrpath="$xrpath $dir" ;; 49844642e01fSmrg esac 49854642e01fSmrg continue 49864642e01fSmrg ;; 498705b261ecSmrg 49884642e01fSmrg -shared) 49894642e01fSmrg # The effects of -shared are defined in a previous loop. 49904642e01fSmrg continue 49914642e01fSmrg ;; 499205b261ecSmrg 49934642e01fSmrg -shrext) 49944642e01fSmrg prev=shrext 49954642e01fSmrg continue 49964642e01fSmrg ;; 499705b261ecSmrg 49984642e01fSmrg -static | -static-libtool-libs) 49994642e01fSmrg # The effects of -static are defined in a previous loop. 50004642e01fSmrg # We used to do the same as -all-static on platforms that 50014642e01fSmrg # didn't have a PIC flag, but the assumption that the effects 50024642e01fSmrg # would be equivalent was wrong. It would break on at least 50034642e01fSmrg # Digital Unix and AIX. 50044642e01fSmrg continue 50054642e01fSmrg ;; 500605b261ecSmrg 50074642e01fSmrg -thread-safe) 50084642e01fSmrg thread_safe=yes 50094642e01fSmrg continue 50104642e01fSmrg ;; 501105b261ecSmrg 50124642e01fSmrg -version-info) 50134642e01fSmrg prev=vinfo 50144642e01fSmrg continue 50154642e01fSmrg ;; 501605b261ecSmrg 50174642e01fSmrg -version-number) 50184642e01fSmrg prev=vinfo 50194642e01fSmrg vinfo_number=yes 50204642e01fSmrg continue 50214642e01fSmrg ;; 502205b261ecSmrg 50234642e01fSmrg -weak) 50244642e01fSmrg prev=weak 50254642e01fSmrg continue 50264642e01fSmrg ;; 502705b261ecSmrg 50284642e01fSmrg -Wc,*) 50294642e01fSmrg func_stripname '-Wc,' '' "$arg" 50304642e01fSmrg args=$func_stripname_result 50314642e01fSmrg arg= 50324642e01fSmrg save_ifs="$IFS"; IFS=',' 50334642e01fSmrg for flag in $args; do 50344642e01fSmrg IFS="$save_ifs" 50354642e01fSmrg func_quote_for_eval "$flag" 5036475c125cSmrg arg="$arg $func_quote_for_eval_result" 5037475c125cSmrg compiler_flags="$compiler_flags $func_quote_for_eval_result" 50384642e01fSmrg done 50394642e01fSmrg IFS="$save_ifs" 50404642e01fSmrg func_stripname ' ' '' "$arg" 50414642e01fSmrg arg=$func_stripname_result 50424642e01fSmrg ;; 504305b261ecSmrg 50444642e01fSmrg -Wl,*) 50454642e01fSmrg func_stripname '-Wl,' '' "$arg" 50464642e01fSmrg args=$func_stripname_result 50474642e01fSmrg arg= 50484642e01fSmrg save_ifs="$IFS"; IFS=',' 50494642e01fSmrg for flag in $args; do 50504642e01fSmrg IFS="$save_ifs" 50514642e01fSmrg func_quote_for_eval "$flag" 5052475c125cSmrg arg="$arg $wl$func_quote_for_eval_result" 5053475c125cSmrg compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 5054475c125cSmrg linker_flags="$linker_flags $func_quote_for_eval_result" 50554642e01fSmrg done 50564642e01fSmrg IFS="$save_ifs" 50574642e01fSmrg func_stripname ' ' '' "$arg" 50584642e01fSmrg arg=$func_stripname_result 50594642e01fSmrg ;; 506005b261ecSmrg 50614642e01fSmrg -Xcompiler) 50624642e01fSmrg prev=xcompiler 50634642e01fSmrg continue 50644642e01fSmrg ;; 506505b261ecSmrg 50664642e01fSmrg -Xlinker) 50674642e01fSmrg prev=xlinker 50684642e01fSmrg continue 50694642e01fSmrg ;; 507005b261ecSmrg 50714642e01fSmrg -XCClinker) 50724642e01fSmrg prev=xcclinker 50734642e01fSmrg continue 50744642e01fSmrg ;; 507505b261ecSmrg 50764642e01fSmrg # -msg_* for osf cc 50774642e01fSmrg -msg_*) 50784642e01fSmrg func_quote_for_eval "$arg" 50794642e01fSmrg arg="$func_quote_for_eval_result" 50804642e01fSmrg ;; 508105b261ecSmrg 50826747b715Smrg # Flags to be passed through unchanged, with rationale: 50836747b715Smrg # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 50846747b715Smrg # -r[0-9][0-9]* specify processor for the SGI compiler 50856747b715Smrg # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 50866747b715Smrg # +DA*, +DD* enable 64-bit mode for the HP compiler 50876747b715Smrg # -q* compiler args for the IBM compiler 50886747b715Smrg # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 50896747b715Smrg # -F/path path to uninstalled frameworks, gcc on darwin 50906747b715Smrg # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 50916747b715Smrg # @file GCC response files 50926747b715Smrg # -tp=* Portland pgcc target processor selection 50934642e01fSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5094475c125cSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) 50954642e01fSmrg func_quote_for_eval "$arg" 50964642e01fSmrg arg="$func_quote_for_eval_result" 50974642e01fSmrg func_append compile_command " $arg" 50984642e01fSmrg func_append finalize_command " $arg" 5099475c125cSmrg compiler_flags="$compiler_flags $arg" 51004642e01fSmrg continue 51014642e01fSmrg ;; 510205b261ecSmrg 51034642e01fSmrg # Some other compiler flag. 51044642e01fSmrg -* | +*) 51054642e01fSmrg func_quote_for_eval "$arg" 51064642e01fSmrg arg="$func_quote_for_eval_result" 51074642e01fSmrg ;; 510805b261ecSmrg 51094642e01fSmrg *.$objext) 51104642e01fSmrg # A standard object. 5111475c125cSmrg objs="$objs $arg" 51124642e01fSmrg ;; 511305b261ecSmrg 51144642e01fSmrg *.lo) 51154642e01fSmrg # A libtool-controlled object. 511605b261ecSmrg 51174642e01fSmrg # Check to see that this really is a libtool object. 51184642e01fSmrg if func_lalib_unsafe_p "$arg"; then 51194642e01fSmrg pic_object= 51204642e01fSmrg non_pic_object= 512105b261ecSmrg 51224642e01fSmrg # Read the .lo file 51234642e01fSmrg func_source "$arg" 512405b261ecSmrg 51254642e01fSmrg if test -z "$pic_object" || 51264642e01fSmrg test -z "$non_pic_object" || 51274642e01fSmrg test "$pic_object" = none && 51284642e01fSmrg test "$non_pic_object" = none; then 51294642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 51304642e01fSmrg fi 513105b261ecSmrg 51324642e01fSmrg # Extract subdirectory from the argument. 51334642e01fSmrg func_dirname "$arg" "/" "" 51344642e01fSmrg xdir="$func_dirname_result" 513505b261ecSmrg 51364642e01fSmrg if test "$pic_object" != none; then 51374642e01fSmrg # Prepend the subdirectory the object is found in. 51384642e01fSmrg pic_object="$xdir$pic_object" 513905b261ecSmrg 51404642e01fSmrg if test "$prev" = dlfiles; then 51414642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5142475c125cSmrg dlfiles="$dlfiles $pic_object" 51434642e01fSmrg prev= 51444642e01fSmrg continue 51454642e01fSmrg else 51464642e01fSmrg # If libtool objects are unsupported, then we need to preload. 51474642e01fSmrg prev=dlprefiles 51484642e01fSmrg fi 51494642e01fSmrg fi 515005b261ecSmrg 51514642e01fSmrg # CHECK ME: I think I busted this. -Ossama 51524642e01fSmrg if test "$prev" = dlprefiles; then 51534642e01fSmrg # Preload the old-style object. 5154475c125cSmrg dlprefiles="$dlprefiles $pic_object" 51554642e01fSmrg prev= 51564642e01fSmrg fi 515705b261ecSmrg 51584642e01fSmrg # A PIC object. 51594642e01fSmrg func_append libobjs " $pic_object" 51604642e01fSmrg arg="$pic_object" 51614642e01fSmrg fi 516205b261ecSmrg 51634642e01fSmrg # Non-PIC object. 51644642e01fSmrg if test "$non_pic_object" != none; then 51654642e01fSmrg # Prepend the subdirectory the object is found in. 51664642e01fSmrg non_pic_object="$xdir$non_pic_object" 516705b261ecSmrg 51684642e01fSmrg # A standard non-PIC object 51694642e01fSmrg func_append non_pic_objects " $non_pic_object" 51704642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 51714642e01fSmrg arg="$non_pic_object" 51724642e01fSmrg fi 51734642e01fSmrg else 51744642e01fSmrg # If the PIC object exists, use it instead. 51754642e01fSmrg # $xdir was prepended to $pic_object above. 51764642e01fSmrg non_pic_object="$pic_object" 51774642e01fSmrg func_append non_pic_objects " $non_pic_object" 51784642e01fSmrg fi 51794642e01fSmrg else 51804642e01fSmrg # Only an error if not doing a dry-run. 51814642e01fSmrg if $opt_dry_run; then 51824642e01fSmrg # Extract subdirectory from the argument. 51834642e01fSmrg func_dirname "$arg" "/" "" 51844642e01fSmrg xdir="$func_dirname_result" 51854642e01fSmrg 51864642e01fSmrg func_lo2o "$arg" 51874642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 51884642e01fSmrg non_pic_object=$xdir$func_lo2o_result 51894642e01fSmrg func_append libobjs " $pic_object" 51904642e01fSmrg func_append non_pic_objects " $non_pic_object" 51914642e01fSmrg else 51924642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 51934642e01fSmrg fi 51944642e01fSmrg fi 51954642e01fSmrg ;; 51964642e01fSmrg 51974642e01fSmrg *.$libext) 51984642e01fSmrg # An archive. 5199475c125cSmrg deplibs="$deplibs $arg" 5200475c125cSmrg old_deplibs="$old_deplibs $arg" 52014642e01fSmrg continue 52024642e01fSmrg ;; 52034642e01fSmrg 52044642e01fSmrg *.la) 52054642e01fSmrg # A libtool-controlled library. 52064642e01fSmrg 52074642e01fSmrg if test "$prev" = dlfiles; then 52084642e01fSmrg # This library was specified with -dlopen. 5209475c125cSmrg dlfiles="$dlfiles $arg" 52104642e01fSmrg prev= 52114642e01fSmrg elif test "$prev" = dlprefiles; then 52124642e01fSmrg # The library was specified with -dlpreopen. 5213475c125cSmrg dlprefiles="$dlprefiles $arg" 52144642e01fSmrg prev= 52154642e01fSmrg else 5216475c125cSmrg deplibs="$deplibs $arg" 52174642e01fSmrg fi 52184642e01fSmrg continue 52194642e01fSmrg ;; 52204642e01fSmrg 52214642e01fSmrg # Some other compiler argument. 52224642e01fSmrg *) 52234642e01fSmrg # Unknown arguments in both finalize_command and compile_command need 52244642e01fSmrg # to be aesthetically quoted because they are evaled later. 52254642e01fSmrg func_quote_for_eval "$arg" 52264642e01fSmrg arg="$func_quote_for_eval_result" 52274642e01fSmrg ;; 52284642e01fSmrg esac # arg 52294642e01fSmrg 52304642e01fSmrg # Now actually substitute the argument into the commands. 52314642e01fSmrg if test -n "$arg"; then 52324642e01fSmrg func_append compile_command " $arg" 52334642e01fSmrg func_append finalize_command " $arg" 52344642e01fSmrg fi 52354642e01fSmrg done # argument parsing loop 52364642e01fSmrg 52374642e01fSmrg test -n "$prev" && \ 52384642e01fSmrg func_fatal_help "the \`$prevarg' option requires an argument" 52394642e01fSmrg 52404642e01fSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 52414642e01fSmrg eval arg=\"$export_dynamic_flag_spec\" 52424642e01fSmrg func_append compile_command " $arg" 52434642e01fSmrg func_append finalize_command " $arg" 52444642e01fSmrg fi 52454642e01fSmrg 52464642e01fSmrg oldlibs= 52474642e01fSmrg # calculate the name of the file, without its directory 52484642e01fSmrg func_basename "$output" 52494642e01fSmrg outputname="$func_basename_result" 52504642e01fSmrg libobjs_save="$libobjs" 52514642e01fSmrg 52524642e01fSmrg if test -n "$shlibpath_var"; then 52534642e01fSmrg # get the directories listed in $shlibpath_var 52546747b715Smrg eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 52554642e01fSmrg else 52564642e01fSmrg shlib_search_path= 52574642e01fSmrg fi 52584642e01fSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 52594642e01fSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 52604642e01fSmrg 52614642e01fSmrg func_dirname "$output" "/" "" 52624642e01fSmrg output_objdir="$func_dirname_result$objdir" 52634642e01fSmrg # Create the object directory. 52644642e01fSmrg func_mkdir_p "$output_objdir" 52654642e01fSmrg 52664642e01fSmrg # Determine the type of output 52674642e01fSmrg case $output in 52684642e01fSmrg "") 52694642e01fSmrg func_fatal_help "you must specify an output file" 52704642e01fSmrg ;; 52714642e01fSmrg *.$libext) linkmode=oldlib ;; 52724642e01fSmrg *.lo | *.$objext) linkmode=obj ;; 52734642e01fSmrg *.la) linkmode=lib ;; 52744642e01fSmrg *) linkmode=prog ;; # Anything else should be a program. 52754642e01fSmrg esac 52764642e01fSmrg 52774642e01fSmrg specialdeplibs= 52784642e01fSmrg 52794642e01fSmrg libs= 52804642e01fSmrg # Find all interdependent deplibs by searching for libraries 52814642e01fSmrg # that are linked more than once (e.g. -la -lb -la) 52824642e01fSmrg for deplib in $deplibs; do 5283475c125cSmrg if $opt_duplicate_deps ; then 52844642e01fSmrg case "$libs " in 5285475c125cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 52864642e01fSmrg esac 52874642e01fSmrg fi 5288475c125cSmrg libs="$libs $deplib" 52894642e01fSmrg done 52904642e01fSmrg 52914642e01fSmrg if test "$linkmode" = lib; then 52924642e01fSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 52934642e01fSmrg 52944642e01fSmrg # Compute libraries that are listed more than once in $predeps 52954642e01fSmrg # $postdeps and mark them as special (i.e., whose duplicates are 52964642e01fSmrg # not to be eliminated). 52974642e01fSmrg pre_post_deps= 52984642e01fSmrg if $opt_duplicate_compiler_generated_deps; then 52994642e01fSmrg for pre_post_dep in $predeps $postdeps; do 53004642e01fSmrg case "$pre_post_deps " in 5301475c125cSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 53024642e01fSmrg esac 5303475c125cSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 53044642e01fSmrg done 53054642e01fSmrg fi 53064642e01fSmrg pre_post_deps= 53074642e01fSmrg fi 53084642e01fSmrg 53094642e01fSmrg deplibs= 53104642e01fSmrg newdependency_libs= 53114642e01fSmrg newlib_search_path= 53124642e01fSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 53134642e01fSmrg notinst_deplibs= # not-installed libtool libraries 53144642e01fSmrg notinst_path= # paths that contain not-installed libtool libraries 53154642e01fSmrg 53164642e01fSmrg case $linkmode in 53174642e01fSmrg lib) 53184642e01fSmrg passes="conv dlpreopen link" 53194642e01fSmrg for file in $dlfiles $dlprefiles; do 53204642e01fSmrg case $file in 53214642e01fSmrg *.la) ;; 53224642e01fSmrg *) 53234642e01fSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 53244642e01fSmrg ;; 53254642e01fSmrg esac 53264642e01fSmrg done 53274642e01fSmrg ;; 53284642e01fSmrg prog) 53294642e01fSmrg compile_deplibs= 53304642e01fSmrg finalize_deplibs= 53314642e01fSmrg alldeplibs=no 53324642e01fSmrg newdlfiles= 53334642e01fSmrg newdlprefiles= 53344642e01fSmrg passes="conv scan dlopen dlpreopen link" 53354642e01fSmrg ;; 53364642e01fSmrg *) passes="conv" 53374642e01fSmrg ;; 53384642e01fSmrg esac 53394642e01fSmrg 53404642e01fSmrg for pass in $passes; do 53414642e01fSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 53424642e01fSmrg # so that -L comes before libs that need it for instance... 53434642e01fSmrg if test "$linkmode,$pass" = "lib,link"; then 53444642e01fSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 53454642e01fSmrg ## order, and fix it there properly 53464642e01fSmrg tmp_deplibs= 53474642e01fSmrg for deplib in $deplibs; do 53484642e01fSmrg tmp_deplibs="$deplib $tmp_deplibs" 53494642e01fSmrg done 53504642e01fSmrg deplibs="$tmp_deplibs" 53514642e01fSmrg fi 53524642e01fSmrg 53534642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 53544642e01fSmrg test "$linkmode,$pass" = "prog,scan"; then 53554642e01fSmrg libs="$deplibs" 53564642e01fSmrg deplibs= 53574642e01fSmrg fi 53584642e01fSmrg if test "$linkmode" = prog; then 53594642e01fSmrg case $pass in 53604642e01fSmrg dlopen) libs="$dlfiles" ;; 53614642e01fSmrg dlpreopen) libs="$dlprefiles" ;; 53626747b715Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 53634642e01fSmrg esac 53644642e01fSmrg fi 53654642e01fSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 53664642e01fSmrg # Collect and forward deplibs of preopened libtool libs 53674642e01fSmrg for lib in $dlprefiles; do 53684642e01fSmrg # Ignore non-libtool-libs 53694642e01fSmrg dependency_libs= 53704642e01fSmrg case $lib in 5371475c125cSmrg *.la) func_source "$lib" ;; 53724642e01fSmrg esac 53734642e01fSmrg 53744642e01fSmrg # Collect preopened libtool deplibs, except any this library 53754642e01fSmrg # has declared as weak libs 53764642e01fSmrg for deplib in $dependency_libs; do 53776747b715Smrg func_basename "$deplib" 53786747b715Smrg deplib_base=$func_basename_result 53794642e01fSmrg case " $weak_libs " in 53804642e01fSmrg *" $deplib_base "*) ;; 5381475c125cSmrg *) deplibs="$deplibs $deplib" ;; 53824642e01fSmrg esac 53834642e01fSmrg done 53844642e01fSmrg done 53854642e01fSmrg libs="$dlprefiles" 53864642e01fSmrg fi 53874642e01fSmrg if test "$pass" = dlopen; then 53884642e01fSmrg # Collect dlpreopened libraries 53894642e01fSmrg save_deplibs="$deplibs" 53904642e01fSmrg deplibs= 53914642e01fSmrg fi 53924642e01fSmrg 53934642e01fSmrg for deplib in $libs; do 53944642e01fSmrg lib= 53954642e01fSmrg found=no 53964642e01fSmrg case $deplib in 53974642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 53984642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 53994642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 54004642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 54014642e01fSmrg else 5402475c125cSmrg compiler_flags="$compiler_flags $deplib" 54034642e01fSmrg if test "$linkmode" = lib ; then 54044642e01fSmrg case "$new_inherited_linker_flags " in 54054642e01fSmrg *" $deplib "*) ;; 5406475c125cSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 54074642e01fSmrg esac 54084642e01fSmrg fi 54094642e01fSmrg fi 54104642e01fSmrg continue 54114642e01fSmrg ;; 54124642e01fSmrg -l*) 54134642e01fSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 54144642e01fSmrg func_warning "\`-l' is ignored for archives/objects" 54154642e01fSmrg continue 54164642e01fSmrg fi 54174642e01fSmrg func_stripname '-l' '' "$deplib" 54184642e01fSmrg name=$func_stripname_result 54194642e01fSmrg if test "$linkmode" = lib; then 54204642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 54214642e01fSmrg else 54224642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 54234642e01fSmrg fi 54244642e01fSmrg for searchdir in $searchdirs; do 54254642e01fSmrg for search_ext in .la $std_shrext .so .a; do 54264642e01fSmrg # Search the libtool library 54274642e01fSmrg lib="$searchdir/lib${name}${search_ext}" 54284642e01fSmrg if test -f "$lib"; then 54294642e01fSmrg if test "$search_ext" = ".la"; then 54304642e01fSmrg found=yes 54314642e01fSmrg else 54324642e01fSmrg found=no 54334642e01fSmrg fi 54344642e01fSmrg break 2 54354642e01fSmrg fi 54364642e01fSmrg done 54374642e01fSmrg done 54384642e01fSmrg if test "$found" != yes; then 54394642e01fSmrg # deplib doesn't seem to be a libtool library 54404642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 54414642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 54424642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 54434642e01fSmrg else 54444642e01fSmrg deplibs="$deplib $deplibs" 54454642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 54464642e01fSmrg fi 54474642e01fSmrg continue 54484642e01fSmrg else # deplib is a libtool library 54494642e01fSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 54504642e01fSmrg # We need to do some special things here, and not later. 54514642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 54524642e01fSmrg case " $predeps $postdeps " in 54534642e01fSmrg *" $deplib "*) 54544642e01fSmrg if func_lalib_p "$lib"; then 54554642e01fSmrg library_names= 54564642e01fSmrg old_library= 54574642e01fSmrg func_source "$lib" 54584642e01fSmrg for l in $old_library $library_names; do 54594642e01fSmrg ll="$l" 54604642e01fSmrg done 54614642e01fSmrg if test "X$ll" = "X$old_library" ; then # only static version available 54624642e01fSmrg found=no 54634642e01fSmrg func_dirname "$lib" "" "." 54644642e01fSmrg ladir="$func_dirname_result" 54654642e01fSmrg lib=$ladir/$old_library 54664642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 54674642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 54684642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 54694642e01fSmrg else 54704642e01fSmrg deplibs="$deplib $deplibs" 54714642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 54724642e01fSmrg fi 54734642e01fSmrg continue 54744642e01fSmrg fi 54754642e01fSmrg fi 54764642e01fSmrg ;; 54774642e01fSmrg *) ;; 54784642e01fSmrg esac 54794642e01fSmrg fi 54804642e01fSmrg fi 54814642e01fSmrg ;; # -l 54824642e01fSmrg *.ltframework) 54834642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 54844642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 54854642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 54864642e01fSmrg else 54874642e01fSmrg deplibs="$deplib $deplibs" 54884642e01fSmrg if test "$linkmode" = lib ; then 54894642e01fSmrg case "$new_inherited_linker_flags " in 54904642e01fSmrg *" $deplib "*) ;; 5491475c125cSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 54924642e01fSmrg esac 54934642e01fSmrg fi 54944642e01fSmrg fi 54954642e01fSmrg continue 54964642e01fSmrg ;; 54974642e01fSmrg -L*) 54984642e01fSmrg case $linkmode in 54994642e01fSmrg lib) 55004642e01fSmrg deplibs="$deplib $deplibs" 55014642e01fSmrg test "$pass" = conv && continue 55024642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 55034642e01fSmrg func_stripname '-L' '' "$deplib" 5504475c125cSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 55054642e01fSmrg ;; 55064642e01fSmrg prog) 55074642e01fSmrg if test "$pass" = conv; then 55084642e01fSmrg deplibs="$deplib $deplibs" 55094642e01fSmrg continue 55104642e01fSmrg fi 55114642e01fSmrg if test "$pass" = scan; then 55124642e01fSmrg deplibs="$deplib $deplibs" 55134642e01fSmrg else 55144642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 55154642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 55164642e01fSmrg fi 55174642e01fSmrg func_stripname '-L' '' "$deplib" 5518475c125cSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 55194642e01fSmrg ;; 55204642e01fSmrg *) 55214642e01fSmrg func_warning "\`-L' is ignored for archives/objects" 55224642e01fSmrg ;; 55234642e01fSmrg esac # linkmode 55244642e01fSmrg continue 55254642e01fSmrg ;; # -L 55264642e01fSmrg -R*) 55274642e01fSmrg if test "$pass" = link; then 55284642e01fSmrg func_stripname '-R' '' "$deplib" 5529475c125cSmrg dir=$func_stripname_result 55304642e01fSmrg # Make sure the xrpath contains only unique directories. 55314642e01fSmrg case "$xrpath " in 55324642e01fSmrg *" $dir "*) ;; 5533475c125cSmrg *) xrpath="$xrpath $dir" ;; 55344642e01fSmrg esac 55354642e01fSmrg fi 55364642e01fSmrg deplibs="$deplib $deplibs" 55374642e01fSmrg continue 55384642e01fSmrg ;; 5539475c125cSmrg *.la) lib="$deplib" ;; 55404642e01fSmrg *.$libext) 55414642e01fSmrg if test "$pass" = conv; then 55424642e01fSmrg deplibs="$deplib $deplibs" 55434642e01fSmrg continue 55444642e01fSmrg fi 55454642e01fSmrg case $linkmode in 55464642e01fSmrg lib) 55474642e01fSmrg # Linking convenience modules into shared libraries is allowed, 55484642e01fSmrg # but linking other static libraries is non-portable. 55494642e01fSmrg case " $dlpreconveniencelibs " in 55504642e01fSmrg *" $deplib "*) ;; 55514642e01fSmrg *) 55524642e01fSmrg valid_a_lib=no 55534642e01fSmrg case $deplibs_check_method in 55544642e01fSmrg match_pattern*) 55554642e01fSmrg set dummy $deplibs_check_method; shift 55564642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 55576747b715Smrg if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 55584642e01fSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 55594642e01fSmrg valid_a_lib=yes 55604642e01fSmrg fi 55614642e01fSmrg ;; 55624642e01fSmrg pass_all) 55634642e01fSmrg valid_a_lib=yes 55644642e01fSmrg ;; 55654642e01fSmrg esac 55664642e01fSmrg if test "$valid_a_lib" != yes; then 55676747b715Smrg echo 55684642e01fSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 55696747b715Smrg echo "*** I have the capability to make that library automatically link in when" 55706747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 55716747b715Smrg echo "*** shared version of the library, which you do not appear to have" 55726747b715Smrg echo "*** because the file extensions .$libext of this argument makes me believe" 55736747b715Smrg echo "*** that it is just a static archive that I should not use here." 55744642e01fSmrg else 55756747b715Smrg echo 55764642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the" 55774642e01fSmrg $ECHO "*** static library $deplib is not portable!" 55784642e01fSmrg deplibs="$deplib $deplibs" 55794642e01fSmrg fi 55804642e01fSmrg ;; 55814642e01fSmrg esac 55824642e01fSmrg continue 55834642e01fSmrg ;; 55844642e01fSmrg prog) 55854642e01fSmrg if test "$pass" != link; then 55864642e01fSmrg deplibs="$deplib $deplibs" 55874642e01fSmrg else 55884642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 55894642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 55904642e01fSmrg fi 55914642e01fSmrg continue 55924642e01fSmrg ;; 55934642e01fSmrg esac # linkmode 55944642e01fSmrg ;; # *.$libext 55954642e01fSmrg *.lo | *.$objext) 55964642e01fSmrg if test "$pass" = conv; then 55974642e01fSmrg deplibs="$deplib $deplibs" 55984642e01fSmrg elif test "$linkmode" = prog; then 55994642e01fSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 56004642e01fSmrg # If there is no dlopen support or we're linking statically, 56014642e01fSmrg # we need to preload. 5602475c125cSmrg newdlprefiles="$newdlprefiles $deplib" 56034642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 56044642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 56054642e01fSmrg else 5606475c125cSmrg newdlfiles="$newdlfiles $deplib" 56074642e01fSmrg fi 56084642e01fSmrg fi 56094642e01fSmrg continue 56104642e01fSmrg ;; 56114642e01fSmrg %DEPLIBS%) 56124642e01fSmrg alldeplibs=yes 56134642e01fSmrg continue 56144642e01fSmrg ;; 56154642e01fSmrg esac # case $deplib 56164642e01fSmrg 56174642e01fSmrg if test "$found" = yes || test -f "$lib"; then : 56184642e01fSmrg else 56194642e01fSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 56204642e01fSmrg fi 56214642e01fSmrg 56224642e01fSmrg # Check to see that this really is a libtool archive. 56234642e01fSmrg func_lalib_unsafe_p "$lib" \ 56244642e01fSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 56254642e01fSmrg 56264642e01fSmrg func_dirname "$lib" "" "." 56274642e01fSmrg ladir="$func_dirname_result" 56284642e01fSmrg 56294642e01fSmrg dlname= 56304642e01fSmrg dlopen= 56314642e01fSmrg dlpreopen= 56324642e01fSmrg libdir= 56334642e01fSmrg library_names= 56344642e01fSmrg old_library= 56354642e01fSmrg inherited_linker_flags= 56364642e01fSmrg # If the library was installed with an old release of libtool, 56374642e01fSmrg # it will not redefine variables installed, or shouldnotlink 56384642e01fSmrg installed=yes 56394642e01fSmrg shouldnotlink=no 56404642e01fSmrg avoidtemprpath= 56414642e01fSmrg 56424642e01fSmrg 56434642e01fSmrg # Read the .la file 56444642e01fSmrg func_source "$lib" 56454642e01fSmrg 56464642e01fSmrg # Convert "-framework foo" to "foo.ltframework" 56474642e01fSmrg if test -n "$inherited_linker_flags"; then 56486747b715Smrg tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 56494642e01fSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 56504642e01fSmrg case " $new_inherited_linker_flags " in 56514642e01fSmrg *" $tmp_inherited_linker_flag "*) ;; 5652475c125cSmrg *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 56534642e01fSmrg esac 56544642e01fSmrg done 56554642e01fSmrg fi 56566747b715Smrg dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 56574642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 56584642e01fSmrg test "$linkmode,$pass" = "prog,scan" || 56594642e01fSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 5660475c125cSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 5661475c125cSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 56624642e01fSmrg fi 56634642e01fSmrg 56644642e01fSmrg if test "$pass" = conv; then 56654642e01fSmrg # Only check for convenience libraries 56664642e01fSmrg deplibs="$lib $deplibs" 56674642e01fSmrg if test -z "$libdir"; then 56684642e01fSmrg if test -z "$old_library"; then 56694642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 56704642e01fSmrg fi 56714642e01fSmrg # It is a libtool convenience library, so add in its objects. 5672475c125cSmrg convenience="$convenience $ladir/$objdir/$old_library" 5673475c125cSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 56744642e01fSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 56754642e01fSmrg func_fatal_error "\`$lib' is not a convenience library" 56764642e01fSmrg fi 56776747b715Smrg tmp_libs= 56786747b715Smrg for deplib in $dependency_libs; do 56796747b715Smrg deplibs="$deplib $deplibs" 5680475c125cSmrg if $opt_duplicate_deps ; then 56816747b715Smrg case "$tmp_libs " in 5682475c125cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 56836747b715Smrg esac 56846747b715Smrg fi 5685475c125cSmrg tmp_libs="$tmp_libs $deplib" 56866747b715Smrg done 56874642e01fSmrg continue 56884642e01fSmrg fi # $pass = conv 56894642e01fSmrg 56904642e01fSmrg 56914642e01fSmrg # Get the name of the library we link against. 56924642e01fSmrg linklib= 5693475c125cSmrg for l in $old_library $library_names; do 5694475c125cSmrg linklib="$l" 5695475c125cSmrg done 56964642e01fSmrg if test -z "$linklib"; then 56974642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 56984642e01fSmrg fi 56994642e01fSmrg 57004642e01fSmrg # This library was specified with -dlopen. 57014642e01fSmrg if test "$pass" = dlopen; then 57024642e01fSmrg if test -z "$libdir"; then 57034642e01fSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 57044642e01fSmrg fi 57054642e01fSmrg if test -z "$dlname" || 57064642e01fSmrg test "$dlopen_support" != yes || 57074642e01fSmrg test "$build_libtool_libs" = no; then 57084642e01fSmrg # If there is no dlname, no dlopen support or we're linking 57094642e01fSmrg # statically, we need to preload. We also need to preload any 57104642e01fSmrg # dependent libraries so libltdl's deplib preloader doesn't 57114642e01fSmrg # bomb out in the load deplibs phase. 5712475c125cSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 57134642e01fSmrg else 5714475c125cSmrg newdlfiles="$newdlfiles $lib" 57154642e01fSmrg fi 57164642e01fSmrg continue 57174642e01fSmrg fi # $pass = dlopen 57184642e01fSmrg 57194642e01fSmrg # We need an absolute path. 57204642e01fSmrg case $ladir in 57214642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 57224642e01fSmrg *) 57234642e01fSmrg abs_ladir=`cd "$ladir" && pwd` 57244642e01fSmrg if test -z "$abs_ladir"; then 57254642e01fSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 57264642e01fSmrg func_warning "passing it literally to the linker, although it might fail" 57274642e01fSmrg abs_ladir="$ladir" 57284642e01fSmrg fi 57294642e01fSmrg ;; 57304642e01fSmrg esac 57314642e01fSmrg func_basename "$lib" 57324642e01fSmrg laname="$func_basename_result" 57334642e01fSmrg 57344642e01fSmrg # Find the relevant object directory and library name. 57354642e01fSmrg if test "X$installed" = Xyes; then 5736475c125cSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 57374642e01fSmrg func_warning "library \`$lib' was moved." 57384642e01fSmrg dir="$ladir" 57394642e01fSmrg absdir="$abs_ladir" 57404642e01fSmrg libdir="$abs_ladir" 57414642e01fSmrg else 5742475c125cSmrg dir="$libdir" 5743475c125cSmrg absdir="$libdir" 57444642e01fSmrg fi 57454642e01fSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 57464642e01fSmrg else 57474642e01fSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 57484642e01fSmrg dir="$ladir" 57494642e01fSmrg absdir="$abs_ladir" 57504642e01fSmrg # Remove this search path later 5751475c125cSmrg notinst_path="$notinst_path $abs_ladir" 57524642e01fSmrg else 57534642e01fSmrg dir="$ladir/$objdir" 57544642e01fSmrg absdir="$abs_ladir/$objdir" 57554642e01fSmrg # Remove this search path later 5756475c125cSmrg notinst_path="$notinst_path $abs_ladir" 57574642e01fSmrg fi 57584642e01fSmrg fi # $installed = yes 57594642e01fSmrg func_stripname 'lib' '.la' "$laname" 57604642e01fSmrg name=$func_stripname_result 57614642e01fSmrg 57624642e01fSmrg # This library was specified with -dlpreopen. 57634642e01fSmrg if test "$pass" = dlpreopen; then 57644642e01fSmrg if test -z "$libdir" && test "$linkmode" = prog; then 57654642e01fSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 57664642e01fSmrg fi 5767475c125cSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 5768475c125cSmrg # are required to link). 5769475c125cSmrg if test -n "$old_library"; then 5770475c125cSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 5771475c125cSmrg # Keep a list of preopened convenience libraries to check 5772475c125cSmrg # that they are being used correctly in the link pass. 5773475c125cSmrg test -z "$libdir" && \ 5774475c125cSmrg dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 5775475c125cSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 5776475c125cSmrg elif test -n "$dlname"; then 5777475c125cSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 5778475c125cSmrg else 5779475c125cSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 5780475c125cSmrg fi 57814642e01fSmrg fi # $pass = dlpreopen 57824642e01fSmrg 57834642e01fSmrg if test -z "$libdir"; then 57844642e01fSmrg # Link the convenience library 57854642e01fSmrg if test "$linkmode" = lib; then 57864642e01fSmrg deplibs="$dir/$old_library $deplibs" 57874642e01fSmrg elif test "$linkmode,$pass" = "prog,link"; then 57884642e01fSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 57894642e01fSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 57904642e01fSmrg else 57914642e01fSmrg deplibs="$lib $deplibs" # used for prog,scan pass 57924642e01fSmrg fi 57934642e01fSmrg continue 57944642e01fSmrg fi 57954642e01fSmrg 57964642e01fSmrg 57974642e01fSmrg if test "$linkmode" = prog && test "$pass" != link; then 5798475c125cSmrg newlib_search_path="$newlib_search_path $ladir" 57994642e01fSmrg deplibs="$lib $deplibs" 58004642e01fSmrg 58014642e01fSmrg linkalldeplibs=no 58024642e01fSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 58034642e01fSmrg test "$build_libtool_libs" = no; then 58044642e01fSmrg linkalldeplibs=yes 58054642e01fSmrg fi 58064642e01fSmrg 58074642e01fSmrg tmp_libs= 58084642e01fSmrg for deplib in $dependency_libs; do 58094642e01fSmrg case $deplib in 58104642e01fSmrg -L*) func_stripname '-L' '' "$deplib" 5811475c125cSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 58124642e01fSmrg ;; 58134642e01fSmrg esac 58144642e01fSmrg # Need to link against all dependency_libs? 58154642e01fSmrg if test "$linkalldeplibs" = yes; then 58164642e01fSmrg deplibs="$deplib $deplibs" 58174642e01fSmrg else 58184642e01fSmrg # Need to hardcode shared library paths 58194642e01fSmrg # or/and link against static libraries 58204642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 58214642e01fSmrg fi 5822475c125cSmrg if $opt_duplicate_deps ; then 58234642e01fSmrg case "$tmp_libs " in 5824475c125cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58254642e01fSmrg esac 58264642e01fSmrg fi 5827475c125cSmrg tmp_libs="$tmp_libs $deplib" 58284642e01fSmrg done # for deplib 58294642e01fSmrg continue 58304642e01fSmrg fi # $linkmode = prog... 58314642e01fSmrg 58324642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 58334642e01fSmrg if test -n "$library_names" && 58344642e01fSmrg { { test "$prefer_static_libs" = no || 58354642e01fSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 58364642e01fSmrg test -z "$old_library"; }; then 58374642e01fSmrg # We need to hardcode the library path 58384642e01fSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 58394642e01fSmrg # Make sure the rpath contains only unique directories. 58404642e01fSmrg case "$temp_rpath:" in 58414642e01fSmrg *"$absdir:"*) ;; 5842475c125cSmrg *) temp_rpath="$temp_rpath$absdir:" ;; 58434642e01fSmrg esac 58444642e01fSmrg fi 58454642e01fSmrg 58464642e01fSmrg # Hardcode the library path. 58474642e01fSmrg # Skip directories that are in the system default run-time 58484642e01fSmrg # search path. 58494642e01fSmrg case " $sys_lib_dlsearch_path " in 58504642e01fSmrg *" $absdir "*) ;; 58514642e01fSmrg *) 58524642e01fSmrg case "$compile_rpath " in 58534642e01fSmrg *" $absdir "*) ;; 5854475c125cSmrg *) compile_rpath="$compile_rpath $absdir" 58554642e01fSmrg esac 58564642e01fSmrg ;; 58574642e01fSmrg esac 58584642e01fSmrg case " $sys_lib_dlsearch_path " in 58594642e01fSmrg *" $libdir "*) ;; 58604642e01fSmrg *) 58614642e01fSmrg case "$finalize_rpath " in 58624642e01fSmrg *" $libdir "*) ;; 5863475c125cSmrg *) finalize_rpath="$finalize_rpath $libdir" 58644642e01fSmrg esac 58654642e01fSmrg ;; 58664642e01fSmrg esac 58674642e01fSmrg fi # $linkmode,$pass = prog,link... 58684642e01fSmrg 58694642e01fSmrg if test "$alldeplibs" = yes && 58704642e01fSmrg { test "$deplibs_check_method" = pass_all || 58714642e01fSmrg { test "$build_libtool_libs" = yes && 58724642e01fSmrg test -n "$library_names"; }; }; then 58734642e01fSmrg # We only need to search for static libraries 58744642e01fSmrg continue 58754642e01fSmrg fi 58764642e01fSmrg fi 58774642e01fSmrg 58784642e01fSmrg link_static=no # Whether the deplib will be linked statically 58794642e01fSmrg use_static_libs=$prefer_static_libs 58804642e01fSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 58814642e01fSmrg use_static_libs=no 58824642e01fSmrg fi 58834642e01fSmrg if test -n "$library_names" && 58844642e01fSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 58854642e01fSmrg case $host in 58864642e01fSmrg *cygwin* | *mingw* | *cegcc*) 58874642e01fSmrg # No point in relinking DLLs because paths are not encoded 5888475c125cSmrg notinst_deplibs="$notinst_deplibs $lib" 58894642e01fSmrg need_relink=no 58904642e01fSmrg ;; 58914642e01fSmrg *) 58924642e01fSmrg if test "$installed" = no; then 5893475c125cSmrg notinst_deplibs="$notinst_deplibs $lib" 58944642e01fSmrg need_relink=yes 58954642e01fSmrg fi 58964642e01fSmrg ;; 58974642e01fSmrg esac 58984642e01fSmrg # This is a shared library 58994642e01fSmrg 59004642e01fSmrg # Warn about portability, can't link against -module's on some 59014642e01fSmrg # systems (darwin). Don't bleat about dlopened modules though! 59024642e01fSmrg dlopenmodule="" 59034642e01fSmrg for dlpremoduletest in $dlprefiles; do 59044642e01fSmrg if test "X$dlpremoduletest" = "X$lib"; then 59054642e01fSmrg dlopenmodule="$dlpremoduletest" 59064642e01fSmrg break 59074642e01fSmrg fi 59084642e01fSmrg done 59094642e01fSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 59106747b715Smrg echo 59114642e01fSmrg if test "$linkmode" = prog; then 59124642e01fSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 59134642e01fSmrg else 59144642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 59154642e01fSmrg fi 59164642e01fSmrg $ECHO "*** $linklib is not portable!" 59174642e01fSmrg fi 59184642e01fSmrg if test "$linkmode" = lib && 59194642e01fSmrg test "$hardcode_into_libs" = yes; then 59204642e01fSmrg # Hardcode the library path. 59214642e01fSmrg # Skip directories that are in the system default run-time 59224642e01fSmrg # search path. 59234642e01fSmrg case " $sys_lib_dlsearch_path " in 59244642e01fSmrg *" $absdir "*) ;; 59254642e01fSmrg *) 59264642e01fSmrg case "$compile_rpath " in 59274642e01fSmrg *" $absdir "*) ;; 5928475c125cSmrg *) compile_rpath="$compile_rpath $absdir" 59294642e01fSmrg esac 59304642e01fSmrg ;; 59314642e01fSmrg esac 59324642e01fSmrg case " $sys_lib_dlsearch_path " in 59334642e01fSmrg *" $libdir "*) ;; 59344642e01fSmrg *) 59354642e01fSmrg case "$finalize_rpath " in 59364642e01fSmrg *" $libdir "*) ;; 5937475c125cSmrg *) finalize_rpath="$finalize_rpath $libdir" 59384642e01fSmrg esac 59394642e01fSmrg ;; 59404642e01fSmrg esac 59414642e01fSmrg fi 59424642e01fSmrg 59434642e01fSmrg if test -n "$old_archive_from_expsyms_cmds"; then 59444642e01fSmrg # figure out the soname 59454642e01fSmrg set dummy $library_names 59464642e01fSmrg shift 59474642e01fSmrg realname="$1" 59484642e01fSmrg shift 59494642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 59504642e01fSmrg # use dlname if we got it. it's perfectly good, no? 59514642e01fSmrg if test -n "$dlname"; then 59524642e01fSmrg soname="$dlname" 59534642e01fSmrg elif test -n "$soname_spec"; then 59544642e01fSmrg # bleh windows 59554642e01fSmrg case $host in 59564642e01fSmrg *cygwin* | mingw* | *cegcc*) 59574642e01fSmrg func_arith $current - $age 59584642e01fSmrg major=$func_arith_result 59594642e01fSmrg versuffix="-$major" 59604642e01fSmrg ;; 59614642e01fSmrg esac 59624642e01fSmrg eval soname=\"$soname_spec\" 59634642e01fSmrg else 59644642e01fSmrg soname="$realname" 59654642e01fSmrg fi 59664642e01fSmrg 59674642e01fSmrg # Make a new name for the extract_expsyms_cmds to use 59684642e01fSmrg soroot="$soname" 59694642e01fSmrg func_basename "$soroot" 59704642e01fSmrg soname="$func_basename_result" 59714642e01fSmrg func_stripname 'lib' '.dll' "$soname" 59724642e01fSmrg newlib=libimp-$func_stripname_result.a 59734642e01fSmrg 59744642e01fSmrg # If the library has no export list, then create one now 59754642e01fSmrg if test -f "$output_objdir/$soname-def"; then : 59764642e01fSmrg else 59774642e01fSmrg func_verbose "extracting exported symbol list from \`$soname'" 59784642e01fSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 59794642e01fSmrg fi 59804642e01fSmrg 59814642e01fSmrg # Create $newlib 59824642e01fSmrg if test -f "$output_objdir/$newlib"; then :; else 59834642e01fSmrg func_verbose "generating import library for \`$soname'" 59844642e01fSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 59854642e01fSmrg fi 59864642e01fSmrg # make sure the library variables are pointing to the new library 59874642e01fSmrg dir=$output_objdir 59884642e01fSmrg linklib=$newlib 59894642e01fSmrg fi # test -n "$old_archive_from_expsyms_cmds" 59904642e01fSmrg 5991475c125cSmrg if test "$linkmode" = prog || test "$mode" != relink; then 59924642e01fSmrg add_shlibpath= 59934642e01fSmrg add_dir= 59944642e01fSmrg add= 59954642e01fSmrg lib_linked=yes 59964642e01fSmrg case $hardcode_action in 59974642e01fSmrg immediate | unsupported) 59984642e01fSmrg if test "$hardcode_direct" = no; then 59994642e01fSmrg add="$dir/$linklib" 60004642e01fSmrg case $host in 60014642e01fSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 60024642e01fSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 60034642e01fSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 60044642e01fSmrg *-*-unixware7*) add_dir="-L$dir" ;; 60054642e01fSmrg *-*-darwin* ) 60064642e01fSmrg # if the lib is a (non-dlopened) module then we can not 60074642e01fSmrg # link against it, someone is ignoring the earlier warnings 60084642e01fSmrg if /usr/bin/file -L $add 2> /dev/null | 60094642e01fSmrg $GREP ": [^:]* bundle" >/dev/null ; then 60104642e01fSmrg if test "X$dlopenmodule" != "X$lib"; then 60114642e01fSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 60124642e01fSmrg if test -z "$old_library" ; then 60136747b715Smrg echo 60146747b715Smrg echo "*** And there doesn't seem to be a static archive available" 60156747b715Smrg echo "*** The link will probably fail, sorry" 60164642e01fSmrg else 60174642e01fSmrg add="$dir/$old_library" 60184642e01fSmrg fi 60194642e01fSmrg elif test -n "$old_library"; then 60204642e01fSmrg add="$dir/$old_library" 60214642e01fSmrg fi 60224642e01fSmrg fi 60234642e01fSmrg esac 60244642e01fSmrg elif test "$hardcode_minus_L" = no; then 60254642e01fSmrg case $host in 60264642e01fSmrg *-*-sunos*) add_shlibpath="$dir" ;; 60274642e01fSmrg esac 60284642e01fSmrg add_dir="-L$dir" 60294642e01fSmrg add="-l$name" 60304642e01fSmrg elif test "$hardcode_shlibpath_var" = no; then 60314642e01fSmrg add_shlibpath="$dir" 60324642e01fSmrg add="-l$name" 60334642e01fSmrg else 60344642e01fSmrg lib_linked=no 60354642e01fSmrg fi 60364642e01fSmrg ;; 60374642e01fSmrg relink) 60384642e01fSmrg if test "$hardcode_direct" = yes && 60394642e01fSmrg test "$hardcode_direct_absolute" = no; then 60404642e01fSmrg add="$dir/$linklib" 60414642e01fSmrg elif test "$hardcode_minus_L" = yes; then 60424642e01fSmrg add_dir="-L$dir" 60434642e01fSmrg # Try looking first in the location we're being installed to. 60444642e01fSmrg if test -n "$inst_prefix_dir"; then 60454642e01fSmrg case $libdir in 60464642e01fSmrg [\\/]*) 6047475c125cSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 60484642e01fSmrg ;; 60494642e01fSmrg esac 60504642e01fSmrg fi 60514642e01fSmrg add="-l$name" 60524642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 60534642e01fSmrg add_shlibpath="$dir" 60544642e01fSmrg add="-l$name" 60554642e01fSmrg else 60564642e01fSmrg lib_linked=no 60574642e01fSmrg fi 60584642e01fSmrg ;; 60594642e01fSmrg *) lib_linked=no ;; 60604642e01fSmrg esac 60614642e01fSmrg 60624642e01fSmrg if test "$lib_linked" != yes; then 60634642e01fSmrg func_fatal_configuration "unsupported hardcode properties" 60644642e01fSmrg fi 60654642e01fSmrg 60664642e01fSmrg if test -n "$add_shlibpath"; then 60674642e01fSmrg case :$compile_shlibpath: in 60684642e01fSmrg *":$add_shlibpath:"*) ;; 6069475c125cSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 60704642e01fSmrg esac 60714642e01fSmrg fi 60724642e01fSmrg if test "$linkmode" = prog; then 60734642e01fSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 60744642e01fSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 60754642e01fSmrg else 60764642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 60774642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 60784642e01fSmrg if test "$hardcode_direct" != yes && 60794642e01fSmrg test "$hardcode_minus_L" != yes && 60804642e01fSmrg test "$hardcode_shlibpath_var" = yes; then 60814642e01fSmrg case :$finalize_shlibpath: in 60824642e01fSmrg *":$libdir:"*) ;; 6083475c125cSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 60844642e01fSmrg esac 60854642e01fSmrg fi 60864642e01fSmrg fi 60874642e01fSmrg fi 60884642e01fSmrg 6089475c125cSmrg if test "$linkmode" = prog || test "$mode" = relink; then 60904642e01fSmrg add_shlibpath= 60914642e01fSmrg add_dir= 60924642e01fSmrg add= 60934642e01fSmrg # Finalize command for both is simple: just hardcode it. 60944642e01fSmrg if test "$hardcode_direct" = yes && 60954642e01fSmrg test "$hardcode_direct_absolute" = no; then 60964642e01fSmrg add="$libdir/$linklib" 60974642e01fSmrg elif test "$hardcode_minus_L" = yes; then 60984642e01fSmrg add_dir="-L$libdir" 60994642e01fSmrg add="-l$name" 61004642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 61014642e01fSmrg case :$finalize_shlibpath: in 61024642e01fSmrg *":$libdir:"*) ;; 6103475c125cSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 61044642e01fSmrg esac 61054642e01fSmrg add="-l$name" 61064642e01fSmrg elif test "$hardcode_automatic" = yes; then 61074642e01fSmrg if test -n "$inst_prefix_dir" && 61084642e01fSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 61094642e01fSmrg add="$inst_prefix_dir$libdir/$linklib" 61104642e01fSmrg else 61114642e01fSmrg add="$libdir/$linklib" 61124642e01fSmrg fi 61134642e01fSmrg else 61144642e01fSmrg # We cannot seem to hardcode it, guess we'll fake it. 61154642e01fSmrg add_dir="-L$libdir" 61164642e01fSmrg # Try looking first in the location we're being installed to. 61174642e01fSmrg if test -n "$inst_prefix_dir"; then 61184642e01fSmrg case $libdir in 61194642e01fSmrg [\\/]*) 6120475c125cSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 61214642e01fSmrg ;; 61224642e01fSmrg esac 61234642e01fSmrg fi 61244642e01fSmrg add="-l$name" 61254642e01fSmrg fi 61264642e01fSmrg 61274642e01fSmrg if test "$linkmode" = prog; then 61284642e01fSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 61294642e01fSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 61304642e01fSmrg else 61314642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 61324642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 61334642e01fSmrg fi 61344642e01fSmrg fi 61354642e01fSmrg elif test "$linkmode" = prog; then 61364642e01fSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 61374642e01fSmrg # is not unsupported. This is valid on all known static and 61384642e01fSmrg # shared platforms. 61394642e01fSmrg if test "$hardcode_direct" != unsupported; then 61404642e01fSmrg test -n "$old_library" && linklib="$old_library" 61414642e01fSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 61424642e01fSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 61434642e01fSmrg else 61444642e01fSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 61454642e01fSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 61464642e01fSmrg fi 61474642e01fSmrg elif test "$build_libtool_libs" = yes; then 61484642e01fSmrg # Not a shared library 61494642e01fSmrg if test "$deplibs_check_method" != pass_all; then 61504642e01fSmrg # We're trying link a shared library against a static one 61514642e01fSmrg # but the system doesn't support it. 61524642e01fSmrg 61534642e01fSmrg # Just print a warning and add the library to dependency_libs so 61544642e01fSmrg # that the program can be linked against the static library. 61556747b715Smrg echo 61564642e01fSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 61576747b715Smrg echo "*** I have the capability to make that library automatically link in when" 61586747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 61596747b715Smrg echo "*** shared version of the library, which you do not appear to have." 61604642e01fSmrg if test "$module" = yes; then 61616747b715Smrg echo "*** But as you try to build a module library, libtool will still create " 61626747b715Smrg echo "*** a static module, that should work as long as the dlopening application" 61636747b715Smrg echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 61644642e01fSmrg if test -z "$global_symbol_pipe"; then 61656747b715Smrg echo 61666747b715Smrg echo "*** However, this would only work if libtool was able to extract symbol" 61676747b715Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 61686747b715Smrg echo "*** not find such a program. So, this module is probably useless." 61696747b715Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 61704642e01fSmrg fi 61714642e01fSmrg if test "$build_old_libs" = no; then 61724642e01fSmrg build_libtool_libs=module 61734642e01fSmrg build_old_libs=yes 61744642e01fSmrg else 61754642e01fSmrg build_libtool_libs=no 61764642e01fSmrg fi 61774642e01fSmrg fi 61784642e01fSmrg else 61794642e01fSmrg deplibs="$dir/$old_library $deplibs" 61804642e01fSmrg link_static=yes 61814642e01fSmrg fi 61824642e01fSmrg fi # link shared/static library? 61834642e01fSmrg 61844642e01fSmrg if test "$linkmode" = lib; then 61854642e01fSmrg if test -n "$dependency_libs" && 61864642e01fSmrg { test "$hardcode_into_libs" != yes || 61874642e01fSmrg test "$build_old_libs" = yes || 61884642e01fSmrg test "$link_static" = yes; }; then 61894642e01fSmrg # Extract -R from dependency_libs 61904642e01fSmrg temp_deplibs= 61914642e01fSmrg for libdir in $dependency_libs; do 61924642e01fSmrg case $libdir in 61934642e01fSmrg -R*) func_stripname '-R' '' "$libdir" 61944642e01fSmrg temp_xrpath=$func_stripname_result 61954642e01fSmrg case " $xrpath " in 61964642e01fSmrg *" $temp_xrpath "*) ;; 6197475c125cSmrg *) xrpath="$xrpath $temp_xrpath";; 61984642e01fSmrg esac;; 6199475c125cSmrg *) temp_deplibs="$temp_deplibs $libdir";; 62004642e01fSmrg esac 62014642e01fSmrg done 62024642e01fSmrg dependency_libs="$temp_deplibs" 62034642e01fSmrg fi 62044642e01fSmrg 6205475c125cSmrg newlib_search_path="$newlib_search_path $absdir" 62064642e01fSmrg # Link against this library 62074642e01fSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 62084642e01fSmrg # ... and its dependency_libs 62094642e01fSmrg tmp_libs= 62104642e01fSmrg for deplib in $dependency_libs; do 62114642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 6212475c125cSmrg if $opt_duplicate_deps ; then 62134642e01fSmrg case "$tmp_libs " in 6214475c125cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 62154642e01fSmrg esac 62164642e01fSmrg fi 6217475c125cSmrg tmp_libs="$tmp_libs $deplib" 62184642e01fSmrg done 62194642e01fSmrg 62204642e01fSmrg if test "$link_all_deplibs" != no; then 62214642e01fSmrg # Add the search paths of all dependency libraries 62224642e01fSmrg for deplib in $dependency_libs; do 62234642e01fSmrg path= 62244642e01fSmrg case $deplib in 62254642e01fSmrg -L*) path="$deplib" ;; 62264642e01fSmrg *.la) 62274642e01fSmrg func_dirname "$deplib" "" "." 6228475c125cSmrg dir="$func_dirname_result" 62294642e01fSmrg # We need an absolute path. 62304642e01fSmrg case $dir in 62314642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 62324642e01fSmrg *) 62334642e01fSmrg absdir=`cd "$dir" && pwd` 62344642e01fSmrg if test -z "$absdir"; then 62354642e01fSmrg func_warning "cannot determine absolute directory name of \`$dir'" 62364642e01fSmrg absdir="$dir" 62374642e01fSmrg fi 62384642e01fSmrg ;; 62394642e01fSmrg esac 62404642e01fSmrg if $GREP "^installed=no" $deplib > /dev/null; then 62414642e01fSmrg case $host in 62424642e01fSmrg *-*-darwin*) 62434642e01fSmrg depdepl= 62444642e01fSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 62454642e01fSmrg if test -n "$deplibrary_names" ; then 62464642e01fSmrg for tmp in $deplibrary_names ; do 62474642e01fSmrg depdepl=$tmp 62484642e01fSmrg done 62494642e01fSmrg if test -f "$absdir/$objdir/$depdepl" ; then 62504642e01fSmrg depdepl="$absdir/$objdir/$depdepl" 62514642e01fSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 62524642e01fSmrg if test -z "$darwin_install_name"; then 62534642e01fSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 62544642e01fSmrg fi 6255475c125cSmrg compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 6256475c125cSmrg linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 62574642e01fSmrg path= 62584642e01fSmrg fi 62594642e01fSmrg fi 62604642e01fSmrg ;; 62614642e01fSmrg *) 62624642e01fSmrg path="-L$absdir/$objdir" 62634642e01fSmrg ;; 62644642e01fSmrg esac 62654642e01fSmrg else 62664642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 62674642e01fSmrg test -z "$libdir" && \ 62684642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 62694642e01fSmrg test "$absdir" != "$libdir" && \ 62704642e01fSmrg func_warning "\`$deplib' seems to be moved" 62714642e01fSmrg 62724642e01fSmrg path="-L$absdir" 62734642e01fSmrg fi 62744642e01fSmrg ;; 62754642e01fSmrg esac 62764642e01fSmrg case " $deplibs " in 62774642e01fSmrg *" $path "*) ;; 62784642e01fSmrg *) deplibs="$path $deplibs" ;; 62794642e01fSmrg esac 62804642e01fSmrg done 62814642e01fSmrg fi # link_all_deplibs != no 62824642e01fSmrg fi # linkmode = lib 62834642e01fSmrg done # for deplib in $libs 62844642e01fSmrg if test "$pass" = link; then 62854642e01fSmrg if test "$linkmode" = "prog"; then 62864642e01fSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 62874642e01fSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 62884642e01fSmrg else 62896747b715Smrg compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 62904642e01fSmrg fi 62914642e01fSmrg fi 62924642e01fSmrg dependency_libs="$newdependency_libs" 62934642e01fSmrg if test "$pass" = dlpreopen; then 62944642e01fSmrg # Link the dlpreopened libraries before other libraries 62954642e01fSmrg for deplib in $save_deplibs; do 62964642e01fSmrg deplibs="$deplib $deplibs" 62974642e01fSmrg done 62984642e01fSmrg fi 62994642e01fSmrg if test "$pass" != dlopen; then 63004642e01fSmrg if test "$pass" != conv; then 63014642e01fSmrg # Make sure lib_search_path contains only unique directories. 63024642e01fSmrg lib_search_path= 63034642e01fSmrg for dir in $newlib_search_path; do 63044642e01fSmrg case "$lib_search_path " in 63054642e01fSmrg *" $dir "*) ;; 6306475c125cSmrg *) lib_search_path="$lib_search_path $dir" ;; 63074642e01fSmrg esac 63084642e01fSmrg done 63094642e01fSmrg newlib_search_path= 63104642e01fSmrg fi 63114642e01fSmrg 63124642e01fSmrg if test "$linkmode,$pass" != "prog,link"; then 63134642e01fSmrg vars="deplibs" 63144642e01fSmrg else 63154642e01fSmrg vars="compile_deplibs finalize_deplibs" 63164642e01fSmrg fi 63174642e01fSmrg for var in $vars dependency_libs; do 63184642e01fSmrg # Add libraries to $var in reverse order 63194642e01fSmrg eval tmp_libs=\"\$$var\" 63204642e01fSmrg new_libs= 63214642e01fSmrg for deplib in $tmp_libs; do 63224642e01fSmrg # FIXME: Pedantically, this is the right thing to do, so 63234642e01fSmrg # that some nasty dependency loop isn't accidentally 63244642e01fSmrg # broken: 63254642e01fSmrg #new_libs="$deplib $new_libs" 63264642e01fSmrg # Pragmatically, this seems to cause very few problems in 63274642e01fSmrg # practice: 63284642e01fSmrg case $deplib in 63294642e01fSmrg -L*) new_libs="$deplib $new_libs" ;; 63304642e01fSmrg -R*) ;; 63314642e01fSmrg *) 63324642e01fSmrg # And here is the reason: when a library appears more 63334642e01fSmrg # than once as an explicit dependence of a library, or 63344642e01fSmrg # is implicitly linked in more than once by the 63354642e01fSmrg # compiler, it is considered special, and multiple 63364642e01fSmrg # occurrences thereof are not removed. Compare this 63374642e01fSmrg # with having the same library being listed as a 63384642e01fSmrg # dependency of multiple other libraries: in this case, 63394642e01fSmrg # we know (pedantically, we assume) the library does not 63404642e01fSmrg # need to be listed more than once, so we keep only the 63414642e01fSmrg # last copy. This is not always right, but it is rare 63424642e01fSmrg # enough that we require users that really mean to play 63434642e01fSmrg # such unportable linking tricks to link the library 63444642e01fSmrg # using -Wl,-lname, so that libtool does not consider it 63454642e01fSmrg # for duplicate removal. 63464642e01fSmrg case " $specialdeplibs " in 63474642e01fSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 63484642e01fSmrg *) 63494642e01fSmrg case " $new_libs " in 63504642e01fSmrg *" $deplib "*) ;; 63514642e01fSmrg *) new_libs="$deplib $new_libs" ;; 63524642e01fSmrg esac 63534642e01fSmrg ;; 63544642e01fSmrg esac 63554642e01fSmrg ;; 63564642e01fSmrg esac 63574642e01fSmrg done 63584642e01fSmrg tmp_libs= 63594642e01fSmrg for deplib in $new_libs; do 63604642e01fSmrg case $deplib in 63614642e01fSmrg -L*) 63624642e01fSmrg case " $tmp_libs " in 63634642e01fSmrg *" $deplib "*) ;; 6364475c125cSmrg *) tmp_libs="$tmp_libs $deplib" ;; 63654642e01fSmrg esac 63664642e01fSmrg ;; 6367475c125cSmrg *) tmp_libs="$tmp_libs $deplib" ;; 63684642e01fSmrg esac 63694642e01fSmrg done 63704642e01fSmrg eval $var=\"$tmp_libs\" 63714642e01fSmrg done # for var 63724642e01fSmrg fi 63734642e01fSmrg # Last step: remove runtime libs from dependency_libs 63744642e01fSmrg # (they stay in deplibs) 63754642e01fSmrg tmp_libs= 63764642e01fSmrg for i in $dependency_libs ; do 63774642e01fSmrg case " $predeps $postdeps $compiler_lib_search_path " in 63784642e01fSmrg *" $i "*) 63794642e01fSmrg i="" 63804642e01fSmrg ;; 63814642e01fSmrg esac 63824642e01fSmrg if test -n "$i" ; then 6383475c125cSmrg tmp_libs="$tmp_libs $i" 63844642e01fSmrg fi 63854642e01fSmrg done 63864642e01fSmrg dependency_libs=$tmp_libs 63874642e01fSmrg done # for pass 63884642e01fSmrg if test "$linkmode" = prog; then 63894642e01fSmrg dlfiles="$newdlfiles" 63904642e01fSmrg fi 63914642e01fSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 63924642e01fSmrg dlprefiles="$newdlprefiles" 63934642e01fSmrg fi 63944642e01fSmrg 63954642e01fSmrg case $linkmode in 63964642e01fSmrg oldlib) 63974642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 63984642e01fSmrg func_warning "\`-dlopen' is ignored for archives" 63994642e01fSmrg fi 64004642e01fSmrg 64014642e01fSmrg case " $deplibs" in 64024642e01fSmrg *\ -l* | *\ -L*) 64034642e01fSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 64044642e01fSmrg esac 64054642e01fSmrg 64064642e01fSmrg test -n "$rpath" && \ 64074642e01fSmrg func_warning "\`-rpath' is ignored for archives" 64084642e01fSmrg 64094642e01fSmrg test -n "$xrpath" && \ 64104642e01fSmrg func_warning "\`-R' is ignored for archives" 64114642e01fSmrg 64124642e01fSmrg test -n "$vinfo" && \ 64134642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 64144642e01fSmrg 64154642e01fSmrg test -n "$release" && \ 64164642e01fSmrg func_warning "\`-release' is ignored for archives" 64174642e01fSmrg 64184642e01fSmrg test -n "$export_symbols$export_symbols_regex" && \ 64194642e01fSmrg func_warning "\`-export-symbols' is ignored for archives" 64204642e01fSmrg 64214642e01fSmrg # Now set the variables for building old libraries. 64224642e01fSmrg build_libtool_libs=no 64234642e01fSmrg oldlibs="$output" 6424475c125cSmrg objs="$objs$old_deplibs" 64254642e01fSmrg ;; 64264642e01fSmrg 64274642e01fSmrg lib) 64284642e01fSmrg # Make sure we only generate libraries of the form `libNAME.la'. 64294642e01fSmrg case $outputname in 64304642e01fSmrg lib*) 64314642e01fSmrg func_stripname 'lib' '.la' "$outputname" 64324642e01fSmrg name=$func_stripname_result 64334642e01fSmrg eval shared_ext=\"$shrext_cmds\" 64344642e01fSmrg eval libname=\"$libname_spec\" 64354642e01fSmrg ;; 64364642e01fSmrg *) 64374642e01fSmrg test "$module" = no && \ 64384642e01fSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 64394642e01fSmrg 64404642e01fSmrg if test "$need_lib_prefix" != no; then 64414642e01fSmrg # Add the "lib" prefix for modules if required 64424642e01fSmrg func_stripname '' '.la' "$outputname" 64434642e01fSmrg name=$func_stripname_result 64444642e01fSmrg eval shared_ext=\"$shrext_cmds\" 64454642e01fSmrg eval libname=\"$libname_spec\" 64464642e01fSmrg else 64474642e01fSmrg func_stripname '' '.la' "$outputname" 64484642e01fSmrg libname=$func_stripname_result 64494642e01fSmrg fi 64504642e01fSmrg ;; 64514642e01fSmrg esac 64524642e01fSmrg 64534642e01fSmrg if test -n "$objs"; then 64544642e01fSmrg if test "$deplibs_check_method" != pass_all; then 64554642e01fSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 64564642e01fSmrg else 64576747b715Smrg echo 64584642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 64594642e01fSmrg $ECHO "*** objects $objs is not portable!" 6460475c125cSmrg libobjs="$libobjs $objs" 64614642e01fSmrg fi 64624642e01fSmrg fi 64634642e01fSmrg 64644642e01fSmrg test "$dlself" != no && \ 64654642e01fSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 64664642e01fSmrg 64674642e01fSmrg set dummy $rpath 64684642e01fSmrg shift 64694642e01fSmrg test "$#" -gt 1 && \ 64704642e01fSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 64714642e01fSmrg 64724642e01fSmrg install_libdir="$1" 64734642e01fSmrg 64744642e01fSmrg oldlibs= 64754642e01fSmrg if test -z "$rpath"; then 64764642e01fSmrg if test "$build_libtool_libs" = yes; then 64774642e01fSmrg # Building a libtool convenience library. 64784642e01fSmrg # Some compilers have problems with a `.al' extension so 64794642e01fSmrg # convenience libraries should have the same extension an 64804642e01fSmrg # archive normally would. 64814642e01fSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 64824642e01fSmrg build_libtool_libs=convenience 64834642e01fSmrg build_old_libs=yes 64844642e01fSmrg fi 64854642e01fSmrg 64864642e01fSmrg test -n "$vinfo" && \ 64874642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 64884642e01fSmrg 64894642e01fSmrg test -n "$release" && \ 64904642e01fSmrg func_warning "\`-release' is ignored for convenience libraries" 64914642e01fSmrg else 64924642e01fSmrg 64934642e01fSmrg # Parse the version information argument. 64944642e01fSmrg save_ifs="$IFS"; IFS=':' 64954642e01fSmrg set dummy $vinfo 0 0 0 64964642e01fSmrg shift 64974642e01fSmrg IFS="$save_ifs" 64984642e01fSmrg 64994642e01fSmrg test -n "$7" && \ 65004642e01fSmrg func_fatal_help "too many parameters to \`-version-info'" 65014642e01fSmrg 65024642e01fSmrg # convert absolute version numbers to libtool ages 65034642e01fSmrg # this retains compatibility with .la files and attempts 65044642e01fSmrg # to make the code below a bit more comprehensible 65054642e01fSmrg 65064642e01fSmrg case $vinfo_number in 65074642e01fSmrg yes) 65084642e01fSmrg number_major="$1" 65094642e01fSmrg number_minor="$2" 65104642e01fSmrg number_revision="$3" 65114642e01fSmrg # 65124642e01fSmrg # There are really only two kinds -- those that 65134642e01fSmrg # use the current revision as the major version 65144642e01fSmrg # and those that subtract age and use age as 65154642e01fSmrg # a minor version. But, then there is irix 65164642e01fSmrg # which has an extra 1 added just for fun 65174642e01fSmrg # 65184642e01fSmrg case $version_type in 65194642e01fSmrg darwin|linux|osf|windows|none) 65204642e01fSmrg func_arith $number_major + $number_minor 65214642e01fSmrg current=$func_arith_result 65224642e01fSmrg age="$number_minor" 65234642e01fSmrg revision="$number_revision" 65244642e01fSmrg ;; 65256747b715Smrg freebsd-aout|freebsd-elf|qnx|sunos) 65264642e01fSmrg current="$number_major" 65274642e01fSmrg revision="$number_minor" 65284642e01fSmrg age="0" 65294642e01fSmrg ;; 65304642e01fSmrg irix|nonstopux) 65314642e01fSmrg func_arith $number_major + $number_minor 65324642e01fSmrg current=$func_arith_result 65334642e01fSmrg age="$number_minor" 65344642e01fSmrg revision="$number_minor" 65354642e01fSmrg lt_irix_increment=no 65364642e01fSmrg ;; 65374642e01fSmrg esac 65384642e01fSmrg ;; 65394642e01fSmrg no) 65404642e01fSmrg current="$1" 65414642e01fSmrg revision="$2" 65424642e01fSmrg age="$3" 65434642e01fSmrg ;; 65444642e01fSmrg esac 65454642e01fSmrg 65464642e01fSmrg # Check that each of the things are valid numbers. 65474642e01fSmrg case $current in 65484642e01fSmrg 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]) ;; 65494642e01fSmrg *) 65504642e01fSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 65514642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 65524642e01fSmrg ;; 65534642e01fSmrg esac 65544642e01fSmrg 65554642e01fSmrg case $revision in 65564642e01fSmrg 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]) ;; 65574642e01fSmrg *) 65584642e01fSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 65594642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 65604642e01fSmrg ;; 65614642e01fSmrg esac 65624642e01fSmrg 65634642e01fSmrg case $age in 65644642e01fSmrg 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]) ;; 65654642e01fSmrg *) 65664642e01fSmrg func_error "AGE \`$age' must be a nonnegative integer" 65674642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 65684642e01fSmrg ;; 65694642e01fSmrg esac 65704642e01fSmrg 65714642e01fSmrg if test "$age" -gt "$current"; then 65724642e01fSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 65734642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 65744642e01fSmrg fi 65754642e01fSmrg 65764642e01fSmrg # Calculate the version variables. 65774642e01fSmrg major= 65784642e01fSmrg versuffix= 65794642e01fSmrg verstring= 65804642e01fSmrg case $version_type in 65814642e01fSmrg none) ;; 65824642e01fSmrg 65834642e01fSmrg darwin) 65844642e01fSmrg # Like Linux, but with the current version available in 65854642e01fSmrg # verstring for coding it into the library header 65864642e01fSmrg func_arith $current - $age 65874642e01fSmrg major=.$func_arith_result 65884642e01fSmrg versuffix="$major.$age.$revision" 65894642e01fSmrg # Darwin ld doesn't like 0 for these options... 65904642e01fSmrg func_arith $current + 1 65914642e01fSmrg minor_current=$func_arith_result 65924642e01fSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 65934642e01fSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 65944642e01fSmrg ;; 65954642e01fSmrg 65964642e01fSmrg freebsd-aout) 65974642e01fSmrg major=".$current" 65984642e01fSmrg versuffix=".$current.$revision"; 65994642e01fSmrg ;; 66004642e01fSmrg 66014642e01fSmrg freebsd-elf) 66024642e01fSmrg major=".$current" 66034642e01fSmrg versuffix=".$current" 66044642e01fSmrg ;; 66054642e01fSmrg 66064642e01fSmrg irix | nonstopux) 66074642e01fSmrg if test "X$lt_irix_increment" = "Xno"; then 66084642e01fSmrg func_arith $current - $age 66094642e01fSmrg else 66104642e01fSmrg func_arith $current - $age + 1 66114642e01fSmrg fi 66124642e01fSmrg major=$func_arith_result 66134642e01fSmrg 66144642e01fSmrg case $version_type in 66154642e01fSmrg nonstopux) verstring_prefix=nonstopux ;; 66164642e01fSmrg *) verstring_prefix=sgi ;; 66174642e01fSmrg esac 66184642e01fSmrg verstring="$verstring_prefix$major.$revision" 66194642e01fSmrg 66204642e01fSmrg # Add in all the interfaces that we are compatible with. 66214642e01fSmrg loop=$revision 66224642e01fSmrg while test "$loop" -ne 0; do 66234642e01fSmrg func_arith $revision - $loop 66244642e01fSmrg iface=$func_arith_result 66254642e01fSmrg func_arith $loop - 1 66264642e01fSmrg loop=$func_arith_result 66274642e01fSmrg verstring="$verstring_prefix$major.$iface:$verstring" 66284642e01fSmrg done 66294642e01fSmrg 66304642e01fSmrg # Before this point, $major must not contain `.'. 66314642e01fSmrg major=.$major 66324642e01fSmrg versuffix="$major.$revision" 66334642e01fSmrg ;; 66344642e01fSmrg 66354642e01fSmrg linux) 66364642e01fSmrg func_arith $current - $age 66374642e01fSmrg major=.$func_arith_result 66384642e01fSmrg versuffix="$major.$age.$revision" 66394642e01fSmrg ;; 66404642e01fSmrg 66414642e01fSmrg osf) 66424642e01fSmrg func_arith $current - $age 66434642e01fSmrg major=.$func_arith_result 66444642e01fSmrg versuffix=".$current.$age.$revision" 66454642e01fSmrg verstring="$current.$age.$revision" 66464642e01fSmrg 66474642e01fSmrg # Add in all the interfaces that we are compatible with. 66484642e01fSmrg loop=$age 66494642e01fSmrg while test "$loop" -ne 0; do 66504642e01fSmrg func_arith $current - $loop 66514642e01fSmrg iface=$func_arith_result 66524642e01fSmrg func_arith $loop - 1 66534642e01fSmrg loop=$func_arith_result 66544642e01fSmrg verstring="$verstring:${iface}.0" 66554642e01fSmrg done 66564642e01fSmrg 66574642e01fSmrg # Make executables depend on our current version. 6658475c125cSmrg verstring="$verstring:${current}.0" 66594642e01fSmrg ;; 66604642e01fSmrg 66614642e01fSmrg qnx) 66624642e01fSmrg major=".$current" 66634642e01fSmrg versuffix=".$current" 66644642e01fSmrg ;; 66654642e01fSmrg 66664642e01fSmrg sunos) 66674642e01fSmrg major=".$current" 66684642e01fSmrg versuffix=".$current.$revision" 66694642e01fSmrg ;; 66704642e01fSmrg 66714642e01fSmrg windows) 66724642e01fSmrg # Use '-' rather than '.', since we only want one 66734642e01fSmrg # extension on DOS 8.3 filesystems. 66744642e01fSmrg func_arith $current - $age 66754642e01fSmrg major=$func_arith_result 66764642e01fSmrg versuffix="-$major" 66774642e01fSmrg ;; 66784642e01fSmrg 66794642e01fSmrg *) 66804642e01fSmrg func_fatal_configuration "unknown library version type \`$version_type'" 66814642e01fSmrg ;; 66824642e01fSmrg esac 66834642e01fSmrg 66844642e01fSmrg # Clear the version info if we defaulted, and they specified a release. 66854642e01fSmrg if test -z "$vinfo" && test -n "$release"; then 66864642e01fSmrg major= 66874642e01fSmrg case $version_type in 66884642e01fSmrg darwin) 66894642e01fSmrg # we can't check for "0.0" in archive_cmds due to quoting 66904642e01fSmrg # problems, so we reset it completely 66914642e01fSmrg verstring= 66924642e01fSmrg ;; 66934642e01fSmrg *) 66944642e01fSmrg verstring="0.0" 66954642e01fSmrg ;; 66964642e01fSmrg esac 66974642e01fSmrg if test "$need_version" = no; then 66984642e01fSmrg versuffix= 66994642e01fSmrg else 67004642e01fSmrg versuffix=".0.0" 67014642e01fSmrg fi 67024642e01fSmrg fi 67034642e01fSmrg 67044642e01fSmrg # Remove version info from name if versioning should be avoided 67054642e01fSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 67064642e01fSmrg major= 67074642e01fSmrg versuffix= 67084642e01fSmrg verstring="" 67094642e01fSmrg fi 67104642e01fSmrg 67114642e01fSmrg # Check to see if the archive will have undefined symbols. 67124642e01fSmrg if test "$allow_undefined" = yes; then 67134642e01fSmrg if test "$allow_undefined_flag" = unsupported; then 67144642e01fSmrg func_warning "undefined symbols not allowed in $host shared libraries" 67154642e01fSmrg build_libtool_libs=no 67164642e01fSmrg build_old_libs=yes 67174642e01fSmrg fi 67184642e01fSmrg else 67194642e01fSmrg # Don't allow undefined symbols. 67204642e01fSmrg allow_undefined_flag="$no_undefined_flag" 67214642e01fSmrg fi 67224642e01fSmrg 67234642e01fSmrg fi 67244642e01fSmrg 67254642e01fSmrg func_generate_dlsyms "$libname" "$libname" "yes" 6726475c125cSmrg libobjs="$libobjs $symfileobj" 67274642e01fSmrg test "X$libobjs" = "X " && libobjs= 67284642e01fSmrg 6729475c125cSmrg if test "$mode" != relink; then 67304642e01fSmrg # Remove our outputs, but don't remove object files since they 67314642e01fSmrg # may have been created when compiling PIC objects. 67324642e01fSmrg removelist= 67334642e01fSmrg tempremovelist=`$ECHO "$output_objdir/*"` 67344642e01fSmrg for p in $tempremovelist; do 67354642e01fSmrg case $p in 67364642e01fSmrg *.$objext | *.gcno) 67374642e01fSmrg ;; 67384642e01fSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 67394642e01fSmrg if test "X$precious_files_regex" != "X"; then 67404642e01fSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 67414642e01fSmrg then 67424642e01fSmrg continue 67434642e01fSmrg fi 67444642e01fSmrg fi 6745475c125cSmrg removelist="$removelist $p" 67464642e01fSmrg ;; 67474642e01fSmrg *) ;; 67484642e01fSmrg esac 67494642e01fSmrg done 67504642e01fSmrg test -n "$removelist" && \ 67514642e01fSmrg func_show_eval "${RM}r \$removelist" 67524642e01fSmrg fi 67534642e01fSmrg 67544642e01fSmrg # Now set the variables for building old libraries. 67554642e01fSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 6756475c125cSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 67574642e01fSmrg 67584642e01fSmrg # Transform .lo files to .o files. 67596747b715Smrg oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 67604642e01fSmrg fi 67614642e01fSmrg 67624642e01fSmrg # Eliminate all temporary directories. 67634642e01fSmrg #for path in $notinst_path; do 67646747b715Smrg # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 67656747b715Smrg # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 67666747b715Smrg # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 67674642e01fSmrg #done 67684642e01fSmrg 67694642e01fSmrg if test -n "$xrpath"; then 67704642e01fSmrg # If the user specified any rpath flags, then add them. 67714642e01fSmrg temp_xrpath= 67724642e01fSmrg for libdir in $xrpath; do 6773475c125cSmrg temp_xrpath="$temp_xrpath -R$libdir" 67744642e01fSmrg case "$finalize_rpath " in 67754642e01fSmrg *" $libdir "*) ;; 6776475c125cSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 67774642e01fSmrg esac 67784642e01fSmrg done 67794642e01fSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 67804642e01fSmrg dependency_libs="$temp_xrpath $dependency_libs" 67814642e01fSmrg fi 67824642e01fSmrg fi 67834642e01fSmrg 67844642e01fSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 67854642e01fSmrg old_dlfiles="$dlfiles" 67864642e01fSmrg dlfiles= 67874642e01fSmrg for lib in $old_dlfiles; do 67884642e01fSmrg case " $dlprefiles $dlfiles " in 67894642e01fSmrg *" $lib "*) ;; 6790475c125cSmrg *) dlfiles="$dlfiles $lib" ;; 67914642e01fSmrg esac 67924642e01fSmrg done 67934642e01fSmrg 67944642e01fSmrg # Make sure dlprefiles contains only unique files 67954642e01fSmrg old_dlprefiles="$dlprefiles" 67964642e01fSmrg dlprefiles= 67974642e01fSmrg for lib in $old_dlprefiles; do 67984642e01fSmrg case "$dlprefiles " in 67994642e01fSmrg *" $lib "*) ;; 6800475c125cSmrg *) dlprefiles="$dlprefiles $lib" ;; 68014642e01fSmrg esac 68024642e01fSmrg done 68034642e01fSmrg 68044642e01fSmrg if test "$build_libtool_libs" = yes; then 68054642e01fSmrg if test -n "$rpath"; then 68064642e01fSmrg case $host in 68076747b715Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 68084642e01fSmrg # these systems don't actually have a c library (as such)! 68094642e01fSmrg ;; 68104642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 68114642e01fSmrg # Rhapsody C library is in the System framework 6812475c125cSmrg deplibs="$deplibs System.ltframework" 68134642e01fSmrg ;; 68144642e01fSmrg *-*-netbsd*) 68154642e01fSmrg # Don't link with libc until the a.out ld.so is fixed. 68164642e01fSmrg ;; 68174642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 68184642e01fSmrg # Do not include libc due to us having libc/libc_r. 68194642e01fSmrg ;; 68204642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 68214642e01fSmrg # Causes problems with __ctype 68224642e01fSmrg ;; 68234642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 68244642e01fSmrg # Compiler inserts libc in the correct place for threads to work 68254642e01fSmrg ;; 68264642e01fSmrg *) 68274642e01fSmrg # Add libc to deplibs on all other systems if necessary. 68284642e01fSmrg if test "$build_libtool_need_lc" = "yes"; then 6829475c125cSmrg deplibs="$deplibs -lc" 68304642e01fSmrg fi 68314642e01fSmrg ;; 68324642e01fSmrg esac 68334642e01fSmrg fi 68344642e01fSmrg 68354642e01fSmrg # Transform deplibs into only deplibs that can be linked in shared. 68364642e01fSmrg name_save=$name 68374642e01fSmrg libname_save=$libname 68384642e01fSmrg release_save=$release 68394642e01fSmrg versuffix_save=$versuffix 68404642e01fSmrg major_save=$major 68414642e01fSmrg # I'm not sure if I'm treating the release correctly. I think 68424642e01fSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 68434642e01fSmrg # add it in twice. Is that correct? 68444642e01fSmrg release="" 68454642e01fSmrg versuffix="" 68464642e01fSmrg major="" 68474642e01fSmrg newdeplibs= 68484642e01fSmrg droppeddeps=no 68494642e01fSmrg case $deplibs_check_method in 68504642e01fSmrg pass_all) 68514642e01fSmrg # Don't check for shared/static. Everything works. 68524642e01fSmrg # This might be a little naive. We might want to check 68534642e01fSmrg # whether the library exists or not. But this is on 68544642e01fSmrg # osf3 & osf4 and I'm not really sure... Just 68554642e01fSmrg # implementing what was already the behavior. 68564642e01fSmrg newdeplibs=$deplibs 68574642e01fSmrg ;; 68584642e01fSmrg test_compile) 68594642e01fSmrg # This code stresses the "libraries are programs" paradigm to its 68604642e01fSmrg # limits. Maybe even breaks it. We compile a program, linking it 68614642e01fSmrg # against the deplibs as a proxy for the library. Then we can check 68624642e01fSmrg # whether they linked in statically or dynamically with ldd. 68634642e01fSmrg $opt_dry_run || $RM conftest.c 68644642e01fSmrg cat > conftest.c <<EOF 68654642e01fSmrg int main() { return 0; } 68664642e01fSmrgEOF 68674642e01fSmrg $opt_dry_run || $RM conftest 68684642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 68694642e01fSmrg ldd_output=`ldd conftest` 68704642e01fSmrg for i in $deplibs; do 68714642e01fSmrg case $i in 68724642e01fSmrg -l*) 68734642e01fSmrg func_stripname -l '' "$i" 68744642e01fSmrg name=$func_stripname_result 68754642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 68764642e01fSmrg case " $predeps $postdeps " in 68774642e01fSmrg *" $i "*) 6878475c125cSmrg newdeplibs="$newdeplibs $i" 68794642e01fSmrg i="" 68804642e01fSmrg ;; 68814642e01fSmrg esac 68824642e01fSmrg fi 68834642e01fSmrg if test -n "$i" ; then 68844642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 68854642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 68864642e01fSmrg set dummy $deplib_matches; shift 68874642e01fSmrg deplib_match=$1 68884642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6889475c125cSmrg newdeplibs="$newdeplibs $i" 68904642e01fSmrg else 68914642e01fSmrg droppeddeps=yes 68926747b715Smrg echo 68934642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 68946747b715Smrg echo "*** I have the capability to make that library automatically link in when" 68956747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 68966747b715Smrg echo "*** shared version of the library, which I believe you do not have" 68976747b715Smrg echo "*** because a test_compile did reveal that the linker did not use it for" 68986747b715Smrg echo "*** its dynamic dependency list that programs get resolved with at runtime." 68994642e01fSmrg fi 69004642e01fSmrg fi 69014642e01fSmrg ;; 69024642e01fSmrg *) 6903475c125cSmrg newdeplibs="$newdeplibs $i" 69044642e01fSmrg ;; 69054642e01fSmrg esac 69064642e01fSmrg done 69074642e01fSmrg else 69084642e01fSmrg # Error occurred in the first compile. Let's try to salvage 69094642e01fSmrg # the situation: Compile a separate program for each library. 69104642e01fSmrg for i in $deplibs; do 69114642e01fSmrg case $i in 69124642e01fSmrg -l*) 69134642e01fSmrg func_stripname -l '' "$i" 69144642e01fSmrg name=$func_stripname_result 69154642e01fSmrg $opt_dry_run || $RM conftest 69164642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 69174642e01fSmrg ldd_output=`ldd conftest` 69184642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 69194642e01fSmrg case " $predeps $postdeps " in 69204642e01fSmrg *" $i "*) 6921475c125cSmrg newdeplibs="$newdeplibs $i" 69224642e01fSmrg i="" 69234642e01fSmrg ;; 69244642e01fSmrg esac 69254642e01fSmrg fi 69264642e01fSmrg if test -n "$i" ; then 69274642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 69284642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 69294642e01fSmrg set dummy $deplib_matches; shift 69304642e01fSmrg deplib_match=$1 69314642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6932475c125cSmrg newdeplibs="$newdeplibs $i" 69334642e01fSmrg else 69344642e01fSmrg droppeddeps=yes 69356747b715Smrg echo 69364642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 69376747b715Smrg echo "*** I have the capability to make that library automatically link in when" 69386747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 69396747b715Smrg echo "*** shared version of the library, which you do not appear to have" 69406747b715Smrg echo "*** because a test_compile did reveal that the linker did not use this one" 69416747b715Smrg echo "*** as a dynamic dependency that programs can get resolved with at runtime." 69424642e01fSmrg fi 69434642e01fSmrg fi 69444642e01fSmrg else 69454642e01fSmrg droppeddeps=yes 69466747b715Smrg echo 69474642e01fSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 69486747b715Smrg echo "*** make it link in! You will probably need to install it or some" 69496747b715Smrg echo "*** library that it depends on before this library will be fully" 69506747b715Smrg echo "*** functional. Installing it before continuing would be even better." 69514642e01fSmrg fi 69524642e01fSmrg ;; 69534642e01fSmrg *) 6954475c125cSmrg newdeplibs="$newdeplibs $i" 69554642e01fSmrg ;; 69564642e01fSmrg esac 69574642e01fSmrg done 69584642e01fSmrg fi 69594642e01fSmrg ;; 69604642e01fSmrg file_magic*) 69614642e01fSmrg set dummy $deplibs_check_method; shift 69624642e01fSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 69634642e01fSmrg for a_deplib in $deplibs; do 69644642e01fSmrg case $a_deplib in 69654642e01fSmrg -l*) 69664642e01fSmrg func_stripname -l '' "$a_deplib" 69674642e01fSmrg name=$func_stripname_result 69684642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 69694642e01fSmrg case " $predeps $postdeps " in 69704642e01fSmrg *" $a_deplib "*) 6971475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 69724642e01fSmrg a_deplib="" 69734642e01fSmrg ;; 69744642e01fSmrg esac 69754642e01fSmrg fi 69764642e01fSmrg if test -n "$a_deplib" ; then 69774642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 69784642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6979475c125cSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 69804642e01fSmrg for potent_lib in $potential_libs; do 69814642e01fSmrg # Follow soft links. 69824642e01fSmrg if ls -lLd "$potent_lib" 2>/dev/null | 69834642e01fSmrg $GREP " -> " >/dev/null; then 69844642e01fSmrg continue 69854642e01fSmrg fi 69864642e01fSmrg # The statement above tries to avoid entering an 69874642e01fSmrg # endless loop below, in case of cyclic links. 69884642e01fSmrg # We might still enter an endless loop, since a link 69894642e01fSmrg # loop can be closed while we follow links, 69904642e01fSmrg # but so what? 69914642e01fSmrg potlib="$potent_lib" 69924642e01fSmrg while test -h "$potlib" 2>/dev/null; do 69934642e01fSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 69944642e01fSmrg case $potliblink in 69954642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 69966747b715Smrg *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 69974642e01fSmrg esac 69984642e01fSmrg done 69994642e01fSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 70004642e01fSmrg $SED -e 10q | 70014642e01fSmrg $EGREP "$file_magic_regex" > /dev/null; then 7002475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 70034642e01fSmrg a_deplib="" 70044642e01fSmrg break 2 70054642e01fSmrg fi 70064642e01fSmrg done 70074642e01fSmrg done 70084642e01fSmrg fi 70094642e01fSmrg if test -n "$a_deplib" ; then 70104642e01fSmrg droppeddeps=yes 70116747b715Smrg echo 70124642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 70136747b715Smrg echo "*** I have the capability to make that library automatically link in when" 70146747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 70156747b715Smrg echo "*** shared version of the library, which you do not appear to have" 70166747b715Smrg echo "*** because I did check the linker path looking for a file starting" 70174642e01fSmrg if test -z "$potlib" ; then 70184642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 70194642e01fSmrg else 70204642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 70214642e01fSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 70224642e01fSmrg fi 70234642e01fSmrg fi 70244642e01fSmrg ;; 70254642e01fSmrg *) 70264642e01fSmrg # Add a -L argument. 7027475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 70284642e01fSmrg ;; 70294642e01fSmrg esac 70304642e01fSmrg done # Gone through all deplibs. 70314642e01fSmrg ;; 70324642e01fSmrg match_pattern*) 70334642e01fSmrg set dummy $deplibs_check_method; shift 70344642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 70354642e01fSmrg for a_deplib in $deplibs; do 70364642e01fSmrg case $a_deplib in 70374642e01fSmrg -l*) 70384642e01fSmrg func_stripname -l '' "$a_deplib" 70394642e01fSmrg name=$func_stripname_result 70404642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 70414642e01fSmrg case " $predeps $postdeps " in 70424642e01fSmrg *" $a_deplib "*) 7043475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 70444642e01fSmrg a_deplib="" 70454642e01fSmrg ;; 70464642e01fSmrg esac 70474642e01fSmrg fi 70484642e01fSmrg if test -n "$a_deplib" ; then 70494642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 70504642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 70514642e01fSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 70524642e01fSmrg for potent_lib in $potential_libs; do 70534642e01fSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 70546747b715Smrg if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 70554642e01fSmrg $EGREP "$match_pattern_regex" > /dev/null; then 7056475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 70574642e01fSmrg a_deplib="" 70584642e01fSmrg break 2 70594642e01fSmrg fi 70604642e01fSmrg done 70614642e01fSmrg done 70624642e01fSmrg fi 70634642e01fSmrg if test -n "$a_deplib" ; then 70644642e01fSmrg droppeddeps=yes 70656747b715Smrg echo 70664642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 70676747b715Smrg echo "*** I have the capability to make that library automatically link in when" 70686747b715Smrg echo "*** you link to this library. But I can only do this if you have a" 70696747b715Smrg echo "*** shared version of the library, which you do not appear to have" 70706747b715Smrg echo "*** because I did check the linker path looking for a file starting" 70714642e01fSmrg if test -z "$potlib" ; then 70724642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 70734642e01fSmrg else 70744642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 70754642e01fSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 70764642e01fSmrg fi 70774642e01fSmrg fi 70784642e01fSmrg ;; 70794642e01fSmrg *) 70804642e01fSmrg # Add a -L argument. 7081475c125cSmrg newdeplibs="$newdeplibs $a_deplib" 70824642e01fSmrg ;; 70834642e01fSmrg esac 70844642e01fSmrg done # Gone through all deplibs. 70854642e01fSmrg ;; 70864642e01fSmrg none | unknown | *) 70874642e01fSmrg newdeplibs="" 70886747b715Smrg tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 70894642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 70904642e01fSmrg for i in $predeps $postdeps ; do 70914642e01fSmrg # can't use Xsed below, because $i might contain '/' 70926747b715Smrg tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 70934642e01fSmrg done 70944642e01fSmrg fi 70956747b715Smrg case $tmp_deplibs in 70966747b715Smrg *[!\ \ ]*) 70976747b715Smrg echo 70984642e01fSmrg if test "X$deplibs_check_method" = "Xnone"; then 70996747b715Smrg echo "*** Warning: inter-library dependencies are not supported in this platform." 71004642e01fSmrg else 71016747b715Smrg echo "*** Warning: inter-library dependencies are not known to be supported." 71024642e01fSmrg fi 71036747b715Smrg echo "*** All declared inter-library dependencies are being dropped." 71044642e01fSmrg droppeddeps=yes 71056747b715Smrg ;; 71066747b715Smrg esac 71074642e01fSmrg ;; 71084642e01fSmrg esac 71094642e01fSmrg versuffix=$versuffix_save 71104642e01fSmrg major=$major_save 71114642e01fSmrg release=$release_save 71124642e01fSmrg libname=$libname_save 71134642e01fSmrg name=$name_save 71144642e01fSmrg 71154642e01fSmrg case $host in 71164642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 71174642e01fSmrg # On Rhapsody replace the C library with the System framework 71186747b715Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 71194642e01fSmrg ;; 71204642e01fSmrg esac 71214642e01fSmrg 71224642e01fSmrg if test "$droppeddeps" = yes; then 71234642e01fSmrg if test "$module" = yes; then 71246747b715Smrg echo 71256747b715Smrg echo "*** Warning: libtool could not satisfy all declared inter-library" 71264642e01fSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 71276747b715Smrg echo "*** a static module, that should work as long as the dlopening" 71286747b715Smrg echo "*** application is linked with the -dlopen flag." 71294642e01fSmrg if test -z "$global_symbol_pipe"; then 71306747b715Smrg echo 71316747b715Smrg echo "*** However, this would only work if libtool was able to extract symbol" 71326747b715Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 71336747b715Smrg echo "*** not find such a program. So, this module is probably useless." 71346747b715Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 71354642e01fSmrg fi 71364642e01fSmrg if test "$build_old_libs" = no; then 71374642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 71384642e01fSmrg build_libtool_libs=module 71394642e01fSmrg build_old_libs=yes 71404642e01fSmrg else 71414642e01fSmrg build_libtool_libs=no 71424642e01fSmrg fi 71434642e01fSmrg else 71446747b715Smrg echo "*** The inter-library dependencies that have been dropped here will be" 71456747b715Smrg echo "*** automatically added whenever a program is linked with this library" 71466747b715Smrg echo "*** or is declared to -dlopen it." 71474642e01fSmrg 71484642e01fSmrg if test "$allow_undefined" = no; then 71496747b715Smrg echo 71506747b715Smrg echo "*** Since this library must not contain undefined symbols," 71516747b715Smrg echo "*** because either the platform does not support them or" 71526747b715Smrg echo "*** it was explicitly requested with -no-undefined," 71536747b715Smrg echo "*** libtool will only create a static version of it." 71544642e01fSmrg if test "$build_old_libs" = no; then 71554642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 71564642e01fSmrg build_libtool_libs=module 71574642e01fSmrg build_old_libs=yes 71584642e01fSmrg else 71594642e01fSmrg build_libtool_libs=no 71604642e01fSmrg fi 71614642e01fSmrg fi 71624642e01fSmrg fi 71634642e01fSmrg fi 71644642e01fSmrg # Done checking deplibs! 71654642e01fSmrg deplibs=$newdeplibs 71664642e01fSmrg fi 71674642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 71684642e01fSmrg case $host in 71694642e01fSmrg *-*-darwin*) 71706747b715Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 71716747b715Smrg new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 71726747b715Smrg deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 71734642e01fSmrg ;; 71744642e01fSmrg esac 71754642e01fSmrg 71764642e01fSmrg # move library search paths that coincide with paths to not yet 71774642e01fSmrg # installed libraries to the beginning of the library search list 71784642e01fSmrg new_libs= 71794642e01fSmrg for path in $notinst_path; do 71804642e01fSmrg case " $new_libs " in 71814642e01fSmrg *" -L$path/$objdir "*) ;; 71824642e01fSmrg *) 71834642e01fSmrg case " $deplibs " in 71844642e01fSmrg *" -L$path/$objdir "*) 7185475c125cSmrg new_libs="$new_libs -L$path/$objdir" ;; 71864642e01fSmrg esac 71874642e01fSmrg ;; 71884642e01fSmrg esac 71894642e01fSmrg done 71904642e01fSmrg for deplib in $deplibs; do 71914642e01fSmrg case $deplib in 71924642e01fSmrg -L*) 71934642e01fSmrg case " $new_libs " in 71944642e01fSmrg *" $deplib "*) ;; 7195475c125cSmrg *) new_libs="$new_libs $deplib" ;; 71964642e01fSmrg esac 71974642e01fSmrg ;; 7198475c125cSmrg *) new_libs="$new_libs $deplib" ;; 71994642e01fSmrg esac 72004642e01fSmrg done 72014642e01fSmrg deplibs="$new_libs" 72024642e01fSmrg 72034642e01fSmrg # All the library-specific variables (install_libdir is set above). 72044642e01fSmrg library_names= 72054642e01fSmrg old_library= 72064642e01fSmrg dlname= 72074642e01fSmrg 72084642e01fSmrg # Test again, we may have decided not to build it any more 72094642e01fSmrg if test "$build_libtool_libs" = yes; then 72104642e01fSmrg if test "$hardcode_into_libs" = yes; then 72114642e01fSmrg # Hardcode the library paths 72124642e01fSmrg hardcode_libdirs= 72134642e01fSmrg dep_rpath= 72144642e01fSmrg rpath="$finalize_rpath" 7215475c125cSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 72164642e01fSmrg for libdir in $rpath; do 72174642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 72184642e01fSmrg if test -n "$hardcode_libdir_separator"; then 72194642e01fSmrg if test -z "$hardcode_libdirs"; then 72204642e01fSmrg hardcode_libdirs="$libdir" 72214642e01fSmrg else 72224642e01fSmrg # Just accumulate the unique libdirs. 72234642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 72244642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 72254642e01fSmrg ;; 72264642e01fSmrg *) 7227475c125cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 72284642e01fSmrg ;; 72294642e01fSmrg esac 72304642e01fSmrg fi 72314642e01fSmrg else 72324642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 7233475c125cSmrg dep_rpath="$dep_rpath $flag" 72344642e01fSmrg fi 72354642e01fSmrg elif test -n "$runpath_var"; then 72364642e01fSmrg case "$perm_rpath " in 72374642e01fSmrg *" $libdir "*) ;; 7238475c125cSmrg *) perm_rpath="$perm_rpath $libdir" ;; 72394642e01fSmrg esac 72404642e01fSmrg fi 72414642e01fSmrg done 72424642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 72434642e01fSmrg if test -n "$hardcode_libdir_separator" && 72444642e01fSmrg test -n "$hardcode_libdirs"; then 72454642e01fSmrg libdir="$hardcode_libdirs" 72464642e01fSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 72474642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 72484642e01fSmrg else 72494642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 72504642e01fSmrg fi 72514642e01fSmrg fi 72524642e01fSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 72534642e01fSmrg # We should set the runpath_var. 72544642e01fSmrg rpath= 72554642e01fSmrg for dir in $perm_rpath; do 7256475c125cSmrg rpath="$rpath$dir:" 72574642e01fSmrg done 72584642e01fSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 72594642e01fSmrg fi 72604642e01fSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 72614642e01fSmrg fi 726205b261ecSmrg 72634642e01fSmrg shlibpath="$finalize_shlibpath" 7264475c125cSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 72654642e01fSmrg if test -n "$shlibpath"; then 72664642e01fSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 72674642e01fSmrg fi 726805b261ecSmrg 72694642e01fSmrg # Get the real and link names of the library. 72704642e01fSmrg eval shared_ext=\"$shrext_cmds\" 72714642e01fSmrg eval library_names=\"$library_names_spec\" 72724642e01fSmrg set dummy $library_names 72734642e01fSmrg shift 72744642e01fSmrg realname="$1" 72754642e01fSmrg shift 727605b261ecSmrg 72774642e01fSmrg if test -n "$soname_spec"; then 72784642e01fSmrg eval soname=\"$soname_spec\" 72794642e01fSmrg else 72804642e01fSmrg soname="$realname" 72814642e01fSmrg fi 72824642e01fSmrg if test -z "$dlname"; then 72834642e01fSmrg dlname=$soname 72844642e01fSmrg fi 728505b261ecSmrg 72864642e01fSmrg lib="$output_objdir/$realname" 72874642e01fSmrg linknames= 72884642e01fSmrg for link 72894642e01fSmrg do 7290475c125cSmrg linknames="$linknames $link" 72914642e01fSmrg done 729205b261ecSmrg 72934642e01fSmrg # Use standard objects if they are pic 72946747b715Smrg test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 72954642e01fSmrg test "X$libobjs" = "X " && libobjs= 729605b261ecSmrg 72974642e01fSmrg delfiles= 72984642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 72994642e01fSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 73004642e01fSmrg export_symbols="$output_objdir/$libname.uexp" 7301475c125cSmrg delfiles="$delfiles $export_symbols" 73024642e01fSmrg fi 730305b261ecSmrg 73044642e01fSmrg orig_export_symbols= 73054642e01fSmrg case $host_os in 73064642e01fSmrg cygwin* | mingw* | cegcc*) 73074642e01fSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 73084642e01fSmrg # exporting using user supplied symfile 73094642e01fSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 73104642e01fSmrg # and it's NOT already a .def file. Must figure out 73114642e01fSmrg # which of the given symbols are data symbols and tag 73124642e01fSmrg # them as such. So, trigger use of export_symbols_cmds. 73134642e01fSmrg # export_symbols gets reassigned inside the "prepare 73144642e01fSmrg # the list of exported symbols" if statement, so the 73154642e01fSmrg # include_expsyms logic still works. 73164642e01fSmrg orig_export_symbols="$export_symbols" 73174642e01fSmrg export_symbols= 73184642e01fSmrg always_export_symbols=yes 73194642e01fSmrg fi 73204642e01fSmrg fi 73214642e01fSmrg ;; 73224642e01fSmrg esac 732305b261ecSmrg 73244642e01fSmrg # Prepare the list of exported symbols 73254642e01fSmrg if test -z "$export_symbols"; then 73264642e01fSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 73274642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 73284642e01fSmrg export_symbols="$output_objdir/$libname.exp" 73294642e01fSmrg $opt_dry_run || $RM $export_symbols 73304642e01fSmrg cmds=$export_symbols_cmds 73314642e01fSmrg save_ifs="$IFS"; IFS='~' 7332475c125cSmrg for cmd in $cmds; do 73334642e01fSmrg IFS="$save_ifs" 7334475c125cSmrg eval cmd=\"$cmd\" 7335475c125cSmrg func_len " $cmd" 7336475c125cSmrg len=$func_len_result 7337475c125cSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 73384642e01fSmrg func_show_eval "$cmd" 'exit $?' 73394642e01fSmrg skipped_export=false 73404642e01fSmrg else 73414642e01fSmrg # The command line is too long to execute in one step. 73424642e01fSmrg func_verbose "using reloadable object file for export list..." 73434642e01fSmrg skipped_export=: 73444642e01fSmrg # Break out early, otherwise skipped_export may be 73454642e01fSmrg # set to false by a later but shorter cmd. 73464642e01fSmrg break 73474642e01fSmrg fi 73484642e01fSmrg done 73494642e01fSmrg IFS="$save_ifs" 73504642e01fSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 73514642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 73524642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 73534642e01fSmrg fi 73544642e01fSmrg fi 735505b261ecSmrg fi 735605b261ecSmrg 73574642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 73584642e01fSmrg tmp_export_symbols="$export_symbols" 73594642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 73606747b715Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 73614642e01fSmrg fi 736205b261ecSmrg 73634642e01fSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 73644642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 73654642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 73664642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 73674642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 73684642e01fSmrg # though. Also, the filter scales superlinearly with the number of 73694642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 73704642e01fSmrg # isn't a blessed tool. 73714642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7372475c125cSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 73734642e01fSmrg export_symbols=$output_objdir/$libname.def 73744642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 73754642e01fSmrg fi 737605b261ecSmrg 73774642e01fSmrg tmp_deplibs= 73784642e01fSmrg for test_deplib in $deplibs; do 73794642e01fSmrg case " $convenience " in 73804642e01fSmrg *" $test_deplib "*) ;; 73814642e01fSmrg *) 7382475c125cSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 73834642e01fSmrg ;; 73844642e01fSmrg esac 73854642e01fSmrg done 73864642e01fSmrg deplibs="$tmp_deplibs" 738705b261ecSmrg 73884642e01fSmrg if test -n "$convenience"; then 73894642e01fSmrg if test -n "$whole_archive_flag_spec" && 73904642e01fSmrg test "$compiler_needs_object" = yes && 73914642e01fSmrg test -z "$libobjs"; then 73924642e01fSmrg # extract the archives, so we have objects to list. 73934642e01fSmrg # TODO: could optimize this to just extract one archive. 73944642e01fSmrg whole_archive_flag_spec= 73954642e01fSmrg fi 73964642e01fSmrg if test -n "$whole_archive_flag_spec"; then 73974642e01fSmrg save_libobjs=$libobjs 73984642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 73994642e01fSmrg test "X$libobjs" = "X " && libobjs= 74004642e01fSmrg else 74014642e01fSmrg gentop="$output_objdir/${outputname}x" 7402475c125cSmrg generated="$generated $gentop" 740305b261ecSmrg 74044642e01fSmrg func_extract_archives $gentop $convenience 7405475c125cSmrg libobjs="$libobjs $func_extract_archives_result" 74064642e01fSmrg test "X$libobjs" = "X " && libobjs= 74074642e01fSmrg fi 740805b261ecSmrg fi 740905b261ecSmrg 74104642e01fSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 74114642e01fSmrg eval flag=\"$thread_safe_flag_spec\" 7412475c125cSmrg linker_flags="$linker_flags $flag" 741305b261ecSmrg fi 741405b261ecSmrg 74154642e01fSmrg # Make a backup of the uninstalled library when relinking 7416475c125cSmrg if test "$mode" = relink; then 74174642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 74184642e01fSmrg fi 741905b261ecSmrg 74204642e01fSmrg # Do each of the archive commands. 74214642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 74224642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 74234642e01fSmrg eval test_cmds=\"$module_expsym_cmds\" 74244642e01fSmrg cmds=$module_expsym_cmds 74254642e01fSmrg else 74264642e01fSmrg eval test_cmds=\"$module_cmds\" 74274642e01fSmrg cmds=$module_cmds 74284642e01fSmrg fi 742905b261ecSmrg else 74304642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 74314642e01fSmrg eval test_cmds=\"$archive_expsym_cmds\" 74324642e01fSmrg cmds=$archive_expsym_cmds 74334642e01fSmrg else 74344642e01fSmrg eval test_cmds=\"$archive_cmds\" 74354642e01fSmrg cmds=$archive_cmds 74364642e01fSmrg fi 743705b261ecSmrg fi 743805b261ecSmrg 74394642e01fSmrg if test "X$skipped_export" != "X:" && 74404642e01fSmrg func_len " $test_cmds" && 74414642e01fSmrg len=$func_len_result && 74424642e01fSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 74434642e01fSmrg : 74444642e01fSmrg else 74454642e01fSmrg # The command line is too long to link in one step, link piecewise 74464642e01fSmrg # or, if using GNU ld and skipped_export is not :, use a linker 74474642e01fSmrg # script. 744805b261ecSmrg 74494642e01fSmrg # Save the value of $output and $libobjs because we want to 74504642e01fSmrg # use them later. If we have whole_archive_flag_spec, we 74514642e01fSmrg # want to use save_libobjs as it was before 74524642e01fSmrg # whole_archive_flag_spec was expanded, because we can't 74534642e01fSmrg # assume the linker understands whole_archive_flag_spec. 74544642e01fSmrg # This may have to be revisited, in case too many 74554642e01fSmrg # convenience libraries get linked in and end up exceeding 74564642e01fSmrg # the spec. 74574642e01fSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 74584642e01fSmrg save_libobjs=$libobjs 74594642e01fSmrg fi 74604642e01fSmrg save_output=$output 74616747b715Smrg func_basename "$output" 74626747b715Smrg output_la=$func_basename_result 746305b261ecSmrg 74644642e01fSmrg # Clear the reloadable object creation command queue and 74654642e01fSmrg # initialize k to one. 74664642e01fSmrg test_cmds= 74674642e01fSmrg concat_cmds= 74684642e01fSmrg objlist= 74694642e01fSmrg last_robj= 74704642e01fSmrg k=1 74714642e01fSmrg 74724642e01fSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 74734642e01fSmrg output=${output_objdir}/${output_la}.lnkscript 74744642e01fSmrg func_verbose "creating GNU ld script: $output" 74756747b715Smrg echo 'INPUT (' > $output 74764642e01fSmrg for obj in $save_libobjs 747705b261ecSmrg do 7478475c125cSmrg $ECHO "$obj" >> $output 74794642e01fSmrg done 74806747b715Smrg echo ')' >> $output 7481475c125cSmrg delfiles="$delfiles $output" 74824642e01fSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 74834642e01fSmrg output=${output_objdir}/${output_la}.lnk 74844642e01fSmrg func_verbose "creating linker input file list: $output" 74854642e01fSmrg : > $output 74864642e01fSmrg set x $save_libobjs 74874642e01fSmrg shift 74884642e01fSmrg firstobj= 74894642e01fSmrg if test "$compiler_needs_object" = yes; then 74904642e01fSmrg firstobj="$1 " 74914642e01fSmrg shift 74924642e01fSmrg fi 74934642e01fSmrg for obj 74944642e01fSmrg do 7495475c125cSmrg $ECHO "$obj" >> $output 74964642e01fSmrg done 7497475c125cSmrg delfiles="$delfiles $output" 7498475c125cSmrg output=$firstobj\"$file_list_spec$output\" 74994642e01fSmrg else 75004642e01fSmrg if test -n "$save_libobjs"; then 75014642e01fSmrg func_verbose "creating reloadable object files..." 75024642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 75034642e01fSmrg eval test_cmds=\"$reload_cmds\" 75044642e01fSmrg func_len " $test_cmds" 75054642e01fSmrg len0=$func_len_result 75064642e01fSmrg len=$len0 75074642e01fSmrg 75084642e01fSmrg # Loop over the list of objects to be linked. 75094642e01fSmrg for obj in $save_libobjs 75104642e01fSmrg do 75114642e01fSmrg func_len " $obj" 75124642e01fSmrg func_arith $len + $func_len_result 75134642e01fSmrg len=$func_arith_result 75144642e01fSmrg if test "X$objlist" = X || 75154642e01fSmrg test "$len" -lt "$max_cmd_len"; then 75164642e01fSmrg func_append objlist " $obj" 75174642e01fSmrg else 75184642e01fSmrg # The command $test_cmds is almost too long, add a 75194642e01fSmrg # command to the queue. 75204642e01fSmrg if test "$k" -eq 1 ; then 75214642e01fSmrg # The first file doesn't have a previous command to add. 75226747b715Smrg reload_objs=$objlist 75236747b715Smrg eval concat_cmds=\"$reload_cmds\" 75244642e01fSmrg else 75254642e01fSmrg # All subsequent reloadable object files will link in 75264642e01fSmrg # the last one created. 75276747b715Smrg reload_objs="$objlist $last_robj" 75286747b715Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 75294642e01fSmrg fi 75304642e01fSmrg last_robj=$output_objdir/$output_la-${k}.$objext 75314642e01fSmrg func_arith $k + 1 75324642e01fSmrg k=$func_arith_result 75334642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 75346747b715Smrg objlist=" $obj" 75354642e01fSmrg func_len " $last_robj" 75364642e01fSmrg func_arith $len0 + $func_len_result 75374642e01fSmrg len=$func_arith_result 75384642e01fSmrg fi 75394642e01fSmrg done 75404642e01fSmrg # Handle the remaining objects by creating one last 75414642e01fSmrg # reloadable object file. All subsequent reloadable object 75424642e01fSmrg # files will link in the last one created. 75434642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 75446747b715Smrg reload_objs="$objlist $last_robj" 75456747b715Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 75464642e01fSmrg if test -n "$last_robj"; then 75474642e01fSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 75484642e01fSmrg fi 7549475c125cSmrg delfiles="$delfiles $output" 755005b261ecSmrg 75514642e01fSmrg else 75524642e01fSmrg output= 75534642e01fSmrg fi 755405b261ecSmrg 75554642e01fSmrg if ${skipped_export-false}; then 75564642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 75574642e01fSmrg export_symbols="$output_objdir/$libname.exp" 75584642e01fSmrg $opt_dry_run || $RM $export_symbols 75594642e01fSmrg libobjs=$output 75604642e01fSmrg # Append the command to create the export file. 75614642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 75624642e01fSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 75634642e01fSmrg if test -n "$last_robj"; then 75644642e01fSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 75654642e01fSmrg fi 756605b261ecSmrg fi 756705b261ecSmrg 75684642e01fSmrg test -n "$save_libobjs" && 75694642e01fSmrg func_verbose "creating a temporary reloadable object file: $output" 757005b261ecSmrg 75714642e01fSmrg # Loop through the commands generated above and execute them. 75724642e01fSmrg save_ifs="$IFS"; IFS='~' 75734642e01fSmrg for cmd in $concat_cmds; do 75744642e01fSmrg IFS="$save_ifs" 75754642e01fSmrg $opt_silent || { 75764642e01fSmrg func_quote_for_expand "$cmd" 75774642e01fSmrg eval "func_echo $func_quote_for_expand_result" 75784642e01fSmrg } 75794642e01fSmrg $opt_dry_run || eval "$cmd" || { 75804642e01fSmrg lt_exit=$? 75814642e01fSmrg 75824642e01fSmrg # Restore the uninstalled library and exit 7583475c125cSmrg if test "$mode" = relink; then 75844642e01fSmrg ( cd "$output_objdir" && \ 75854642e01fSmrg $RM "${realname}T" && \ 75864642e01fSmrg $MV "${realname}U" "$realname" ) 75874642e01fSmrg fi 758805b261ecSmrg 75894642e01fSmrg exit $lt_exit 75904642e01fSmrg } 75914642e01fSmrg done 75924642e01fSmrg IFS="$save_ifs" 759305b261ecSmrg 75944642e01fSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 75954642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 75964642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 759705b261ecSmrg fi 759805b261ecSmrg fi 759905b261ecSmrg 76004642e01fSmrg if ${skipped_export-false}; then 76014642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 76024642e01fSmrg tmp_export_symbols="$export_symbols" 76034642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 76046747b715Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 76054642e01fSmrg fi 760605b261ecSmrg 76074642e01fSmrg if test -n "$orig_export_symbols"; then 76084642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 76094642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 76104642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 76114642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 76124642e01fSmrg # though. Also, the filter scales superlinearly with the number of 76134642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 76144642e01fSmrg # isn't a blessed tool. 76154642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7616475c125cSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 76174642e01fSmrg export_symbols=$output_objdir/$libname.def 76184642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 76194642e01fSmrg fi 76204642e01fSmrg fi 762105b261ecSmrg 76224642e01fSmrg libobjs=$output 76234642e01fSmrg # Restore the value of output. 76244642e01fSmrg output=$save_output 762505b261ecSmrg 76264642e01fSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 76274642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 76284642e01fSmrg test "X$libobjs" = "X " && libobjs= 76294642e01fSmrg fi 76304642e01fSmrg # Expand the library linking commands again to reset the 76314642e01fSmrg # value of $libobjs for piecewise linking. 763205b261ecSmrg 76334642e01fSmrg # Do each of the archive commands. 76344642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 76354642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 76364642e01fSmrg cmds=$module_expsym_cmds 76374642e01fSmrg else 76384642e01fSmrg cmds=$module_cmds 763905b261ecSmrg fi 764005b261ecSmrg else 76414642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 76424642e01fSmrg cmds=$archive_expsym_cmds 76434642e01fSmrg else 76444642e01fSmrg cmds=$archive_cmds 76454642e01fSmrg fi 764605b261ecSmrg fi 76474642e01fSmrg fi 764805b261ecSmrg 76494642e01fSmrg if test -n "$delfiles"; then 76504642e01fSmrg # Append the command to remove temporary files to $cmds. 76514642e01fSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 76524642e01fSmrg fi 765305b261ecSmrg 76544642e01fSmrg # Add any objects from preloaded convenience libraries 76554642e01fSmrg if test -n "$dlprefiles"; then 76564642e01fSmrg gentop="$output_objdir/${outputname}x" 7657475c125cSmrg generated="$generated $gentop" 765805b261ecSmrg 76594642e01fSmrg func_extract_archives $gentop $dlprefiles 7660475c125cSmrg libobjs="$libobjs $func_extract_archives_result" 76614642e01fSmrg test "X$libobjs" = "X " && libobjs= 76624642e01fSmrg fi 766305b261ecSmrg 76644642e01fSmrg save_ifs="$IFS"; IFS='~' 76654642e01fSmrg for cmd in $cmds; do 76664642e01fSmrg IFS="$save_ifs" 76674642e01fSmrg eval cmd=\"$cmd\" 76684642e01fSmrg $opt_silent || { 76694642e01fSmrg func_quote_for_expand "$cmd" 76704642e01fSmrg eval "func_echo $func_quote_for_expand_result" 76714642e01fSmrg } 76724642e01fSmrg $opt_dry_run || eval "$cmd" || { 76734642e01fSmrg lt_exit=$? 767405b261ecSmrg 76754642e01fSmrg # Restore the uninstalled library and exit 7676475c125cSmrg if test "$mode" = relink; then 76774642e01fSmrg ( cd "$output_objdir" && \ 76784642e01fSmrg $RM "${realname}T" && \ 76794642e01fSmrg $MV "${realname}U" "$realname" ) 76804642e01fSmrg fi 768105b261ecSmrg 76824642e01fSmrg exit $lt_exit 76834642e01fSmrg } 76844642e01fSmrg done 76854642e01fSmrg IFS="$save_ifs" 768605b261ecSmrg 76874642e01fSmrg # Restore the uninstalled library and exit 7688475c125cSmrg if test "$mode" = relink; then 76894642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 769005b261ecSmrg 76914642e01fSmrg if test -n "$convenience"; then 76924642e01fSmrg if test -z "$whole_archive_flag_spec"; then 76934642e01fSmrg func_show_eval '${RM}r "$gentop"' 76944642e01fSmrg fi 76954642e01fSmrg fi 769605b261ecSmrg 76974642e01fSmrg exit $EXIT_SUCCESS 76984642e01fSmrg fi 76994642e01fSmrg 77004642e01fSmrg # Create links to the real library. 77014642e01fSmrg for linkname in $linknames; do 77024642e01fSmrg if test "$realname" != "$linkname"; then 77034642e01fSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 770405b261ecSmrg fi 770505b261ecSmrg done 770605b261ecSmrg 77074642e01fSmrg # If -module or -export-dynamic was specified, set the dlname. 77084642e01fSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 77094642e01fSmrg # On all known operating systems, these are identical. 77104642e01fSmrg dlname="$soname" 77114642e01fSmrg fi 77124642e01fSmrg fi 771305b261ecSmrg ;; 771405b261ecSmrg 77154642e01fSmrg obj) 77164642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 77174642e01fSmrg func_warning "\`-dlopen' is ignored for objects" 77184642e01fSmrg fi 771905b261ecSmrg 77204642e01fSmrg case " $deplibs" in 77214642e01fSmrg *\ -l* | *\ -L*) 77224642e01fSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 772305b261ecSmrg esac 772405b261ecSmrg 77254642e01fSmrg test -n "$rpath" && \ 77264642e01fSmrg func_warning "\`-rpath' is ignored for objects" 77274642e01fSmrg 77284642e01fSmrg test -n "$xrpath" && \ 77294642e01fSmrg func_warning "\`-R' is ignored for objects" 773005b261ecSmrg 77314642e01fSmrg test -n "$vinfo" && \ 77324642e01fSmrg func_warning "\`-version-info' is ignored for objects" 773305b261ecSmrg 77344642e01fSmrg test -n "$release" && \ 77354642e01fSmrg func_warning "\`-release' is ignored for objects" 77364642e01fSmrg 77374642e01fSmrg case $output in 77384642e01fSmrg *.lo) 77394642e01fSmrg test -n "$objs$old_deplibs" && \ 77404642e01fSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 77414642e01fSmrg 77424642e01fSmrg libobj=$output 77434642e01fSmrg func_lo2o "$libobj" 77444642e01fSmrg obj=$func_lo2o_result 774505b261ecSmrg ;; 774605b261ecSmrg *) 77474642e01fSmrg libobj= 77484642e01fSmrg obj="$output" 774905b261ecSmrg ;; 775005b261ecSmrg esac 775105b261ecSmrg 77524642e01fSmrg # Delete the old objects. 77534642e01fSmrg $opt_dry_run || $RM $obj $libobj 775405b261ecSmrg 77554642e01fSmrg # Objects from convenience libraries. This assumes 77564642e01fSmrg # single-version convenience libraries. Whenever we create 77574642e01fSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 77584642e01fSmrg # the extraction. 77594642e01fSmrg reload_conv_objs= 77604642e01fSmrg gentop= 77614642e01fSmrg # reload_cmds runs $LD directly, so let us get rid of 77624642e01fSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 77634642e01fSmrg # turning comma into space.. 77644642e01fSmrg wl= 776505b261ecSmrg 77664642e01fSmrg if test -n "$convenience"; then 77674642e01fSmrg if test -n "$whole_archive_flag_spec"; then 77684642e01fSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 77696747b715Smrg reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 77704642e01fSmrg else 77714642e01fSmrg gentop="$output_objdir/${obj}x" 7772475c125cSmrg generated="$generated $gentop" 777305b261ecSmrg 77744642e01fSmrg func_extract_archives $gentop $convenience 77754642e01fSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 77764642e01fSmrg fi 777705b261ecSmrg fi 777805b261ecSmrg 77794642e01fSmrg # Create the old-style object. 77806747b715Smrg reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 778105b261ecSmrg 77824642e01fSmrg output="$obj" 77834642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 778405b261ecSmrg 77854642e01fSmrg # Exit if we aren't doing a library object file. 77864642e01fSmrg if test -z "$libobj"; then 77874642e01fSmrg if test -n "$gentop"; then 77884642e01fSmrg func_show_eval '${RM}r "$gentop"' 77894642e01fSmrg fi 77904642e01fSmrg 77914642e01fSmrg exit $EXIT_SUCCESS 779205b261ecSmrg fi 77934642e01fSmrg 77944642e01fSmrg if test "$build_libtool_libs" != yes; then 77954642e01fSmrg if test -n "$gentop"; then 77964642e01fSmrg func_show_eval '${RM}r "$gentop"' 77974642e01fSmrg fi 77984642e01fSmrg 77994642e01fSmrg # Create an invalid libtool object if no PIC, so that we don't 78004642e01fSmrg # accidentally link it into a program. 78014642e01fSmrg # $show "echo timestamp > $libobj" 78024642e01fSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 78034642e01fSmrg exit $EXIT_SUCCESS 78044642e01fSmrg fi 78054642e01fSmrg 78064642e01fSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 78074642e01fSmrg # Only do commands if we really have different PIC objects. 78084642e01fSmrg reload_objs="$libobjs $reload_conv_objs" 78094642e01fSmrg output="$libobj" 78104642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 78114642e01fSmrg fi 78124642e01fSmrg 78134642e01fSmrg if test -n "$gentop"; then 78144642e01fSmrg func_show_eval '${RM}r "$gentop"' 78154642e01fSmrg fi 78164642e01fSmrg 78174642e01fSmrg exit $EXIT_SUCCESS 781805b261ecSmrg ;; 781905b261ecSmrg 78204642e01fSmrg prog) 78214642e01fSmrg case $host in 78224642e01fSmrg *cygwin*) func_stripname '' '.exe' "$output" 78234642e01fSmrg output=$func_stripname_result.exe;; 78244642e01fSmrg esac 78254642e01fSmrg test -n "$vinfo" && \ 78264642e01fSmrg func_warning "\`-version-info' is ignored for programs" 782705b261ecSmrg 78284642e01fSmrg test -n "$release" && \ 78294642e01fSmrg func_warning "\`-release' is ignored for programs" 783005b261ecSmrg 78314642e01fSmrg test "$preload" = yes \ 78324642e01fSmrg && test "$dlopen_support" = unknown \ 78334642e01fSmrg && test "$dlopen_self" = unknown \ 78344642e01fSmrg && test "$dlopen_self_static" = unknown && \ 78354642e01fSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 78364642e01fSmrg 78374642e01fSmrg case $host in 78384642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 78394642e01fSmrg # On Rhapsody replace the C library is the System framework 78406747b715Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 78416747b715Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 784205b261ecSmrg ;; 78434642e01fSmrg esac 784405b261ecSmrg 78454642e01fSmrg case $host in 78464642e01fSmrg *-*-darwin*) 78474642e01fSmrg # Don't allow lazy linking, it breaks C++ global constructors 78484642e01fSmrg # But is supposedly fixed on 10.4 or later (yay!). 78494642e01fSmrg if test "$tagname" = CXX ; then 78504642e01fSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 78514642e01fSmrg 10.[0123]) 7852475c125cSmrg compile_command="$compile_command ${wl}-bind_at_load" 7853475c125cSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 78544642e01fSmrg ;; 78554642e01fSmrg esac 785605b261ecSmrg fi 78574642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 78586747b715Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 78596747b715Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 78604642e01fSmrg ;; 78614642e01fSmrg esac 786205b261ecSmrg 786305b261ecSmrg 78644642e01fSmrg # move library search paths that coincide with paths to not yet 78654642e01fSmrg # installed libraries to the beginning of the library search list 78664642e01fSmrg new_libs= 78674642e01fSmrg for path in $notinst_path; do 78684642e01fSmrg case " $new_libs " in 78694642e01fSmrg *" -L$path/$objdir "*) ;; 78704642e01fSmrg *) 78714642e01fSmrg case " $compile_deplibs " in 78724642e01fSmrg *" -L$path/$objdir "*) 7873475c125cSmrg new_libs="$new_libs -L$path/$objdir" ;; 787405b261ecSmrg esac 78754642e01fSmrg ;; 78764642e01fSmrg esac 78774642e01fSmrg done 78784642e01fSmrg for deplib in $compile_deplibs; do 78794642e01fSmrg case $deplib in 78804642e01fSmrg -L*) 78814642e01fSmrg case " $new_libs " in 78824642e01fSmrg *" $deplib "*) ;; 7883475c125cSmrg *) new_libs="$new_libs $deplib" ;; 788405b261ecSmrg esac 78854642e01fSmrg ;; 7886475c125cSmrg *) new_libs="$new_libs $deplib" ;; 78874642e01fSmrg esac 78884642e01fSmrg done 78894642e01fSmrg compile_deplibs="$new_libs" 789005b261ecSmrg 789105b261ecSmrg 7892475c125cSmrg compile_command="$compile_command $compile_deplibs" 7893475c125cSmrg finalize_command="$finalize_command $finalize_deplibs" 789405b261ecSmrg 78954642e01fSmrg if test -n "$rpath$xrpath"; then 78964642e01fSmrg # If the user specified any rpath flags, then add them. 78974642e01fSmrg for libdir in $rpath $xrpath; do 78984642e01fSmrg # This is the magic to use -rpath. 78994642e01fSmrg case "$finalize_rpath " in 79004642e01fSmrg *" $libdir "*) ;; 7901475c125cSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 79024642e01fSmrg esac 79034642e01fSmrg done 79044642e01fSmrg fi 790505b261ecSmrg 79064642e01fSmrg # Now hardcode the library paths 79074642e01fSmrg rpath= 79084642e01fSmrg hardcode_libdirs= 79094642e01fSmrg for libdir in $compile_rpath $finalize_rpath; do 79104642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 79114642e01fSmrg if test -n "$hardcode_libdir_separator"; then 79124642e01fSmrg if test -z "$hardcode_libdirs"; then 79134642e01fSmrg hardcode_libdirs="$libdir" 79144642e01fSmrg else 79154642e01fSmrg # Just accumulate the unique libdirs. 79164642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 79174642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 79184642e01fSmrg ;; 79194642e01fSmrg *) 7920475c125cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 79214642e01fSmrg ;; 79224642e01fSmrg esac 79234642e01fSmrg fi 792405b261ecSmrg else 79254642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 7926475c125cSmrg rpath="$rpath $flag" 792705b261ecSmrg fi 79284642e01fSmrg elif test -n "$runpath_var"; then 79294642e01fSmrg case "$perm_rpath " in 79304642e01fSmrg *" $libdir "*) ;; 7931475c125cSmrg *) perm_rpath="$perm_rpath $libdir" ;; 79324642e01fSmrg esac 79334642e01fSmrg fi 79344642e01fSmrg case $host in 79354642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 79364642e01fSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 79374642e01fSmrg case :$dllsearchpath: in 79384642e01fSmrg *":$libdir:"*) ;; 79394642e01fSmrg ::) dllsearchpath=$libdir;; 7940475c125cSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 79414642e01fSmrg esac 79424642e01fSmrg case :$dllsearchpath: in 79434642e01fSmrg *":$testbindir:"*) ;; 79444642e01fSmrg ::) dllsearchpath=$testbindir;; 7945475c125cSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 79464642e01fSmrg esac 79474642e01fSmrg ;; 79484642e01fSmrg esac 79494642e01fSmrg done 79504642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 79514642e01fSmrg if test -n "$hardcode_libdir_separator" && 79524642e01fSmrg test -n "$hardcode_libdirs"; then 79534642e01fSmrg libdir="$hardcode_libdirs" 79544642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 79554642e01fSmrg fi 79564642e01fSmrg compile_rpath="$rpath" 795705b261ecSmrg 79584642e01fSmrg rpath= 79594642e01fSmrg hardcode_libdirs= 79604642e01fSmrg for libdir in $finalize_rpath; do 79614642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 79624642e01fSmrg if test -n "$hardcode_libdir_separator"; then 79634642e01fSmrg if test -z "$hardcode_libdirs"; then 79644642e01fSmrg hardcode_libdirs="$libdir" 79654642e01fSmrg else 79664642e01fSmrg # Just accumulate the unique libdirs. 79674642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 79684642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 79694642e01fSmrg ;; 79704642e01fSmrg *) 7971475c125cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 79724642e01fSmrg ;; 79734642e01fSmrg esac 79744642e01fSmrg fi 797505b261ecSmrg else 79764642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 7977475c125cSmrg rpath="$rpath $flag" 797805b261ecSmrg fi 79794642e01fSmrg elif test -n "$runpath_var"; then 79804642e01fSmrg case "$finalize_perm_rpath " in 79814642e01fSmrg *" $libdir "*) ;; 7982475c125cSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 79834642e01fSmrg esac 798405b261ecSmrg fi 79854642e01fSmrg done 79864642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 79874642e01fSmrg if test -n "$hardcode_libdir_separator" && 79884642e01fSmrg test -n "$hardcode_libdirs"; then 79894642e01fSmrg libdir="$hardcode_libdirs" 79904642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 79914642e01fSmrg fi 79924642e01fSmrg finalize_rpath="$rpath" 799305b261ecSmrg 79944642e01fSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 79954642e01fSmrg # Transform all the library objects into standard objects. 79966747b715Smrg compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 79976747b715Smrg finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 79984642e01fSmrg fi 799905b261ecSmrg 80004642e01fSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 800105b261ecSmrg 80024642e01fSmrg # template prelinking step 80034642e01fSmrg if test -n "$prelink_cmds"; then 80044642e01fSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 80054642e01fSmrg fi 800605b261ecSmrg 80074642e01fSmrg wrappers_required=yes 80084642e01fSmrg case $host in 80096747b715Smrg *cegcc* | *mingw32ce*) 80106747b715Smrg # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 80116747b715Smrg wrappers_required=no 80126747b715Smrg ;; 80134642e01fSmrg *cygwin* | *mingw* ) 80144642e01fSmrg if test "$build_libtool_libs" != yes; then 80154642e01fSmrg wrappers_required=no 80164642e01fSmrg fi 80174642e01fSmrg ;; 80184642e01fSmrg *) 80194642e01fSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 80204642e01fSmrg wrappers_required=no 80214642e01fSmrg fi 80224642e01fSmrg ;; 80234642e01fSmrg esac 80244642e01fSmrg if test "$wrappers_required" = no; then 80254642e01fSmrg # Replace the output file specification. 80266747b715Smrg compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 80274642e01fSmrg link_command="$compile_command$compile_rpath" 802805b261ecSmrg 80294642e01fSmrg # We have no uninstalled library dependencies, so finalize right now. 80304642e01fSmrg exit_status=0 80314642e01fSmrg func_show_eval "$link_command" 'exit_status=$?' 803205b261ecSmrg 80334642e01fSmrg # Delete the generated files. 80344642e01fSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 80354642e01fSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 803605b261ecSmrg fi 803705b261ecSmrg 80384642e01fSmrg exit $exit_status 80394642e01fSmrg fi 804005b261ecSmrg 80414642e01fSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 80424642e01fSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 80434642e01fSmrg fi 80444642e01fSmrg if test -n "$finalize_shlibpath"; then 80454642e01fSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 80464642e01fSmrg fi 804705b261ecSmrg 80484642e01fSmrg compile_var= 80494642e01fSmrg finalize_var= 80504642e01fSmrg if test -n "$runpath_var"; then 80514642e01fSmrg if test -n "$perm_rpath"; then 80524642e01fSmrg # We should set the runpath_var. 80534642e01fSmrg rpath= 80544642e01fSmrg for dir in $perm_rpath; do 8055475c125cSmrg rpath="$rpath$dir:" 80564642e01fSmrg done 80574642e01fSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 805805b261ecSmrg fi 80594642e01fSmrg if test -n "$finalize_perm_rpath"; then 80604642e01fSmrg # We should set the runpath_var. 80614642e01fSmrg rpath= 80624642e01fSmrg for dir in $finalize_perm_rpath; do 8063475c125cSmrg rpath="$rpath$dir:" 80644642e01fSmrg done 80654642e01fSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 806605b261ecSmrg fi 80674642e01fSmrg fi 806805b261ecSmrg 80694642e01fSmrg if test "$no_install" = yes; then 80704642e01fSmrg # We don't need to create a wrapper script. 80714642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 80724642e01fSmrg # Replace the output file specification. 80736747b715Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 80744642e01fSmrg # Delete the old output file. 80754642e01fSmrg $opt_dry_run || $RM $output 80764642e01fSmrg # Link the executable and exit 80774642e01fSmrg func_show_eval "$link_command" 'exit $?' 807805b261ecSmrg exit $EXIT_SUCCESS 80794642e01fSmrg fi 808005b261ecSmrg 80814642e01fSmrg if test "$hardcode_action" = relink; then 80824642e01fSmrg # Fast installation is not supported 80834642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 80844642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 80854642e01fSmrg 80864642e01fSmrg func_warning "this platform does not like uninstalled shared libraries" 80874642e01fSmrg func_warning "\`$output' will be relinked during installation" 80884642e01fSmrg else 80894642e01fSmrg if test "$fast_install" != no; then 80904642e01fSmrg link_command="$finalize_var$compile_command$finalize_rpath" 80914642e01fSmrg if test "$fast_install" = yes; then 80926747b715Smrg relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 80934642e01fSmrg else 80944642e01fSmrg # fast_install is set to needless 80954642e01fSmrg relink_command= 80964642e01fSmrg fi 809705b261ecSmrg else 80984642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 80994642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 810005b261ecSmrg fi 81014642e01fSmrg fi 810205b261ecSmrg 81034642e01fSmrg # Replace the output file specification. 81046747b715Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 810505b261ecSmrg 81064642e01fSmrg # Delete the old output files. 81074642e01fSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 810805b261ecSmrg 81094642e01fSmrg func_show_eval "$link_command" 'exit $?' 811005b261ecSmrg 81114642e01fSmrg # Now create the wrapper script. 81124642e01fSmrg func_verbose "creating $output" 811305b261ecSmrg 81144642e01fSmrg # Quote the relink command for shipping. 81154642e01fSmrg if test -n "$relink_command"; then 81164642e01fSmrg # Preserve any variables that may affect compiler behavior 81174642e01fSmrg for var in $variables_saved_for_relink; do 81184642e01fSmrg if eval test -z \"\${$var+set}\"; then 81194642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 81204642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 81214642e01fSmrg relink_command="$var=; export $var; $relink_command" 812205b261ecSmrg else 81234642e01fSmrg func_quote_for_eval "$var_value" 81244642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 812505b261ecSmrg fi 81264642e01fSmrg done 81274642e01fSmrg relink_command="(cd `pwd`; $relink_command)" 81286747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 81294642e01fSmrg fi 81304642e01fSmrg 81314642e01fSmrg # Only actually do things if not in dry run mode. 81324642e01fSmrg $opt_dry_run || { 81334642e01fSmrg # win32 will think the script is a binary if it has 81344642e01fSmrg # a .exe suffix, so we strip it off here. 81354642e01fSmrg case $output in 81364642e01fSmrg *.exe) func_stripname '' '.exe' "$output" 81374642e01fSmrg output=$func_stripname_result ;; 81384642e01fSmrg esac 81394642e01fSmrg # test for cygwin because mv fails w/o .exe extensions 81404642e01fSmrg case $host in 81414642e01fSmrg *cygwin*) 81424642e01fSmrg exeext=.exe 81434642e01fSmrg func_stripname '' '.exe' "$outputname" 81444642e01fSmrg outputname=$func_stripname_result ;; 81454642e01fSmrg *) exeext= ;; 814605b261ecSmrg esac 81474642e01fSmrg case $host in 81484642e01fSmrg *cygwin* | *mingw* ) 81494642e01fSmrg func_dirname_and_basename "$output" "" "." 81504642e01fSmrg output_name=$func_basename_result 81514642e01fSmrg output_path=$func_dirname_result 81524642e01fSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 81534642e01fSmrg cwrapper="$output_path/$output_name.exe" 81544642e01fSmrg $RM $cwrappersource $cwrapper 81554642e01fSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 81564642e01fSmrg 81574642e01fSmrg func_emit_cwrapperexe_src > $cwrappersource 81584642e01fSmrg 81594642e01fSmrg # The wrapper executable is built using the $host compiler, 81604642e01fSmrg # because it contains $host paths and files. If cross- 81614642e01fSmrg # compiling, it, like the target executable, must be 81624642e01fSmrg # executed on the $host or under an emulation environment. 81634642e01fSmrg $opt_dry_run || { 81644642e01fSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 81654642e01fSmrg $STRIP $cwrapper 81664642e01fSmrg } 816705b261ecSmrg 81684642e01fSmrg # Now, create the wrapper script for func_source use: 81694642e01fSmrg func_ltwrapper_scriptname $cwrapper 81704642e01fSmrg $RM $func_ltwrapper_scriptname_result 81714642e01fSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 81724642e01fSmrg $opt_dry_run || { 81734642e01fSmrg # note: this script will not be executed, so do not chmod. 81744642e01fSmrg if test "x$build" = "x$host" ; then 81754642e01fSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 81764642e01fSmrg else 81774642e01fSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 81784642e01fSmrg fi 81794642e01fSmrg } 81804642e01fSmrg ;; 81814642e01fSmrg * ) 81824642e01fSmrg $RM $output 81834642e01fSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 818405b261ecSmrg 81854642e01fSmrg func_emit_wrapper no > $output 81864642e01fSmrg chmod +x $output 81874642e01fSmrg ;; 81884642e01fSmrg esac 81894642e01fSmrg } 81904642e01fSmrg exit $EXIT_SUCCESS 81914642e01fSmrg ;; 81924642e01fSmrg esac 819305b261ecSmrg 81944642e01fSmrg # See if we need to build an old-fashioned archive. 81954642e01fSmrg for oldlib in $oldlibs; do 819605b261ecSmrg 81974642e01fSmrg if test "$build_libtool_libs" = convenience; then 81984642e01fSmrg oldobjs="$libobjs_save $symfileobj" 81994642e01fSmrg addlibs="$convenience" 82004642e01fSmrg build_libtool_libs=no 82014642e01fSmrg else 82024642e01fSmrg if test "$build_libtool_libs" = module; then 82034642e01fSmrg oldobjs="$libobjs_save" 82044642e01fSmrg build_libtool_libs=no 82054642e01fSmrg else 82064642e01fSmrg oldobjs="$old_deplibs $non_pic_objects" 82074642e01fSmrg if test "$preload" = yes && test -f "$symfileobj"; then 8208475c125cSmrg oldobjs="$oldobjs $symfileobj" 82094642e01fSmrg fi 82104642e01fSmrg fi 82114642e01fSmrg addlibs="$old_convenience" 821205b261ecSmrg fi 821305b261ecSmrg 82144642e01fSmrg if test -n "$addlibs"; then 82154642e01fSmrg gentop="$output_objdir/${outputname}x" 8216475c125cSmrg generated="$generated $gentop" 821705b261ecSmrg 82184642e01fSmrg func_extract_archives $gentop $addlibs 8219475c125cSmrg oldobjs="$oldobjs $func_extract_archives_result" 82204642e01fSmrg fi 822105b261ecSmrg 82224642e01fSmrg # Do each command in the archive commands. 82234642e01fSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 82244642e01fSmrg cmds=$old_archive_from_new_cmds 82254642e01fSmrg else 822605b261ecSmrg 82274642e01fSmrg # Add any objects from preloaded convenience libraries 82284642e01fSmrg if test -n "$dlprefiles"; then 82294642e01fSmrg gentop="$output_objdir/${outputname}x" 8230475c125cSmrg generated="$generated $gentop" 823105b261ecSmrg 82324642e01fSmrg func_extract_archives $gentop $dlprefiles 8233475c125cSmrg oldobjs="$oldobjs $func_extract_archives_result" 82344642e01fSmrg fi 823505b261ecSmrg 82364642e01fSmrg # POSIX demands no paths to be encoded in archives. We have 82374642e01fSmrg # to avoid creating archives with duplicate basenames if we 82384642e01fSmrg # might have to extract them afterwards, e.g., when creating a 82394642e01fSmrg # static archive out of a convenience library, or when linking 82404642e01fSmrg # the entirety of a libtool archive into another (currently 82414642e01fSmrg # not supported by libtool). 82424642e01fSmrg if (for obj in $oldobjs 82434642e01fSmrg do 82444642e01fSmrg func_basename "$obj" 82454642e01fSmrg $ECHO "$func_basename_result" 82464642e01fSmrg done | sort | sort -uc >/dev/null 2>&1); then 82474642e01fSmrg : 82484642e01fSmrg else 82496747b715Smrg echo "copying selected object files to avoid basename conflicts..." 82504642e01fSmrg gentop="$output_objdir/${outputname}x" 8251475c125cSmrg generated="$generated $gentop" 82524642e01fSmrg func_mkdir_p "$gentop" 82534642e01fSmrg save_oldobjs=$oldobjs 82544642e01fSmrg oldobjs= 82554642e01fSmrg counter=1 82564642e01fSmrg for obj in $save_oldobjs 82574642e01fSmrg do 82584642e01fSmrg func_basename "$obj" 82594642e01fSmrg objbase="$func_basename_result" 82604642e01fSmrg case " $oldobjs " in 82614642e01fSmrg " ") oldobjs=$obj ;; 82624642e01fSmrg *[\ /]"$objbase "*) 82634642e01fSmrg while :; do 82644642e01fSmrg # Make sure we don't pick an alternate name that also 82654642e01fSmrg # overlaps. 82664642e01fSmrg newobj=lt$counter-$objbase 82674642e01fSmrg func_arith $counter + 1 82684642e01fSmrg counter=$func_arith_result 82694642e01fSmrg case " $oldobjs " in 82704642e01fSmrg *[\ /]"$newobj "*) ;; 82714642e01fSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 82724642e01fSmrg esac 82734642e01fSmrg done 82744642e01fSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 8275475c125cSmrg oldobjs="$oldobjs $gentop/$newobj" 82764642e01fSmrg ;; 8277475c125cSmrg *) oldobjs="$oldobjs $obj" ;; 82784642e01fSmrg esac 827905b261ecSmrg done 828005b261ecSmrg fi 82814642e01fSmrg eval cmds=\"$old_archive_cmds\" 828205b261ecSmrg 82834642e01fSmrg func_len " $cmds" 82844642e01fSmrg len=$func_len_result 82854642e01fSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 82864642e01fSmrg cmds=$old_archive_cmds 82874642e01fSmrg else 82884642e01fSmrg # the command line is too long to link in one step, link in parts 82894642e01fSmrg func_verbose "using piecewise archive linking..." 82904642e01fSmrg save_RANLIB=$RANLIB 82914642e01fSmrg RANLIB=: 82924642e01fSmrg objlist= 82934642e01fSmrg concat_cmds= 82944642e01fSmrg save_oldobjs=$oldobjs 82954642e01fSmrg oldobjs= 82964642e01fSmrg # Is there a better way of finding the last object in the list? 82974642e01fSmrg for obj in $save_oldobjs 82984642e01fSmrg do 82994642e01fSmrg last_oldobj=$obj 83004642e01fSmrg done 83014642e01fSmrg eval test_cmds=\"$old_archive_cmds\" 83024642e01fSmrg func_len " $test_cmds" 83034642e01fSmrg len0=$func_len_result 83044642e01fSmrg len=$len0 83054642e01fSmrg for obj in $save_oldobjs 83064642e01fSmrg do 83074642e01fSmrg func_len " $obj" 83084642e01fSmrg func_arith $len + $func_len_result 83094642e01fSmrg len=$func_arith_result 83104642e01fSmrg func_append objlist " $obj" 83114642e01fSmrg if test "$len" -lt "$max_cmd_len"; then 83124642e01fSmrg : 83134642e01fSmrg else 83144642e01fSmrg # the above command should be used before it gets too long 83154642e01fSmrg oldobjs=$objlist 83164642e01fSmrg if test "$obj" = "$last_oldobj" ; then 83174642e01fSmrg RANLIB=$save_RANLIB 83184642e01fSmrg fi 83194642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 83204642e01fSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 83214642e01fSmrg objlist= 83224642e01fSmrg len=$len0 83234642e01fSmrg fi 83244642e01fSmrg done 83254642e01fSmrg RANLIB=$save_RANLIB 83264642e01fSmrg oldobjs=$objlist 83274642e01fSmrg if test "X$oldobjs" = "X" ; then 83284642e01fSmrg eval cmds=\"\$concat_cmds\" 83294642e01fSmrg else 83304642e01fSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 83314642e01fSmrg fi 83324642e01fSmrg fi 83334642e01fSmrg fi 83344642e01fSmrg func_execute_cmds "$cmds" 'exit $?' 833505b261ecSmrg done 833605b261ecSmrg 83374642e01fSmrg test -n "$generated" && \ 83384642e01fSmrg func_show_eval "${RM}r$generated" 833905b261ecSmrg 83404642e01fSmrg # Now create the libtool archive. 83414642e01fSmrg case $output in 83424642e01fSmrg *.la) 83434642e01fSmrg old_library= 83444642e01fSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 83454642e01fSmrg func_verbose "creating $output" 834605b261ecSmrg 83474642e01fSmrg # Preserve any variables that may affect compiler behavior 83484642e01fSmrg for var in $variables_saved_for_relink; do 83494642e01fSmrg if eval test -z \"\${$var+set}\"; then 83504642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 83514642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 83524642e01fSmrg relink_command="$var=; export $var; $relink_command" 835305b261ecSmrg else 83544642e01fSmrg func_quote_for_eval "$var_value" 83554642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 835605b261ecSmrg fi 83574642e01fSmrg done 83584642e01fSmrg # Quote the link command for shipping. 83594642e01fSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 83606747b715Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 83614642e01fSmrg if test "$hardcode_automatic" = yes ; then 83624642e01fSmrg relink_command= 83634642e01fSmrg fi 836405b261ecSmrg 83654642e01fSmrg # Only create the output if not a dry run. 83664642e01fSmrg $opt_dry_run || { 83674642e01fSmrg for installed in no yes; do 83684642e01fSmrg if test "$installed" = yes; then 83694642e01fSmrg if test -z "$install_libdir"; then 83704642e01fSmrg break 83714642e01fSmrg fi 83724642e01fSmrg output="$output_objdir/$outputname"i 83734642e01fSmrg # Replace all uninstalled libtool libraries with the installed ones 83744642e01fSmrg newdependency_libs= 83754642e01fSmrg for deplib in $dependency_libs; do 83764642e01fSmrg case $deplib in 83774642e01fSmrg *.la) 83784642e01fSmrg func_basename "$deplib" 83794642e01fSmrg name="$func_basename_result" 83804642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 83814642e01fSmrg test -z "$libdir" && \ 83824642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 8383475c125cSmrg newdependency_libs="$newdependency_libs $libdir/$name" 83846747b715Smrg ;; 8385475c125cSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 83864642e01fSmrg esac 83874642e01fSmrg done 83884642e01fSmrg dependency_libs="$newdependency_libs" 83894642e01fSmrg newdlfiles= 83904642e01fSmrg 83914642e01fSmrg for lib in $dlfiles; do 83924642e01fSmrg case $lib in 83934642e01fSmrg *.la) 83944642e01fSmrg func_basename "$lib" 83954642e01fSmrg name="$func_basename_result" 83964642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 83974642e01fSmrg test -z "$libdir" && \ 83984642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 8399475c125cSmrg newdlfiles="$newdlfiles $libdir/$name" 84004642e01fSmrg ;; 8401475c125cSmrg *) newdlfiles="$newdlfiles $lib" ;; 84024642e01fSmrg esac 84034642e01fSmrg done 84044642e01fSmrg dlfiles="$newdlfiles" 84054642e01fSmrg newdlprefiles= 84064642e01fSmrg for lib in $dlprefiles; do 84074642e01fSmrg case $lib in 84084642e01fSmrg *.la) 84094642e01fSmrg # Only pass preopened files to the pseudo-archive (for 84104642e01fSmrg # eventual linking with the app. that links it) if we 84114642e01fSmrg # didn't already link the preopened objects directly into 84124642e01fSmrg # the library: 84134642e01fSmrg func_basename "$lib" 84144642e01fSmrg name="$func_basename_result" 84154642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 84164642e01fSmrg test -z "$libdir" && \ 84174642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 8418475c125cSmrg newdlprefiles="$newdlprefiles $libdir/$name" 84194642e01fSmrg ;; 84204642e01fSmrg esac 84214642e01fSmrg done 84224642e01fSmrg dlprefiles="$newdlprefiles" 84234642e01fSmrg else 84244642e01fSmrg newdlfiles= 84254642e01fSmrg for lib in $dlfiles; do 84264642e01fSmrg case $lib in 84274642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 84284642e01fSmrg *) abs=`pwd`"/$lib" ;; 84294642e01fSmrg esac 8430475c125cSmrg newdlfiles="$newdlfiles $abs" 84314642e01fSmrg done 84324642e01fSmrg dlfiles="$newdlfiles" 84334642e01fSmrg newdlprefiles= 84344642e01fSmrg for lib in $dlprefiles; do 84354642e01fSmrg case $lib in 84364642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 84374642e01fSmrg *) abs=`pwd`"/$lib" ;; 84384642e01fSmrg esac 8439475c125cSmrg newdlprefiles="$newdlprefiles $abs" 84404642e01fSmrg done 84414642e01fSmrg dlprefiles="$newdlprefiles" 84424642e01fSmrg fi 84434642e01fSmrg $RM $output 84444642e01fSmrg # place dlname in correct position for cygwin 84456747b715Smrg # In fact, it would be nice if we could use this code for all target 84466747b715Smrg # systems that can't hard-code library paths into their executables 84476747b715Smrg # and that have no shared library path variable independent of PATH, 84486747b715Smrg # but it turns out we can't easily determine that from inspecting 84496747b715Smrg # libtool variables, so we have to hard-code the OSs to which it 84506747b715Smrg # applies here; at the moment, that means platforms that use the PE 84516747b715Smrg # object format with DLL files. See the long comment at the top of 84526747b715Smrg # tests/bindir.at for full details. 84534642e01fSmrg tdlname=$dlname 84544642e01fSmrg case $host,$output,$installed,$module,$dlname in 84556747b715Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 84566747b715Smrg # If a -bindir argument was supplied, place the dll there. 84576747b715Smrg if test "x$bindir" != x ; 84586747b715Smrg then 84596747b715Smrg func_relative_path "$install_libdir" "$bindir" 84606747b715Smrg tdlname=$func_relative_path_result$dlname 84616747b715Smrg else 84626747b715Smrg # Otherwise fall back on heuristic. 84636747b715Smrg tdlname=../bin/$dlname 84646747b715Smrg fi 84656747b715Smrg ;; 84664642e01fSmrg esac 84674642e01fSmrg $ECHO > $output "\ 84684642e01fSmrg# $outputname - a libtool library file 84694642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 84704642e01fSmrg# 84714642e01fSmrg# Please DO NOT delete this file! 84724642e01fSmrg# It is necessary for linking the library. 847305b261ecSmrg 84744642e01fSmrg# The name that we can dlopen(3). 84754642e01fSmrgdlname='$tdlname' 847605b261ecSmrg 84774642e01fSmrg# Names of this library. 84784642e01fSmrglibrary_names='$library_names' 847905b261ecSmrg 84804642e01fSmrg# The name of the static archive. 84814642e01fSmrgold_library='$old_library' 848205b261ecSmrg 84834642e01fSmrg# Linker flags that can not go in dependency_libs. 84844642e01fSmrginherited_linker_flags='$new_inherited_linker_flags' 848505b261ecSmrg 84864642e01fSmrg# Libraries that this one depends upon. 84874642e01fSmrgdependency_libs='$dependency_libs' 848805b261ecSmrg 84894642e01fSmrg# Names of additional weak libraries provided by this library 84904642e01fSmrgweak_library_names='$weak_libs' 849105b261ecSmrg 84924642e01fSmrg# Version information for $libname. 84934642e01fSmrgcurrent=$current 84944642e01fSmrgage=$age 84954642e01fSmrgrevision=$revision 849605b261ecSmrg 84974642e01fSmrg# Is this an already installed library? 84984642e01fSmrginstalled=$installed 849905b261ecSmrg 85004642e01fSmrg# Should we warn about portability when linking against -modules? 85014642e01fSmrgshouldnotlink=$module 850205b261ecSmrg 85034642e01fSmrg# Files to dlopen/dlpreopen 85044642e01fSmrgdlopen='$dlfiles' 85054642e01fSmrgdlpreopen='$dlprefiles' 850605b261ecSmrg 85074642e01fSmrg# Directory that this library needs to be installed in: 85084642e01fSmrglibdir='$install_libdir'" 85094642e01fSmrg if test "$installed" = no && test "$need_relink" = yes; then 85104642e01fSmrg $ECHO >> $output "\ 85114642e01fSmrgrelink_command=\"$relink_command\"" 85124642e01fSmrg fi 85134642e01fSmrg done 85144642e01fSmrg } 851505b261ecSmrg 85164642e01fSmrg # Do a symbolic link so that the libtool archive can be found in 85174642e01fSmrg # LD_LIBRARY_PATH before the program is installed. 85184642e01fSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 85194642e01fSmrg ;; 85204642e01fSmrg esac 85214642e01fSmrg exit $EXIT_SUCCESS 85224642e01fSmrg} 852305b261ecSmrg 8524475c125cSmrg{ test "$mode" = link || test "$mode" = relink; } && 85254642e01fSmrg func_mode_link ${1+"$@"} 852605b261ecSmrg 852705b261ecSmrg 85284642e01fSmrg# func_mode_uninstall arg... 85294642e01fSmrgfunc_mode_uninstall () 85304642e01fSmrg{ 85314642e01fSmrg $opt_debug 85324642e01fSmrg RM="$nonopt" 853305b261ecSmrg files= 853405b261ecSmrg rmforce= 853505b261ecSmrg exit_status=0 853605b261ecSmrg 853705b261ecSmrg # This variable tells wrapper scripts just to set variables rather 853805b261ecSmrg # than running their programs. 853905b261ecSmrg libtool_install_magic="$magic" 854005b261ecSmrg 854105b261ecSmrg for arg 854205b261ecSmrg do 854305b261ecSmrg case $arg in 8544475c125cSmrg -f) RM="$RM $arg"; rmforce=yes ;; 8545475c125cSmrg -*) RM="$RM $arg" ;; 8546475c125cSmrg *) files="$files $arg" ;; 854705b261ecSmrg esac 854805b261ecSmrg done 854905b261ecSmrg 85504642e01fSmrg test -z "$RM" && \ 85514642e01fSmrg func_fatal_help "you must specify an RM program" 855205b261ecSmrg 855305b261ecSmrg rmdirs= 855405b261ecSmrg 8555475c125cSmrg origobjdir="$objdir" 855605b261ecSmrg for file in $files; do 85574642e01fSmrg func_dirname "$file" "" "." 85584642e01fSmrg dir="$func_dirname_result" 85594642e01fSmrg if test "X$dir" = X.; then 8560475c125cSmrg objdir="$origobjdir" 856105b261ecSmrg else 8562475c125cSmrg objdir="$dir/$origobjdir" 856305b261ecSmrg fi 85644642e01fSmrg func_basename "$file" 85654642e01fSmrg name="$func_basename_result" 8566475c125cSmrg test "$mode" = uninstall && objdir="$dir" 856705b261ecSmrg 8568475c125cSmrg # Remember objdir for removal later, being careful to avoid duplicates 8569475c125cSmrg if test "$mode" = clean; then 857005b261ecSmrg case " $rmdirs " in 8571475c125cSmrg *" $objdir "*) ;; 8572475c125cSmrg *) rmdirs="$rmdirs $objdir" ;; 857305b261ecSmrg esac 857405b261ecSmrg fi 857505b261ecSmrg 857605b261ecSmrg # Don't error if the file doesn't exist and rm -f was used. 85774642e01fSmrg if { test -L "$file"; } >/dev/null 2>&1 || 85784642e01fSmrg { test -h "$file"; } >/dev/null 2>&1 || 85794642e01fSmrg test -f "$file"; then 858005b261ecSmrg : 858105b261ecSmrg elif test -d "$file"; then 858205b261ecSmrg exit_status=1 858305b261ecSmrg continue 858405b261ecSmrg elif test "$rmforce" = yes; then 858505b261ecSmrg continue 858605b261ecSmrg fi 858705b261ecSmrg 858805b261ecSmrg rmfiles="$file" 858905b261ecSmrg 859005b261ecSmrg case $name in 859105b261ecSmrg *.la) 859205b261ecSmrg # Possibly a libtool archive, so verify it. 85934642e01fSmrg if func_lalib_p "$file"; then 85944642e01fSmrg func_source $dir/$name 859505b261ecSmrg 859605b261ecSmrg # Delete the libtool libraries and symlinks. 859705b261ecSmrg for n in $library_names; do 8598475c125cSmrg rmfiles="$rmfiles $objdir/$n" 859905b261ecSmrg done 8600475c125cSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 860105b261ecSmrg 8602475c125cSmrg case "$mode" in 860305b261ecSmrg clean) 8604475c125cSmrg case " $library_names " in 8605475c125cSmrg # " " in the beginning catches empty $dlname 860605b261ecSmrg *" $dlname "*) ;; 8607475c125cSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 860805b261ecSmrg esac 8609475c125cSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 861005b261ecSmrg ;; 861105b261ecSmrg uninstall) 861205b261ecSmrg if test -n "$library_names"; then 861305b261ecSmrg # Do each command in the postuninstall commands. 86144642e01fSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 861505b261ecSmrg fi 861605b261ecSmrg 861705b261ecSmrg if test -n "$old_library"; then 861805b261ecSmrg # Do each command in the old_postuninstall commands. 86194642e01fSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 862005b261ecSmrg fi 862105b261ecSmrg # FIXME: should reinstall the best remaining shared library. 862205b261ecSmrg ;; 862305b261ecSmrg esac 862405b261ecSmrg fi 862505b261ecSmrg ;; 862605b261ecSmrg 862705b261ecSmrg *.lo) 862805b261ecSmrg # Possibly a libtool object, so verify it. 86294642e01fSmrg if func_lalib_p "$file"; then 863005b261ecSmrg 863105b261ecSmrg # Read the .lo file 86324642e01fSmrg func_source $dir/$name 863305b261ecSmrg 863405b261ecSmrg # Add PIC object to the list of files to remove. 86354642e01fSmrg if test -n "$pic_object" && 86364642e01fSmrg test "$pic_object" != none; then 8637475c125cSmrg rmfiles="$rmfiles $dir/$pic_object" 863805b261ecSmrg fi 863905b261ecSmrg 864005b261ecSmrg # Add non-PIC object to the list of files to remove. 86414642e01fSmrg if test -n "$non_pic_object" && 86424642e01fSmrg test "$non_pic_object" != none; then 8643475c125cSmrg rmfiles="$rmfiles $dir/$non_pic_object" 864405b261ecSmrg fi 864505b261ecSmrg fi 864605b261ecSmrg ;; 864705b261ecSmrg 864805b261ecSmrg *) 8649475c125cSmrg if test "$mode" = clean ; then 865005b261ecSmrg noexename=$name 865105b261ecSmrg case $file in 865205b261ecSmrg *.exe) 86534642e01fSmrg func_stripname '' '.exe' "$file" 86544642e01fSmrg file=$func_stripname_result 86554642e01fSmrg func_stripname '' '.exe' "$name" 86564642e01fSmrg noexename=$func_stripname_result 865705b261ecSmrg # $file with .exe has already been added to rmfiles, 865805b261ecSmrg # add $file without .exe 8659475c125cSmrg rmfiles="$rmfiles $file" 866005b261ecSmrg ;; 866105b261ecSmrg esac 866205b261ecSmrg # Do a test to see if this is a libtool program. 86634642e01fSmrg if func_ltwrapper_p "$file"; then 86644642e01fSmrg if func_ltwrapper_executable_p "$file"; then 86654642e01fSmrg func_ltwrapper_scriptname "$file" 86664642e01fSmrg relink_command= 86674642e01fSmrg func_source $func_ltwrapper_scriptname_result 8668475c125cSmrg rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 86694642e01fSmrg else 86704642e01fSmrg relink_command= 86714642e01fSmrg func_source $dir/$noexename 86724642e01fSmrg fi 867305b261ecSmrg 867405b261ecSmrg # note $name still contains .exe if it was in $file originally 867505b261ecSmrg # as does the version of $file that was added into $rmfiles 8676475c125cSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 867705b261ecSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 8678475c125cSmrg rmfiles="$rmfiles $objdir/lt-$name" 867905b261ecSmrg fi 868005b261ecSmrg if test "X$noexename" != "X$name" ; then 8681475c125cSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 868205b261ecSmrg fi 868305b261ecSmrg fi 868405b261ecSmrg fi 868505b261ecSmrg ;; 868605b261ecSmrg esac 86874642e01fSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 868805b261ecSmrg done 8689475c125cSmrg objdir="$origobjdir" 869005b261ecSmrg 869105b261ecSmrg # Try to remove the ${objdir}s in the directories where we deleted files 869205b261ecSmrg for dir in $rmdirs; do 869305b261ecSmrg if test -d "$dir"; then 86944642e01fSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 869505b261ecSmrg fi 869605b261ecSmrg done 869705b261ecSmrg 869805b261ecSmrg exit $exit_status 86994642e01fSmrg} 870005b261ecSmrg 8701475c125cSmrg{ test "$mode" = uninstall || test "$mode" = clean; } && 87024642e01fSmrg func_mode_uninstall ${1+"$@"} 870305b261ecSmrg 8704475c125cSmrgtest -z "$mode" && { 87054642e01fSmrg help="$generic_help" 87064642e01fSmrg func_fatal_help "you must specify a MODE" 87074642e01fSmrg} 87084642e01fSmrg 87094642e01fSmrgtest -z "$exec_cmd" && \ 8710475c125cSmrg func_fatal_help "invalid operation mode \`$mode'" 871105b261ecSmrg 871205b261ecSmrgif test -n "$exec_cmd"; then 87134642e01fSmrg eval exec "$exec_cmd" 871405b261ecSmrg exit $EXIT_FAILURE 871505b261ecSmrgfi 871605b261ecSmrg 87174642e01fSmrgexit $exit_status 871805b261ecSmrg 871905b261ecSmrg 872005b261ecSmrg# The TAGs below are defined such that we never get into a situation 872105b261ecSmrg# in which we disable both kinds of libraries. Given conflicting 872205b261ecSmrg# choices, we go for a static library, that is the most portable, 872305b261ecSmrg# since we can't tell whether shared libraries were disabled because 872405b261ecSmrg# the user asked for that or because the platform doesn't support 872505b261ecSmrg# them. This is particularly important on AIX, because we don't 872605b261ecSmrg# support having both static and shared libraries enabled at the same 872705b261ecSmrg# time on that platform, so we default to a shared-only configuration. 872805b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only 872905b261ecSmrg# configuration. But we'll never go from static-only to shared-only. 873005b261ecSmrg 873105b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 87324642e01fSmrgbuild_libtool_libs=no 87334642e01fSmrgbuild_old_libs=yes 873405b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 873505b261ecSmrg 873605b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 87374642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 873805b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static 873905b261ecSmrg 874005b261ecSmrg# Local Variables: 874105b261ecSmrg# mode:shell-script 874205b261ecSmrg# sh-indentation:2 874305b261ecSmrg# End: 87444642e01fSmrg# vi:sw=2 87454642e01fSmrg 8746