ltmain.sh revision 4642e01f
14642e01fSmrg# Generated from ltmain.m4sh. 24642e01fSmrg 34642e01fSmrg# ltmain.sh (GNU libtool) 2.2.6 44642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 54642e01fSmrg 64642e01fSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 74642e01fSmrg# This is free software; see the source for copying conditions. There is NO 84642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 94642e01fSmrg 104642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify 1105b261ecSmrg# it under the terms of the GNU General Public License as published by 1205b261ecSmrg# the Free Software Foundation; either version 2 of the License, or 1305b261ecSmrg# (at your option) any later version. 1405b261ecSmrg# 154642e01fSmrg# As a special exception to the GNU General Public License, 164642e01fSmrg# if you distribute this file as part of a program or library that 174642e01fSmrg# is built using GNU Libtool, you may include this file under the 184642e01fSmrg# same distribution terms that you use for the rest of that program. 194642e01fSmrg# 204642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but 2105b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 2205b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2305b261ecSmrg# General Public License for more details. 2405b261ecSmrg# 2505b261ecSmrg# You should have received a copy of the GNU General Public License 264642e01fSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 274642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 284642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc., 294642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3005b261ecSmrg 314642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 324642e01fSmrg# 334642e01fSmrg# Provide generalized library-building support services. 344642e01fSmrg# 354642e01fSmrg# --config show all configuration variables 364642e01fSmrg# --debug enable verbose shell tracing 374642e01fSmrg# -n, --dry-run display commands without modifying any files 384642e01fSmrg# --features display basic configuration information and exit 394642e01fSmrg# --mode=MODE use operation mode MODE 404642e01fSmrg# --preserve-dup-deps don't remove duplicate dependency libraries 414642e01fSmrg# --quiet, --silent don't print informational messages 424642e01fSmrg# --tag=TAG use configuration variables from tag TAG 434642e01fSmrg# -v, --verbose print informational messages (default) 444642e01fSmrg# --version print version information 454642e01fSmrg# -h, --help print short or long help message 464642e01fSmrg# 474642e01fSmrg# MODE must be one of the following: 484642e01fSmrg# 494642e01fSmrg# clean remove files from the build directory 504642e01fSmrg# compile compile a source file into a libtool object 514642e01fSmrg# execute automatically set library path, then run a program 524642e01fSmrg# finish complete the installation of libtool libraries 534642e01fSmrg# install install libraries or executables 544642e01fSmrg# link create a library or an executable 554642e01fSmrg# uninstall remove libraries from an installed directory 564642e01fSmrg# 574642e01fSmrg# MODE-ARGS vary depending on the MODE. 584642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 594642e01fSmrg# 604642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and 614642e01fSmrg# include the following information: 624642e01fSmrg# 634642e01fSmrg# host-triplet: $host 644642e01fSmrg# shell: $SHELL 654642e01fSmrg# compiler: $LTCC 664642e01fSmrg# compiler flags: $LTCFLAGS 674642e01fSmrg# linker: $LD (gnu? $with_gnu_ld) 684642e01fSmrg# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 694642e01fSmrg# automake: $automake_version 704642e01fSmrg# autoconf: $autoconf_version 714642e01fSmrg# 724642e01fSmrg# Report bugs to <bug-libtool@gnu.org>. 7305b261ecSmrg 7405b261ecSmrgPROGRAM=ltmain.sh 7505b261ecSmrgPACKAGE=libtool 764642e01fSmrgVERSION="2.2.6 Debian-2.2.6a-4" 774642e01fSmrgTIMESTAMP="" 784642e01fSmrgpackage_revision=1.3012 7905b261ecSmrg 804642e01fSmrg# Be Bourne compatible 8105b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8205b261ecSmrg emulate sh 8305b261ecSmrg NULLCMD=: 8405b261ecSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 8505b261ecSmrg # is contrary to our usage. Disable this feature. 8605b261ecSmrg alias -g '${1+"$@"}'='"$@"' 8705b261ecSmrg setopt NO_GLOB_SUBST 8805b261ecSmrgelse 8905b261ecSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9005b261ecSmrgfi 9105b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 9205b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh 9305b261ecSmrg 944642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode. 9505b261ecSmrg# Only set LANG and LC_ALL to C if already set. 9605b261ecSmrg# These must not be set unconditionally because not all systems understand 9705b261ecSmrg# e.g. LANG=C (notably SCO). 984642e01fSmrglt_user_locale= 994642e01fSmrglt_safe_locale= 10005b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 10105b261ecSmrgdo 10205b261ecSmrg eval "if test \"\${$lt_var+set}\" = set; then 1034642e01fSmrg save_$lt_var=\$$lt_var 1044642e01fSmrg $lt_var=C 10505b261ecSmrg export $lt_var 1064642e01fSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1074642e01fSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 10805b261ecSmrg fi" 10905b261ecSmrgdone 11005b261ecSmrg 1114642e01fSmrg$lt_unset CDPATH 1124642e01fSmrg 1134642e01fSmrg 1144642e01fSmrg 1154642e01fSmrg 1164642e01fSmrg 1174642e01fSmrg: ${CP="cp -f"} 1184642e01fSmrg: ${ECHO="echo"} 1194642e01fSmrg: ${EGREP="/bin/grep -E"} 1204642e01fSmrg: ${FGREP="/bin/grep -F"} 1214642e01fSmrg: ${GREP="/bin/grep"} 1224642e01fSmrg: ${LN_S="ln -s"} 1234642e01fSmrg: ${MAKE="make"} 1244642e01fSmrg: ${MKDIR="mkdir"} 1254642e01fSmrg: ${MV="mv -f"} 1264642e01fSmrg: ${RM="rm -f"} 1274642e01fSmrg: ${SED="/bin/sed"} 1284642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1294642e01fSmrg: ${Xsed="$SED -e 1s/^X//"} 1304642e01fSmrg 1314642e01fSmrg# Global variables: 1324642e01fSmrgEXIT_SUCCESS=0 1334642e01fSmrgEXIT_FAILURE=1 1344642e01fSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1354642e01fSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1364642e01fSmrg 1374642e01fSmrgexit_status=$EXIT_SUCCESS 13805b261ecSmrg 13905b261ecSmrg# Make sure IFS has a sensible default 14005b261ecSmrglt_nl=' 14105b261ecSmrg' 14205b261ecSmrgIFS=" $lt_nl" 14305b261ecSmrg 1444642e01fSmrgdirname="s,/[^/]*$,," 1454642e01fSmrgbasename="s,^.*/,," 1464642e01fSmrg 1474642e01fSmrg# func_dirname_and_basename file append nondir_replacement 1484642e01fSmrg# perform func_basename and func_dirname in a single function 1494642e01fSmrg# call: 1504642e01fSmrg# dirname: Compute the dirname of FILE. If nonempty, 1514642e01fSmrg# add APPEND to the result, otherwise set result 1524642e01fSmrg# to NONDIR_REPLACEMENT. 1534642e01fSmrg# value returned in "$func_dirname_result" 1544642e01fSmrg# basename: Compute filename of FILE. 1554642e01fSmrg# value retuned in "$func_basename_result" 1564642e01fSmrg# Implementation must be kept synchronized with func_dirname 1574642e01fSmrg# and func_basename. For efficiency, we do not delegate to 1584642e01fSmrg# those functions but instead duplicate the functionality here. 1594642e01fSmrgfunc_dirname_and_basename () 1604642e01fSmrg{ 1614642e01fSmrg # Extract subdirectory from the argument. 1624642e01fSmrg func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1634642e01fSmrg if test "X$func_dirname_result" = "X${1}"; then 1644642e01fSmrg func_dirname_result="${3}" 1654642e01fSmrg else 1664642e01fSmrg func_dirname_result="$func_dirname_result${2}" 1674642e01fSmrg fi 1684642e01fSmrg func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1694642e01fSmrg} 17005b261ecSmrg 1714642e01fSmrg# Generated shell functions inserted here. 1724642e01fSmrg 1734642e01fSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1744642e01fSmrg# is ksh but when the shell is invoked as "sh" and the current value of 1754642e01fSmrg# the _XPG environment variable is not equal to 1 (one), the special 1764642e01fSmrg# positional parameter $0, within a function call, is the name of the 1774642e01fSmrg# function. 1784642e01fSmrgprogpath="$0" 1794642e01fSmrg 1804642e01fSmrg# The name of this program: 1814642e01fSmrg# In the unlikely event $progname began with a '-', it would play havoc with 1824642e01fSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case: 1834642e01fSmrgfunc_dirname_and_basename "$progpath" 1844642e01fSmrgprogname=$func_basename_result 1854642e01fSmrgcase $progname in 1864642e01fSmrg -*) progname=./$progname ;; 1874642e01fSmrgesac 1884642e01fSmrg 1894642e01fSmrg# Make sure we have an absolute path for reexecution: 1904642e01fSmrgcase $progpath in 1914642e01fSmrg [\\/]*|[A-Za-z]:\\*) ;; 1924642e01fSmrg *[\\/]*) 1934642e01fSmrg progdir=$func_dirname_result 1944642e01fSmrg progdir=`cd "$progdir" && pwd` 1954642e01fSmrg progpath="$progdir/$progname" 1964642e01fSmrg ;; 1974642e01fSmrg *) 1984642e01fSmrg save_IFS="$IFS" 1994642e01fSmrg IFS=: 2004642e01fSmrg for progdir in $PATH; do 2014642e01fSmrg IFS="$save_IFS" 2024642e01fSmrg test -x "$progdir/$progname" && break 2034642e01fSmrg done 2044642e01fSmrg IFS="$save_IFS" 2054642e01fSmrg test -n "$progdir" || progdir=`pwd` 2064642e01fSmrg progpath="$progdir/$progname" 2074642e01fSmrg ;; 2084642e01fSmrgesac 2094642e01fSmrg 2104642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 2114642e01fSmrg# metacharacters that are still active within double-quoted strings. 2124642e01fSmrgXsed="${SED}"' -e 1s/^X//' 2134642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2144642e01fSmrg 2154642e01fSmrg# Same as above, but do not quote variable references. 2164642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 2174642e01fSmrg 2184642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 2194642e01fSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2204642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion. 2214642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of 2224642e01fSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2234642e01fSmrgbs='\\' 2244642e01fSmrgbs2='\\\\' 2254642e01fSmrgbs4='\\\\\\\\' 2264642e01fSmrgdollar='\$' 2274642e01fSmrgsed_double_backslash="\ 2284642e01fSmrg s/$bs4/&\\ 2294642e01fSmrg/g 2304642e01fSmrg s/^$bs2$dollar/$bs&/ 2314642e01fSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2324642e01fSmrg s/\n//g" 2334642e01fSmrg 2344642e01fSmrg# Standard options: 2354642e01fSmrgopt_dry_run=false 2364642e01fSmrgopt_help=false 2374642e01fSmrgopt_quiet=false 2384642e01fSmrgopt_verbose=false 2394642e01fSmrgopt_warning=: 2404642e01fSmrg 2414642e01fSmrg# func_echo arg... 2424642e01fSmrg# Echo program name prefixed message, along with the current mode 2434642e01fSmrg# name if it has been set yet. 2444642e01fSmrgfunc_echo () 2454642e01fSmrg{ 2464642e01fSmrg $ECHO "$progname${mode+: }$mode: $*" 2474642e01fSmrg} 2484642e01fSmrg 2494642e01fSmrg# func_verbose arg... 2504642e01fSmrg# Echo program name prefixed message in verbose mode only. 2514642e01fSmrgfunc_verbose () 2524642e01fSmrg{ 2534642e01fSmrg $opt_verbose && func_echo ${1+"$@"} 2544642e01fSmrg 2554642e01fSmrg # A bug in bash halts the script if the last line of a function 2564642e01fSmrg # fails when set -e is in force, so we need another command to 2574642e01fSmrg # work around that: 2584642e01fSmrg : 2594642e01fSmrg} 2604642e01fSmrg 2614642e01fSmrg# func_error arg... 2624642e01fSmrg# Echo program name prefixed message to standard error. 2634642e01fSmrgfunc_error () 2644642e01fSmrg{ 2654642e01fSmrg $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2664642e01fSmrg} 2674642e01fSmrg 2684642e01fSmrg# func_warning arg... 2694642e01fSmrg# Echo program name prefixed warning message to standard error. 2704642e01fSmrgfunc_warning () 2714642e01fSmrg{ 2724642e01fSmrg $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 2734642e01fSmrg 2744642e01fSmrg # bash bug again: 2754642e01fSmrg : 2764642e01fSmrg} 2774642e01fSmrg 2784642e01fSmrg# func_fatal_error arg... 2794642e01fSmrg# Echo program name prefixed message to standard error, and exit. 2804642e01fSmrgfunc_fatal_error () 2814642e01fSmrg{ 2824642e01fSmrg func_error ${1+"$@"} 2834642e01fSmrg exit $EXIT_FAILURE 2844642e01fSmrg} 2854642e01fSmrg 2864642e01fSmrg# func_fatal_help arg... 2874642e01fSmrg# Echo program name prefixed message to standard error, followed by 2884642e01fSmrg# a help hint, and exit. 2894642e01fSmrgfunc_fatal_help () 2904642e01fSmrg{ 2914642e01fSmrg func_error ${1+"$@"} 2924642e01fSmrg func_fatal_error "$help" 2934642e01fSmrg} 2944642e01fSmrghelp="Try \`$progname --help' for more information." ## default 2954642e01fSmrg 2964642e01fSmrg 2974642e01fSmrg# func_grep expression filename 2984642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 2994642e01fSmrgfunc_grep () 3004642e01fSmrg{ 3014642e01fSmrg $GREP "$1" "$2" >/dev/null 2>&1 3024642e01fSmrg} 3034642e01fSmrg 3044642e01fSmrg 3054642e01fSmrg# func_mkdir_p directory-path 3064642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available. 3074642e01fSmrgfunc_mkdir_p () 3084642e01fSmrg{ 3094642e01fSmrg my_directory_path="$1" 3104642e01fSmrg my_dir_list= 3114642e01fSmrg 3124642e01fSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3134642e01fSmrg 3144642e01fSmrg # Protect directory names starting with `-' 3154642e01fSmrg case $my_directory_path in 3164642e01fSmrg -*) my_directory_path="./$my_directory_path" ;; 3174642e01fSmrg esac 3184642e01fSmrg 3194642e01fSmrg # While some portion of DIR does not yet exist... 3204642e01fSmrg while test ! -d "$my_directory_path"; do 3214642e01fSmrg # ...make a list in topmost first order. Use a colon delimited 3224642e01fSmrg # list incase some portion of path contains whitespace. 3234642e01fSmrg my_dir_list="$my_directory_path:$my_dir_list" 3244642e01fSmrg 3254642e01fSmrg # If the last portion added has no slash in it, the list is done 3264642e01fSmrg case $my_directory_path in */*) ;; *) break ;; esac 3274642e01fSmrg 3284642e01fSmrg # ...otherwise throw away the child directory and loop 3294642e01fSmrg my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3304642e01fSmrg done 3314642e01fSmrg my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3324642e01fSmrg 3334642e01fSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 3344642e01fSmrg for my_dir in $my_dir_list; do 3354642e01fSmrg IFS="$save_mkdir_p_IFS" 3364642e01fSmrg # mkdir can fail with a `File exist' error if two processes 3374642e01fSmrg # try to create one of the directories concurrently. Don't 3384642e01fSmrg # stop in that case! 3394642e01fSmrg $MKDIR "$my_dir" 2>/dev/null || : 3404642e01fSmrg done 3414642e01fSmrg IFS="$save_mkdir_p_IFS" 3424642e01fSmrg 3434642e01fSmrg # Bail out if we (or some other process) failed to create a directory. 3444642e01fSmrg test -d "$my_directory_path" || \ 3454642e01fSmrg func_fatal_error "Failed to create \`$1'" 3464642e01fSmrg fi 3474642e01fSmrg} 34805b261ecSmrg 34905b261ecSmrg 35005b261ecSmrg# func_mktempdir [string] 35105b261ecSmrg# Make a temporary directory that won't clash with other running 35205b261ecSmrg# libtool processes, and avoids race conditions if possible. If 35305b261ecSmrg# given, STRING is the basename for that directory. 35405b261ecSmrgfunc_mktempdir () 35505b261ecSmrg{ 35605b261ecSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 35705b261ecSmrg 3584642e01fSmrg if test "$opt_dry_run" = ":"; then 35905b261ecSmrg # Return a directory name, but don't create it in dry-run mode 36005b261ecSmrg my_tmpdir="${my_template}-$$" 36105b261ecSmrg else 36205b261ecSmrg 36305b261ecSmrg # If mktemp works, use that first and foremost 36405b261ecSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 36505b261ecSmrg 36605b261ecSmrg if test ! -d "$my_tmpdir"; then 3674642e01fSmrg # Failing that, at least try and use $RANDOM to avoid a race 3684642e01fSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 36905b261ecSmrg 3704642e01fSmrg save_mktempdir_umask=`umask` 3714642e01fSmrg umask 0077 3724642e01fSmrg $MKDIR "$my_tmpdir" 3734642e01fSmrg umask $save_mktempdir_umask 37405b261ecSmrg fi 37505b261ecSmrg 37605b261ecSmrg # If we're not in dry-run mode, bomb out on failure 3774642e01fSmrg test -d "$my_tmpdir" || \ 3784642e01fSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 37905b261ecSmrg fi 38005b261ecSmrg 3814642e01fSmrg $ECHO "X$my_tmpdir" | $Xsed 38205b261ecSmrg} 38305b261ecSmrg 38405b261ecSmrg 3854642e01fSmrg# func_quote_for_eval arg 3864642e01fSmrg# Aesthetically quote ARG to be evaled later. 3874642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3884642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas 3894642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3904642e01fSmrg# which are still active within double quotes backslashified. 3914642e01fSmrgfunc_quote_for_eval () 39205b261ecSmrg{ 3934642e01fSmrg case $1 in 3944642e01fSmrg *[\\\`\"\$]*) 3954642e01fSmrg func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3964642e01fSmrg *) 3974642e01fSmrg func_quote_for_eval_unquoted_result="$1" ;; 3984642e01fSmrg esac 3994642e01fSmrg 4004642e01fSmrg case $func_quote_for_eval_unquoted_result in 4014642e01fSmrg # Double-quote args containing shell metacharacters to delay 4024642e01fSmrg # word splitting, command substitution and and variable 4034642e01fSmrg # expansion for a subsequent eval. 4044642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 4054642e01fSmrg # in scan sets, so we specify it separately. 4064642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4074642e01fSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4084642e01fSmrg ;; 4094642e01fSmrg *) 4104642e01fSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 41105b261ecSmrg esac 41205b261ecSmrg} 41305b261ecSmrg 41405b261ecSmrg 4154642e01fSmrg# func_quote_for_expand arg 4164642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above, 4174642e01fSmrg# but do not quote variable references. 4184642e01fSmrgfunc_quote_for_expand () 41905b261ecSmrg{ 4204642e01fSmrg case $1 in 4214642e01fSmrg *[\\\`\"]*) 4224642e01fSmrg my_arg=`$ECHO "X$1" | $Xsed \ 4234642e01fSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 42405b261ecSmrg *) 4254642e01fSmrg my_arg="$1" ;; 4264642e01fSmrg esac 4274642e01fSmrg 4284642e01fSmrg case $my_arg in 4294642e01fSmrg # Double-quote args containing shell metacharacters to delay 4304642e01fSmrg # word splitting and command substitution for a subsequent eval. 4314642e01fSmrg # Many Bourne shells cannot handle close brackets correctly 4324642e01fSmrg # in scan sets, so we specify it separately. 4334642e01fSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4344642e01fSmrg my_arg="\"$my_arg\"" 4354642e01fSmrg ;; 4364642e01fSmrg esac 4374642e01fSmrg 4384642e01fSmrg func_quote_for_expand_result="$my_arg" 43905b261ecSmrg} 44005b261ecSmrg 44105b261ecSmrg 4424642e01fSmrg# func_show_eval cmd [fail_exp] 4434642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4444642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4454642e01fSmrg# is given, then evaluate it. 4464642e01fSmrgfunc_show_eval () 44705b261ecSmrg{ 4484642e01fSmrg my_cmd="$1" 4494642e01fSmrg my_fail_exp="${2-:}" 45005b261ecSmrg 4514642e01fSmrg ${opt_silent-false} || { 4524642e01fSmrg func_quote_for_expand "$my_cmd" 4534642e01fSmrg eval "func_echo $func_quote_for_expand_result" 4544642e01fSmrg } 4554642e01fSmrg 4564642e01fSmrg if ${opt_dry_run-false}; then :; else 4574642e01fSmrg eval "$my_cmd" 4584642e01fSmrg my_status=$? 4594642e01fSmrg if test "$my_status" -eq 0; then :; else 4604642e01fSmrg eval "(exit $my_status); $my_fail_exp" 4614642e01fSmrg fi 46205b261ecSmrg fi 46305b261ecSmrg} 46405b261ecSmrg 4654642e01fSmrg 4664642e01fSmrg# func_show_eval_locale cmd [fail_exp] 4674642e01fSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4684642e01fSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4694642e01fSmrg# is given, then evaluate it. Use the saved locale for evaluation. 4704642e01fSmrgfunc_show_eval_locale () 47105b261ecSmrg{ 4724642e01fSmrg my_cmd="$1" 4734642e01fSmrg my_fail_exp="${2-:}" 4744642e01fSmrg 4754642e01fSmrg ${opt_silent-false} || { 4764642e01fSmrg func_quote_for_expand "$my_cmd" 4774642e01fSmrg eval "func_echo $func_quote_for_expand_result" 4784642e01fSmrg } 4794642e01fSmrg 4804642e01fSmrg if ${opt_dry_run-false}; then :; else 4814642e01fSmrg eval "$lt_user_locale 4824642e01fSmrg $my_cmd" 4834642e01fSmrg my_status=$? 4844642e01fSmrg eval "$lt_safe_locale" 4854642e01fSmrg if test "$my_status" -eq 0; then :; else 4864642e01fSmrg eval "(exit $my_status); $my_fail_exp" 4874642e01fSmrg fi 48805b261ecSmrg fi 4894642e01fSmrg} 49005b261ecSmrg 49105b261ecSmrg 4924642e01fSmrg 4934642e01fSmrg 4944642e01fSmrg 4954642e01fSmrg# func_version 4964642e01fSmrg# Echo version message to standard output and exit. 4974642e01fSmrgfunc_version () 4984642e01fSmrg{ 4994642e01fSmrg $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5004642e01fSmrg s/^# // 5014642e01fSmrg s/^# *$// 5024642e01fSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5034642e01fSmrg p 5044642e01fSmrg }' < "$progpath" 5054642e01fSmrg exit $? 5064642e01fSmrg} 5074642e01fSmrg 5084642e01fSmrg# func_usage 5094642e01fSmrg# Echo short help message to standard output and exit. 5104642e01fSmrgfunc_usage () 5114642e01fSmrg{ 5124642e01fSmrg $SED -n '/^# Usage:/,/# -h/ { 5134642e01fSmrg s/^# // 5144642e01fSmrg s/^# *$// 5154642e01fSmrg s/\$progname/'$progname'/ 5164642e01fSmrg p 5174642e01fSmrg }' < "$progpath" 5184642e01fSmrg $ECHO 5194642e01fSmrg $ECHO "run \`$progname --help | more' for full usage" 5204642e01fSmrg exit $? 5214642e01fSmrg} 5224642e01fSmrg 5234642e01fSmrg# func_help 5244642e01fSmrg# Echo long help message to standard output and exit. 5254642e01fSmrgfunc_help () 5264642e01fSmrg{ 5274642e01fSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 5284642e01fSmrg s/^# // 5294642e01fSmrg s/^# *$// 5304642e01fSmrg s*\$progname*'$progname'* 5314642e01fSmrg s*\$host*'"$host"'* 5324642e01fSmrg s*\$SHELL*'"$SHELL"'* 5334642e01fSmrg s*\$LTCC*'"$LTCC"'* 5344642e01fSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 5354642e01fSmrg s*\$LD*'"$LD"'* 5364642e01fSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5374642e01fSmrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5384642e01fSmrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5394642e01fSmrg p 5404642e01fSmrg }' < "$progpath" 5414642e01fSmrg exit $? 5424642e01fSmrg} 5434642e01fSmrg 5444642e01fSmrg# func_missing_arg argname 5454642e01fSmrg# Echo program name prefixed message to standard error and set global 5464642e01fSmrg# exit_cmd. 5474642e01fSmrgfunc_missing_arg () 5484642e01fSmrg{ 5494642e01fSmrg func_error "missing argument for $1" 5504642e01fSmrg exit_cmd=exit 55105b261ecSmrg} 55205b261ecSmrg 5534642e01fSmrgexit_cmd=: 55405b261ecSmrg 55505b261ecSmrg 5564642e01fSmrg 5574642e01fSmrg 5584642e01fSmrg 5594642e01fSmrg# Check that we have a working $ECHO. 5604642e01fSmrgif test "X$1" = X--no-reexec; then 5614642e01fSmrg # Discard the --no-reexec flag, and continue. 56205b261ecSmrg shift 5634642e01fSmrgelif test "X$1" = X--fallback-echo; then 5644642e01fSmrg # Avoid inline document here, it may be left over 5654642e01fSmrg : 5664642e01fSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5674642e01fSmrg # Yippee, $ECHO works! 5684642e01fSmrg : 5694642e01fSmrgelse 5704642e01fSmrg # Restart under the correct shell, and then maybe $ECHO will work. 5714642e01fSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5724642e01fSmrgfi 57305b261ecSmrg 5744642e01fSmrgif test "X$1" = X--fallback-echo; then 5754642e01fSmrg # used as fallback echo 5764642e01fSmrg shift 5774642e01fSmrg cat <<EOF 5784642e01fSmrg$* 5794642e01fSmrgEOF 5804642e01fSmrg exit $EXIT_SUCCESS 5814642e01fSmrgfi 58205b261ecSmrg 5834642e01fSmrgmagic="%%%MAGIC variable%%%" 5844642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%" 58505b261ecSmrg 5864642e01fSmrg# Global variables. 5874642e01fSmrg# $mode is unset 5884642e01fSmrgnonopt= 5894642e01fSmrgexecute_dlfiles= 5904642e01fSmrgpreserve_args= 5914642e01fSmrglo2o="s/\\.lo\$/.${objext}/" 5924642e01fSmrgo2lo="s/\\.${objext}\$/.lo/" 5934642e01fSmrgextracted_archives= 5944642e01fSmrgextracted_serial=0 59505b261ecSmrg 5964642e01fSmrgopt_dry_run=false 5974642e01fSmrgopt_duplicate_deps=false 5984642e01fSmrgopt_silent=false 5994642e01fSmrgopt_debug=: 60005b261ecSmrg 6014642e01fSmrg# If this variable is set in any of the actions, the command in it 6024642e01fSmrg# will be execed at the end. This prevents here-documents from being 6034642e01fSmrg# left over by shells. 6044642e01fSmrgexec_cmd= 6054642e01fSmrg 6064642e01fSmrg# func_fatal_configuration arg... 6074642e01fSmrg# Echo program name prefixed message to standard error, followed by 6084642e01fSmrg# a configuration failure hint, and exit. 6094642e01fSmrgfunc_fatal_configuration () 6104642e01fSmrg{ 6114642e01fSmrg func_error ${1+"$@"} 6124642e01fSmrg func_error "See the $PACKAGE documentation for more information." 6134642e01fSmrg func_fatal_error "Fatal configuration error." 6144642e01fSmrg} 61505b261ecSmrg 61605b261ecSmrg 6174642e01fSmrg# func_config 6184642e01fSmrg# Display the configuration for all the tags in this script. 6194642e01fSmrgfunc_config () 6204642e01fSmrg{ 6214642e01fSmrg re_begincf='^# ### BEGIN LIBTOOL' 6224642e01fSmrg re_endcf='^# ### END LIBTOOL' 6234642e01fSmrg 6244642e01fSmrg # Default configuration. 6254642e01fSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 62605b261ecSmrg 62705b261ecSmrg # Now print the configurations for the tags. 62805b261ecSmrg for tagname in $taglist; do 6294642e01fSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 63005b261ecSmrg done 63105b261ecSmrg 6324642e01fSmrg exit $? 6334642e01fSmrg} 63405b261ecSmrg 6354642e01fSmrg# func_features 6364642e01fSmrg# Display the features supported by this script. 6374642e01fSmrgfunc_features () 6384642e01fSmrg{ 6394642e01fSmrg $ECHO "host: $host" 64005b261ecSmrg if test "$build_libtool_libs" = yes; then 6414642e01fSmrg $ECHO "enable shared libraries" 64205b261ecSmrg else 6434642e01fSmrg $ECHO "disable shared libraries" 64405b261ecSmrg fi 64505b261ecSmrg if test "$build_old_libs" = yes; then 6464642e01fSmrg $ECHO "enable static libraries" 64705b261ecSmrg else 6484642e01fSmrg $ECHO "disable static libraries" 64905b261ecSmrg fi 6504642e01fSmrg 65105b261ecSmrg exit $? 6524642e01fSmrg} 65305b261ecSmrg 6544642e01fSmrg# func_enable_tag tagname 6554642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 6564642e01fSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6574642e01fSmrg# variable here. 6584642e01fSmrgfunc_enable_tag () 6594642e01fSmrg{ 6604642e01fSmrg # Global variable: 6614642e01fSmrg tagname="$1" 66205b261ecSmrg 6634642e01fSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6644642e01fSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6654642e01fSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 66605b261ecSmrg 6674642e01fSmrg # Validate tagname. 6684642e01fSmrg case $tagname in 6694642e01fSmrg *[!-_A-Za-z0-9,/]*) 6704642e01fSmrg func_fatal_error "invalid tag name: $tagname" 6714642e01fSmrg ;; 6724642e01fSmrg esac 67305b261ecSmrg 6744642e01fSmrg # Don't test for the "default" C tag, as we know it's 6754642e01fSmrg # there but not specially marked. 6764642e01fSmrg case $tagname in 6774642e01fSmrg CC) ;; 6784642e01fSmrg *) 6794642e01fSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6804642e01fSmrg taglist="$taglist $tagname" 6814642e01fSmrg 6824642e01fSmrg # Evaluate the configuration. Be careful to quote the path 6834642e01fSmrg # and the sed script, to avoid splitting on whitespace, but 6844642e01fSmrg # also don't use non-portable quotes within backquotes within 6854642e01fSmrg # quotes we have to do it in 2 steps: 6864642e01fSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6874642e01fSmrg eval "$extractedcf" 6884642e01fSmrg else 6894642e01fSmrg func_error "ignoring unknown tag $tagname" 6904642e01fSmrg fi 6914642e01fSmrg ;; 6924642e01fSmrg esac 6934642e01fSmrg} 6944642e01fSmrg 6954642e01fSmrg# Parse options once, thoroughly. This comes as soon as possible in 6964642e01fSmrg# the script to make things like `libtool --version' happen quickly. 6974642e01fSmrg{ 69805b261ecSmrg 6994642e01fSmrg # Shorthand for --mode=foo, only valid as the first argument 7004642e01fSmrg case $1 in 7014642e01fSmrg clean|clea|cle|cl) 7024642e01fSmrg shift; set dummy --mode clean ${1+"$@"}; shift 70305b261ecSmrg ;; 7044642e01fSmrg compile|compil|compi|comp|com|co|c) 7054642e01fSmrg shift; set dummy --mode compile ${1+"$@"}; shift 70605b261ecSmrg ;; 7074642e01fSmrg execute|execut|execu|exec|exe|ex|e) 7084642e01fSmrg shift; set dummy --mode execute ${1+"$@"}; shift 70905b261ecSmrg ;; 7104642e01fSmrg finish|finis|fini|fin|fi|f) 7114642e01fSmrg shift; set dummy --mode finish ${1+"$@"}; shift 71205b261ecSmrg ;; 7134642e01fSmrg install|instal|insta|inst|ins|in|i) 7144642e01fSmrg shift; set dummy --mode install ${1+"$@"}; shift 7154642e01fSmrg ;; 7164642e01fSmrg link|lin|li|l) 7174642e01fSmrg shift; set dummy --mode link ${1+"$@"}; shift 7184642e01fSmrg ;; 7194642e01fSmrg uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7204642e01fSmrg shift; set dummy --mode uninstall ${1+"$@"}; shift 72105b261ecSmrg ;; 72205b261ecSmrg esac 72305b261ecSmrg 7244642e01fSmrg # Parse non-mode specific arguments: 7254642e01fSmrg while test "$#" -gt 0; do 7264642e01fSmrg opt="$1" 7274642e01fSmrg shift 72805b261ecSmrg 7294642e01fSmrg case $opt in 7304642e01fSmrg --config) func_config ;; 73105b261ecSmrg 7324642e01fSmrg --debug) preserve_args="$preserve_args $opt" 7334642e01fSmrg func_echo "enabling shell trace mode" 7344642e01fSmrg opt_debug='set -x' 7354642e01fSmrg $opt_debug 7364642e01fSmrg ;; 73705b261ecSmrg 7384642e01fSmrg -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7394642e01fSmrg execute_dlfiles="$execute_dlfiles $1" 7404642e01fSmrg shift 7414642e01fSmrg ;; 74205b261ecSmrg 7434642e01fSmrg --dry-run | -n) opt_dry_run=: ;; 7444642e01fSmrg --features) func_features ;; 7454642e01fSmrg --finish) mode="finish" ;; 7464642e01fSmrg 7474642e01fSmrg --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7484642e01fSmrg case $1 in 7494642e01fSmrg # Valid mode arguments: 7504642e01fSmrg clean) ;; 7514642e01fSmrg compile) ;; 7524642e01fSmrg execute) ;; 7534642e01fSmrg finish) ;; 7544642e01fSmrg install) ;; 7554642e01fSmrg link) ;; 7564642e01fSmrg relink) ;; 7574642e01fSmrg uninstall) ;; 7584642e01fSmrg 7594642e01fSmrg # Catch anything else as an error 7604642e01fSmrg *) func_error "invalid argument for $opt" 7614642e01fSmrg exit_cmd=exit 7624642e01fSmrg break 7634642e01fSmrg ;; 7644642e01fSmrg esac 7654642e01fSmrg 7664642e01fSmrg mode="$1" 7674642e01fSmrg shift 7684642e01fSmrg ;; 7694642e01fSmrg 7704642e01fSmrg --preserve-dup-deps) 7714642e01fSmrg opt_duplicate_deps=: ;; 7724642e01fSmrg 7734642e01fSmrg --quiet|--silent) preserve_args="$preserve_args $opt" 7744642e01fSmrg opt_silent=: 7754642e01fSmrg ;; 7764642e01fSmrg 7774642e01fSmrg --verbose| -v) preserve_args="$preserve_args $opt" 7784642e01fSmrg opt_silent=false 7794642e01fSmrg ;; 7804642e01fSmrg 7814642e01fSmrg --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7824642e01fSmrg preserve_args="$preserve_args $opt $1" 7834642e01fSmrg func_enable_tag "$1" # tagname is set here 7844642e01fSmrg shift 7854642e01fSmrg ;; 7864642e01fSmrg 7874642e01fSmrg # Separate optargs to long options: 7884642e01fSmrg -dlopen=*|--mode=*|--tag=*) 7894642e01fSmrg func_opt_split "$opt" 7904642e01fSmrg set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7914642e01fSmrg shift 7924642e01fSmrg ;; 7934642e01fSmrg 7944642e01fSmrg -\?|-h) func_usage ;; 7954642e01fSmrg --help) opt_help=: ;; 7964642e01fSmrg --version) func_version ;; 7974642e01fSmrg 7984642e01fSmrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 7994642e01fSmrg 8004642e01fSmrg *) nonopt="$opt" 8014642e01fSmrg break 8024642e01fSmrg ;; 8034642e01fSmrg esac 8044642e01fSmrg done 8054642e01fSmrg 8064642e01fSmrg 8074642e01fSmrg case $host in 8084642e01fSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 8094642e01fSmrg # don't eliminate duplications in $postdeps and $predeps 8104642e01fSmrg opt_duplicate_compiler_generated_deps=: 81105b261ecSmrg ;; 81205b261ecSmrg *) 8134642e01fSmrg opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8144642e01fSmrg ;; 8154642e01fSmrg esac 81605b261ecSmrg 8174642e01fSmrg # Having warned about all mis-specified options, bail out if 8184642e01fSmrg # anything was wrong. 8194642e01fSmrg $exit_cmd $EXIT_FAILURE 8204642e01fSmrg} 8214642e01fSmrg 8224642e01fSmrg# func_check_version_match 8234642e01fSmrg# Ensure that we are using m4 macros, and libtool script from the same 8244642e01fSmrg# release of libtool. 8254642e01fSmrgfunc_check_version_match () 8264642e01fSmrg{ 8274642e01fSmrg if test "$package_revision" != "$macro_revision"; then 8284642e01fSmrg if test "$VERSION" != "$macro_version"; then 8294642e01fSmrg if test -z "$macro_version"; then 8304642e01fSmrg cat >&2 <<_LT_EOF 8314642e01fSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8324642e01fSmrg$progname: definition of this LT_INIT comes from an older release. 8334642e01fSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8344642e01fSmrg$progname: and run autoconf again. 8354642e01fSmrg_LT_EOF 8364642e01fSmrg else 8374642e01fSmrg cat >&2 <<_LT_EOF 8384642e01fSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8394642e01fSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8404642e01fSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8414642e01fSmrg$progname: and run autoconf again. 8424642e01fSmrg_LT_EOF 84305b261ecSmrg fi 8444642e01fSmrg else 8454642e01fSmrg cat >&2 <<_LT_EOF 8464642e01fSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8474642e01fSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8484642e01fSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8494642e01fSmrg$progname: of $PACKAGE $VERSION and run autoconf again. 8504642e01fSmrg_LT_EOF 8514642e01fSmrg fi 8524642e01fSmrg 8534642e01fSmrg exit $EXIT_MISMATCH 8544642e01fSmrg fi 8554642e01fSmrg} 8564642e01fSmrg 8574642e01fSmrg 8584642e01fSmrg## ----------- ## 8594642e01fSmrg## Main. ## 8604642e01fSmrg## ----------- ## 8614642e01fSmrg 8624642e01fSmrg$opt_help || { 8634642e01fSmrg # Sanity checks first: 8644642e01fSmrg func_check_version_match 8654642e01fSmrg 8664642e01fSmrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8674642e01fSmrg func_fatal_configuration "not configured to build any kind of library" 86805b261ecSmrg fi 86905b261ecSmrg 8704642e01fSmrg test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8714642e01fSmrg 8724642e01fSmrg 8734642e01fSmrg # Darwin sucks 8744642e01fSmrg eval std_shrext=\"$shrext_cmds\" 8754642e01fSmrg 8764642e01fSmrg 87705b261ecSmrg # Only execute mode is allowed to have -dlopen flags. 87805b261ecSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 8794642e01fSmrg func_error "unrecognized option \`-dlopen'" 8804642e01fSmrg $ECHO "$help" 1>&2 88105b261ecSmrg exit $EXIT_FAILURE 88205b261ecSmrg fi 88305b261ecSmrg 88405b261ecSmrg # Change the help message to a mode-specific one. 88505b261ecSmrg generic_help="$help" 8864642e01fSmrg help="Try \`$progname --help --mode=$mode' for more information." 8874642e01fSmrg} 88805b261ecSmrg 88905b261ecSmrg 8904642e01fSmrg# func_lalib_p file 8914642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 8924642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 8934642e01fSmrg# determined imposters. 8944642e01fSmrgfunc_lalib_p () 8954642e01fSmrg{ 8964642e01fSmrg test -f "$1" && 8974642e01fSmrg $SED -e 4q "$1" 2>/dev/null \ 8984642e01fSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8994642e01fSmrg} 90005b261ecSmrg 9014642e01fSmrg# func_lalib_unsafe_p file 9024642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 9034642e01fSmrg# This function implements the same check as func_lalib_p without 9044642e01fSmrg# resorting to external programs. To this end, it redirects stdin and 9054642e01fSmrg# closes it afterwards, without saving the original file descriptor. 9064642e01fSmrg# As a safety measure, use it only where a negative result would be 9074642e01fSmrg# fatal anyway. Works if `file' does not exist. 9084642e01fSmrgfunc_lalib_unsafe_p () 9094642e01fSmrg{ 9104642e01fSmrg lalib_p=no 9114642e01fSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9124642e01fSmrg for lalib_p_l in 1 2 3 4 9134642e01fSmrg do 9144642e01fSmrg read lalib_p_line 9154642e01fSmrg case "$lalib_p_line" in 9164642e01fSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9174642e01fSmrg esac 9184642e01fSmrg done 9194642e01fSmrg exec 0<&5 5<&- 9204642e01fSmrg fi 9214642e01fSmrg test "$lalib_p" = yes 9224642e01fSmrg} 92305b261ecSmrg 9244642e01fSmrg# func_ltwrapper_script_p file 9254642e01fSmrg# True iff FILE is a libtool wrapper script 9264642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 9274642e01fSmrg# determined imposters. 9284642e01fSmrgfunc_ltwrapper_script_p () 9294642e01fSmrg{ 9304642e01fSmrg func_lalib_p "$1" 9314642e01fSmrg} 93205b261ecSmrg 9334642e01fSmrg# func_ltwrapper_executable_p file 9344642e01fSmrg# True iff FILE is a libtool wrapper executable 9354642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 9364642e01fSmrg# determined imposters. 9374642e01fSmrgfunc_ltwrapper_executable_p () 9384642e01fSmrg{ 9394642e01fSmrg func_ltwrapper_exec_suffix= 9404642e01fSmrg case $1 in 9414642e01fSmrg *.exe) ;; 9424642e01fSmrg *) func_ltwrapper_exec_suffix=.exe ;; 9434642e01fSmrg esac 9444642e01fSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9454642e01fSmrg} 94605b261ecSmrg 9474642e01fSmrg# func_ltwrapper_scriptname file 9484642e01fSmrg# Assumes file is an ltwrapper_executable 9494642e01fSmrg# uses $file to determine the appropriate filename for a 9504642e01fSmrg# temporary ltwrapper_script. 9514642e01fSmrgfunc_ltwrapper_scriptname () 9524642e01fSmrg{ 9534642e01fSmrg func_ltwrapper_scriptname_result="" 9544642e01fSmrg if func_ltwrapper_executable_p "$1"; then 9554642e01fSmrg func_dirname_and_basename "$1" "" "." 9564642e01fSmrg func_stripname '' '.exe' "$func_basename_result" 9574642e01fSmrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9584642e01fSmrg fi 9594642e01fSmrg} 9604642e01fSmrg 9614642e01fSmrg# func_ltwrapper_p file 9624642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable 9634642e01fSmrg# This function is only a basic sanity check; it will hardly flush out 9644642e01fSmrg# determined imposters. 9654642e01fSmrgfunc_ltwrapper_p () 9664642e01fSmrg{ 9674642e01fSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9684642e01fSmrg} 9694642e01fSmrg 9704642e01fSmrg 9714642e01fSmrg# func_execute_cmds commands fail_cmd 9724642e01fSmrg# Execute tilde-delimited COMMANDS. 9734642e01fSmrg# If FAIL_CMD is given, eval that upon failure. 9744642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD! 9754642e01fSmrgfunc_execute_cmds () 9764642e01fSmrg{ 9774642e01fSmrg $opt_debug 9784642e01fSmrg save_ifs=$IFS; IFS='~' 9794642e01fSmrg for cmd in $1; do 9804642e01fSmrg IFS=$save_ifs 9814642e01fSmrg eval cmd=\"$cmd\" 9824642e01fSmrg func_show_eval "$cmd" "${2-:}" 9834642e01fSmrg done 9844642e01fSmrg IFS=$save_ifs 9854642e01fSmrg} 9864642e01fSmrg 9874642e01fSmrg 9884642e01fSmrg# func_source file 9894642e01fSmrg# Source FILE, adding directory component if necessary. 9904642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 9914642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9924642e01fSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 9934642e01fSmrg# `FILE.' does not work on cygwin managed mounts. 9944642e01fSmrgfunc_source () 9954642e01fSmrg{ 9964642e01fSmrg $opt_debug 9974642e01fSmrg case $1 in 9984642e01fSmrg */* | *\\*) . "$1" ;; 9994642e01fSmrg *) . "./$1" ;; 10004642e01fSmrg esac 10014642e01fSmrg} 10024642e01fSmrg 10034642e01fSmrg 10044642e01fSmrg# func_infer_tag arg 10054642e01fSmrg# Infer tagged configuration to use if any are available and 10064642e01fSmrg# if one wasn't chosen via the "--tag" command line option. 10074642e01fSmrg# Only attempt this if the compiler in the base compile 10084642e01fSmrg# command doesn't match the default compiler. 10094642e01fSmrg# arg is usually of the form 'gcc ...' 10104642e01fSmrgfunc_infer_tag () 10114642e01fSmrg{ 10124642e01fSmrg $opt_debug 10134642e01fSmrg if test -n "$available_tags" && test -z "$tagname"; then 10144642e01fSmrg CC_quoted= 10154642e01fSmrg for arg in $CC; do 10164642e01fSmrg func_quote_for_eval "$arg" 10174642e01fSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 10184642e01fSmrg done 10194642e01fSmrg case $@ in 10204642e01fSmrg # Blanks in the command may have been stripped by the calling shell, 10214642e01fSmrg # but not from the CC environment variable when configure was run. 10224642e01fSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10234642e01fSmrg # Blanks at the start of $base_compile will cause this to fail 10244642e01fSmrg # if we don't check for them as well. 10254642e01fSmrg *) 10264642e01fSmrg for z in $available_tags; do 10274642e01fSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10284642e01fSmrg # Evaluate the configuration. 10294642e01fSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10304642e01fSmrg CC_quoted= 10314642e01fSmrg for arg in $CC; do 10324642e01fSmrg # Double-quote args containing other shell metacharacters. 10334642e01fSmrg func_quote_for_eval "$arg" 10344642e01fSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 10354642e01fSmrg done 10364642e01fSmrg case "$@ " in 10374642e01fSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10384642e01fSmrg # The compiler in the base compile command matches 10394642e01fSmrg # the one in the tagged configuration. 10404642e01fSmrg # Assume this is the tagged configuration we want. 10414642e01fSmrg tagname=$z 10424642e01fSmrg break 10434642e01fSmrg ;; 10444642e01fSmrg esac 10454642e01fSmrg fi 10464642e01fSmrg done 10474642e01fSmrg # If $tagname still isn't set, then no tagged configuration 10484642e01fSmrg # was found and let the user know that the "--tag" command 10494642e01fSmrg # line option must be used. 10504642e01fSmrg if test -z "$tagname"; then 10514642e01fSmrg func_echo "unable to infer tagged configuration" 10524642e01fSmrg func_fatal_error "specify a tag with \`--tag'" 10534642e01fSmrg# else 10544642e01fSmrg# func_verbose "using $tagname tagged configuration" 10554642e01fSmrg fi 10564642e01fSmrg ;; 10574642e01fSmrg esac 10584642e01fSmrg fi 10594642e01fSmrg} 10604642e01fSmrg 10614642e01fSmrg 10624642e01fSmrg 10634642e01fSmrg# func_write_libtool_object output_name pic_name nonpic_name 10644642e01fSmrg# Create a libtool object file (analogous to a ".la" file), 10654642e01fSmrg# but don't create it if we're doing a dry run. 10664642e01fSmrgfunc_write_libtool_object () 10674642e01fSmrg{ 10684642e01fSmrg write_libobj=${1} 10694642e01fSmrg if test "$build_libtool_libs" = yes; then 10704642e01fSmrg write_lobj=\'${2}\' 10714642e01fSmrg else 10724642e01fSmrg write_lobj=none 10734642e01fSmrg fi 10744642e01fSmrg 10754642e01fSmrg if test "$build_old_libs" = yes; then 10764642e01fSmrg write_oldobj=\'${3}\' 10774642e01fSmrg else 10784642e01fSmrg write_oldobj=none 10794642e01fSmrg fi 10804642e01fSmrg 10814642e01fSmrg $opt_dry_run || { 10824642e01fSmrg cat >${write_libobj}T <<EOF 10834642e01fSmrg# $write_libobj - a libtool object file 10844642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10854642e01fSmrg# 10864642e01fSmrg# Please DO NOT delete this file! 10874642e01fSmrg# It is necessary for linking the library. 10884642e01fSmrg 10894642e01fSmrg# Name of the PIC object. 10904642e01fSmrgpic_object=$write_lobj 10914642e01fSmrg 10924642e01fSmrg# Name of the non-PIC object 10934642e01fSmrgnon_pic_object=$write_oldobj 10944642e01fSmrg 10954642e01fSmrgEOF 10964642e01fSmrg $MV "${write_libobj}T" "${write_libobj}" 10974642e01fSmrg } 10984642e01fSmrg} 10994642e01fSmrg 11004642e01fSmrg# func_mode_compile arg... 11014642e01fSmrgfunc_mode_compile () 11024642e01fSmrg{ 11034642e01fSmrg $opt_debug 11044642e01fSmrg # Get the compilation command and the source file. 11054642e01fSmrg base_compile= 11064642e01fSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11074642e01fSmrg suppress_opt=yes 11084642e01fSmrg suppress_output= 11094642e01fSmrg arg_mode=normal 11104642e01fSmrg libobj= 11114642e01fSmrg later= 11124642e01fSmrg pie_flag= 11134642e01fSmrg 11144642e01fSmrg for arg 11154642e01fSmrg do 11164642e01fSmrg case $arg_mode in 11174642e01fSmrg arg ) 11184642e01fSmrg # do not "continue". Instead, add this to base_compile 11194642e01fSmrg lastarg="$arg" 11204642e01fSmrg arg_mode=normal 11214642e01fSmrg ;; 11224642e01fSmrg 11234642e01fSmrg target ) 11244642e01fSmrg libobj="$arg" 11254642e01fSmrg arg_mode=normal 11264642e01fSmrg continue 11274642e01fSmrg ;; 11284642e01fSmrg 11294642e01fSmrg normal ) 11304642e01fSmrg # Accept any command-line options. 11314642e01fSmrg case $arg in 11324642e01fSmrg -o) 11334642e01fSmrg test -n "$libobj" && \ 11344642e01fSmrg func_fatal_error "you cannot specify \`-o' more than once" 11354642e01fSmrg arg_mode=target 11364642e01fSmrg continue 11374642e01fSmrg ;; 11384642e01fSmrg 11394642e01fSmrg -pie | -fpie | -fPIE) 11404642e01fSmrg pie_flag="$pie_flag $arg" 11414642e01fSmrg continue 11424642e01fSmrg ;; 11434642e01fSmrg 11444642e01fSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 11454642e01fSmrg later="$later $arg" 11464642e01fSmrg continue 11474642e01fSmrg ;; 11484642e01fSmrg 11494642e01fSmrg -no-suppress) 115005b261ecSmrg suppress_opt=no 115105b261ecSmrg continue 115205b261ecSmrg ;; 115305b261ecSmrg 115405b261ecSmrg -Xcompiler) 115505b261ecSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 115605b261ecSmrg continue # The current "srcfile" will either be retained or 115705b261ecSmrg ;; # replaced later. I would guess that would be a bug. 115805b261ecSmrg 115905b261ecSmrg -Wc,*) 11604642e01fSmrg func_stripname '-Wc,' '' "$arg" 11614642e01fSmrg args=$func_stripname_result 116205b261ecSmrg lastarg= 116305b261ecSmrg save_ifs="$IFS"; IFS=',' 11644642e01fSmrg for arg in $args; do 116505b261ecSmrg IFS="$save_ifs" 11664642e01fSmrg func_quote_for_eval "$arg" 11674642e01fSmrg lastarg="$lastarg $func_quote_for_eval_result" 116805b261ecSmrg done 116905b261ecSmrg IFS="$save_ifs" 11704642e01fSmrg func_stripname ' ' '' "$lastarg" 11714642e01fSmrg lastarg=$func_stripname_result 117205b261ecSmrg 117305b261ecSmrg # Add the arguments to base_compile. 117405b261ecSmrg base_compile="$base_compile $lastarg" 117505b261ecSmrg continue 117605b261ecSmrg ;; 117705b261ecSmrg 11784642e01fSmrg *) 117905b261ecSmrg # Accept the current argument as the source file. 118005b261ecSmrg # The previous "srcfile" becomes the current argument. 118105b261ecSmrg # 118205b261ecSmrg lastarg="$srcfile" 118305b261ecSmrg srcfile="$arg" 118405b261ecSmrg ;; 118505b261ecSmrg esac # case $arg 118605b261ecSmrg ;; 118705b261ecSmrg esac # case $arg_mode 118805b261ecSmrg 118905b261ecSmrg # Aesthetically quote the previous argument. 11904642e01fSmrg func_quote_for_eval "$lastarg" 11914642e01fSmrg base_compile="$base_compile $func_quote_for_eval_result" 119205b261ecSmrg done # for arg 119305b261ecSmrg 119405b261ecSmrg case $arg_mode in 119505b261ecSmrg arg) 11964642e01fSmrg func_fatal_error "you must specify an argument for -Xcompile" 119705b261ecSmrg ;; 119805b261ecSmrg target) 11994642e01fSmrg func_fatal_error "you must specify a target with \`-o'" 120005b261ecSmrg ;; 120105b261ecSmrg *) 120205b261ecSmrg # Get the name of the library object. 12034642e01fSmrg test -z "$libobj" && { 12044642e01fSmrg func_basename "$srcfile" 12054642e01fSmrg libobj="$func_basename_result" 12064642e01fSmrg } 120705b261ecSmrg ;; 120805b261ecSmrg esac 120905b261ecSmrg 121005b261ecSmrg # Recognize several different file suffixes. 121105b261ecSmrg # If the user specifies -o file.o, it is replaced with file.lo 121205b261ecSmrg case $libobj in 12134642e01fSmrg *.[cCFSifmso] | \ 12144642e01fSmrg *.ada | *.adb | *.ads | *.asm | \ 12154642e01fSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12164642e01fSmrg *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12174642e01fSmrg func_xform "$libobj" 12184642e01fSmrg libobj=$func_xform_result 12194642e01fSmrg ;; 122005b261ecSmrg esac 122105b261ecSmrg 122205b261ecSmrg case $libobj in 12234642e01fSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 122405b261ecSmrg *) 12254642e01fSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 122605b261ecSmrg ;; 122705b261ecSmrg esac 122805b261ecSmrg 122905b261ecSmrg func_infer_tag $base_compile 123005b261ecSmrg 123105b261ecSmrg for arg in $later; do 123205b261ecSmrg case $arg in 12334642e01fSmrg -shared) 12344642e01fSmrg test "$build_libtool_libs" != yes && \ 12354642e01fSmrg func_fatal_configuration "can not build a shared library" 12364642e01fSmrg build_old_libs=no 12374642e01fSmrg continue 12384642e01fSmrg ;; 12394642e01fSmrg 124005b261ecSmrg -static) 12414642e01fSmrg build_libtool_libs=no 124205b261ecSmrg build_old_libs=yes 124305b261ecSmrg continue 124405b261ecSmrg ;; 124505b261ecSmrg 124605b261ecSmrg -prefer-pic) 124705b261ecSmrg pic_mode=yes 124805b261ecSmrg continue 124905b261ecSmrg ;; 125005b261ecSmrg 125105b261ecSmrg -prefer-non-pic) 125205b261ecSmrg pic_mode=no 125305b261ecSmrg continue 125405b261ecSmrg ;; 125505b261ecSmrg esac 125605b261ecSmrg done 125705b261ecSmrg 12584642e01fSmrg func_quote_for_eval "$libobj" 12594642e01fSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 12604642e01fSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12614642e01fSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 12624642e01fSmrg func_dirname_and_basename "$obj" "/" "" 12634642e01fSmrg objname="$func_basename_result" 12644642e01fSmrg xdir="$func_dirname_result" 126505b261ecSmrg lobj=${xdir}$objdir/$objname 126605b261ecSmrg 12674642e01fSmrg test -z "$base_compile" && \ 12684642e01fSmrg func_fatal_help "you must specify a compilation command" 126905b261ecSmrg 127005b261ecSmrg # Delete any leftover library objects. 127105b261ecSmrg if test "$build_old_libs" = yes; then 127205b261ecSmrg removelist="$obj $lobj $libobj ${libobj}T" 127305b261ecSmrg else 127405b261ecSmrg removelist="$lobj $libobj ${libobj}T" 127505b261ecSmrg fi 127605b261ecSmrg 127705b261ecSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 127805b261ecSmrg case $host_os in 12794642e01fSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 128005b261ecSmrg pic_mode=default 128105b261ecSmrg ;; 128205b261ecSmrg esac 128305b261ecSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 128405b261ecSmrg # non-PIC code in shared libraries is not supported 128505b261ecSmrg pic_mode=default 128605b261ecSmrg fi 128705b261ecSmrg 128805b261ecSmrg # Calculate the filename of the output object if compiler does 128905b261ecSmrg # not support -o with -c 129005b261ecSmrg if test "$compiler_c_o" = no; then 12914642e01fSmrg output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 129205b261ecSmrg lockfile="$output_obj.lock" 129305b261ecSmrg else 129405b261ecSmrg output_obj= 129505b261ecSmrg need_locks=no 129605b261ecSmrg lockfile= 129705b261ecSmrg fi 129805b261ecSmrg 129905b261ecSmrg # Lock this critical section if it is needed 130005b261ecSmrg # We use this script file to make the link, it avoids creating a new file 130105b261ecSmrg if test "$need_locks" = yes; then 13024642e01fSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13034642e01fSmrg func_echo "Waiting for $lockfile to be removed" 130405b261ecSmrg sleep 2 130505b261ecSmrg done 130605b261ecSmrg elif test "$need_locks" = warn; then 130705b261ecSmrg if test -f "$lockfile"; then 13084642e01fSmrg $ECHO "\ 130905b261ecSmrg*** ERROR, $lockfile exists and contains: 131005b261ecSmrg`cat $lockfile 2>/dev/null` 131105b261ecSmrg 131205b261ecSmrgThis indicates that another process is trying to use the same 131305b261ecSmrgtemporary object file, and libtool could not work around it because 131405b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 131505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 131605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 131705b261ecSmrgcompiler." 131805b261ecSmrg 13194642e01fSmrg $opt_dry_run || $RM $removelist 132005b261ecSmrg exit $EXIT_FAILURE 132105b261ecSmrg fi 13224642e01fSmrg removelist="$removelist $output_obj" 13234642e01fSmrg $ECHO "$srcfile" > "$lockfile" 132405b261ecSmrg fi 132505b261ecSmrg 13264642e01fSmrg $opt_dry_run || $RM $removelist 13274642e01fSmrg removelist="$removelist $lockfile" 13284642e01fSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13294642e01fSmrg 133005b261ecSmrg if test -n "$fix_srcfile_path"; then 133105b261ecSmrg eval srcfile=\"$fix_srcfile_path\" 133205b261ecSmrg fi 13334642e01fSmrg func_quote_for_eval "$srcfile" 13344642e01fSmrg qsrcfile=$func_quote_for_eval_result 133505b261ecSmrg 133605b261ecSmrg # Only build a PIC object if we are building libtool libraries. 133705b261ecSmrg if test "$build_libtool_libs" = yes; then 133805b261ecSmrg # Without this assignment, base_compile gets emptied. 133905b261ecSmrg fbsd_hideous_sh_bug=$base_compile 134005b261ecSmrg 134105b261ecSmrg if test "$pic_mode" != no; then 134205b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 134305b261ecSmrg else 134405b261ecSmrg # Don't build PIC code 134505b261ecSmrg command="$base_compile $qsrcfile" 134605b261ecSmrg fi 134705b261ecSmrg 13484642e01fSmrg func_mkdir_p "$xdir$objdir" 134905b261ecSmrg 135005b261ecSmrg if test -z "$output_obj"; then 135105b261ecSmrg # Place PIC objects in $objdir 135205b261ecSmrg command="$command -o $lobj" 135305b261ecSmrg fi 135405b261ecSmrg 13554642e01fSmrg func_show_eval_locale "$command" \ 13564642e01fSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 135705b261ecSmrg 135805b261ecSmrg if test "$need_locks" = warn && 135905b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13604642e01fSmrg $ECHO "\ 136105b261ecSmrg*** ERROR, $lockfile contains: 136205b261ecSmrg`cat $lockfile 2>/dev/null` 136305b261ecSmrg 136405b261ecSmrgbut it should contain: 136505b261ecSmrg$srcfile 136605b261ecSmrg 136705b261ecSmrgThis indicates that another process is trying to use the same 136805b261ecSmrgtemporary object file, and libtool could not work around it because 136905b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 137005b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 137105b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 137205b261ecSmrgcompiler." 137305b261ecSmrg 13744642e01fSmrg $opt_dry_run || $RM $removelist 137505b261ecSmrg exit $EXIT_FAILURE 137605b261ecSmrg fi 137705b261ecSmrg 137805b261ecSmrg # Just move the object if needed, then go on to compile the next one 137905b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13804642e01fSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 13814642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 138205b261ecSmrg fi 138305b261ecSmrg 138405b261ecSmrg # Allow error messages only from the first compilation. 138505b261ecSmrg if test "$suppress_opt" = yes; then 13864642e01fSmrg suppress_output=' >/dev/null 2>&1' 138705b261ecSmrg fi 138805b261ecSmrg fi 138905b261ecSmrg 139005b261ecSmrg # Only build a position-dependent object if we build old libraries. 139105b261ecSmrg if test "$build_old_libs" = yes; then 139205b261ecSmrg if test "$pic_mode" != yes; then 139305b261ecSmrg # Don't build PIC code 13944642e01fSmrg command="$base_compile $qsrcfile$pie_flag" 139505b261ecSmrg else 139605b261ecSmrg command="$base_compile $qsrcfile $pic_flag" 139705b261ecSmrg fi 139805b261ecSmrg if test "$compiler_c_o" = yes; then 139905b261ecSmrg command="$command -o $obj" 140005b261ecSmrg fi 140105b261ecSmrg 140205b261ecSmrg # Suppress compiler output if we already did a PIC compilation. 140305b261ecSmrg command="$command$suppress_output" 14044642e01fSmrg func_show_eval_locale "$command" \ 14054642e01fSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 140605b261ecSmrg 140705b261ecSmrg if test "$need_locks" = warn && 140805b261ecSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14094642e01fSmrg $ECHO "\ 141005b261ecSmrg*** ERROR, $lockfile contains: 141105b261ecSmrg`cat $lockfile 2>/dev/null` 141205b261ecSmrg 141305b261ecSmrgbut it should contain: 141405b261ecSmrg$srcfile 141505b261ecSmrg 141605b261ecSmrgThis indicates that another process is trying to use the same 141705b261ecSmrgtemporary object file, and libtool could not work around it because 141805b261ecSmrgyour compiler does not support \`-c' and \`-o' together. If you 141905b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better 142005b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better 142105b261ecSmrgcompiler." 142205b261ecSmrg 14234642e01fSmrg $opt_dry_run || $RM $removelist 142405b261ecSmrg exit $EXIT_FAILURE 142505b261ecSmrg fi 142605b261ecSmrg 142705b261ecSmrg # Just move the object if needed 142805b261ecSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14294642e01fSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 14304642e01fSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 143105b261ecSmrg fi 143205b261ecSmrg fi 143305b261ecSmrg 14344642e01fSmrg $opt_dry_run || { 14354642e01fSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 143605b261ecSmrg 14374642e01fSmrg # Unlock the critical section if it was locked 14384642e01fSmrg if test "$need_locks" != no; then 14394642e01fSmrg removelist=$lockfile 14404642e01fSmrg $RM "$lockfile" 14414642e01fSmrg fi 14424642e01fSmrg } 144305b261ecSmrg 144405b261ecSmrg exit $EXIT_SUCCESS 14454642e01fSmrg} 144605b261ecSmrg 14474642e01fSmrg$opt_help || { 14484642e01fSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"} 14494642e01fSmrg} 145005b261ecSmrg 14514642e01fSmrgfunc_mode_help () 14524642e01fSmrg{ 14534642e01fSmrg # We need to display help for each of the modes. 14544642e01fSmrg case $mode in 14554642e01fSmrg "") 14564642e01fSmrg # Generic help is extracted from the usage comments 14574642e01fSmrg # at the start of this file. 14584642e01fSmrg func_help 14594642e01fSmrg ;; 146005b261ecSmrg 14614642e01fSmrg clean) 14624642e01fSmrg $ECHO \ 14634642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 146405b261ecSmrg 14654642e01fSmrgRemove files from the build directory. 146605b261ecSmrg 14674642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 14684642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14694642e01fSmrgto RM. 147005b261ecSmrg 14714642e01fSmrgIf FILE is a libtool library, object or program, all the files associated 14724642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 14734642e01fSmrg ;; 147405b261ecSmrg 14754642e01fSmrg compile) 14764642e01fSmrg $ECHO \ 14774642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 147805b261ecSmrg 14794642e01fSmrgCompile a source file into a libtool library object. 148005b261ecSmrg 14814642e01fSmrgThis mode accepts the following additional options: 148205b261ecSmrg 14834642e01fSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14844642e01fSmrg -no-suppress do not suppress compiler output for multiple passes 14854642e01fSmrg -prefer-pic try to building PIC objects only 14864642e01fSmrg -prefer-non-pic try to building non-PIC objects only 14874642e01fSmrg -shared do not build a \`.o' file suitable for static linking 14884642e01fSmrg -static only build a \`.o' file suitable for static linking 148905b261ecSmrg 14904642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 14914642e01fSmrgfrom the given SOURCEFILE. 149205b261ecSmrg 14934642e01fSmrgThe output file name is determined by removing the directory component from 14944642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 14954642e01fSmrglibrary object suffix, \`.lo'." 14964642e01fSmrg ;; 149705b261ecSmrg 14984642e01fSmrg execute) 14994642e01fSmrg $ECHO \ 15004642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 150105b261ecSmrg 15024642e01fSmrgAutomatically set library path, then run a program. 150305b261ecSmrg 15044642e01fSmrgThis mode accepts the following additional options: 150505b261ecSmrg 15064642e01fSmrg -dlopen FILE add the directory containing FILE to the library path 150705b261ecSmrg 15084642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen' 15094642e01fSmrgflags. 151005b261ecSmrg 15114642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 15124642e01fSmrginto their corresponding uninstalled binary, and any of their required library 15134642e01fSmrgdirectories are added to the library path. 151405b261ecSmrg 15154642e01fSmrgThen, COMMAND is executed, with ARGS as arguments." 15164642e01fSmrg ;; 151705b261ecSmrg 15184642e01fSmrg finish) 15194642e01fSmrg $ECHO \ 15204642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 152105b261ecSmrg 15224642e01fSmrgComplete the installation of libtool libraries. 152305b261ecSmrg 15244642e01fSmrgEach LIBDIR is a directory that contains libtool libraries. 152505b261ecSmrg 15264642e01fSmrgThe commands that this mode executes may require superuser privileges. Use 15274642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed." 15284642e01fSmrg ;; 152905b261ecSmrg 15304642e01fSmrg install) 15314642e01fSmrg $ECHO \ 15324642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 153305b261ecSmrg 15344642e01fSmrgInstall executables or libraries. 153505b261ecSmrg 15364642e01fSmrgINSTALL-COMMAND is the installation command. The first component should be 15374642e01fSmrgeither the \`install' or \`cp' program. 153805b261ecSmrg 15394642e01fSmrgThe following components of INSTALL-COMMAND are treated specially: 154005b261ecSmrg 15414642e01fSmrg -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 154205b261ecSmrg 15434642e01fSmrgThe rest of the components are interpreted as arguments to that command (only 15444642e01fSmrgBSD-compatible install options are recognized)." 15454642e01fSmrg ;; 154605b261ecSmrg 15474642e01fSmrg link) 15484642e01fSmrg $ECHO \ 15494642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 155005b261ecSmrg 15514642e01fSmrgLink object files or libraries together to form another library, or to 15524642e01fSmrgcreate an executable program. 155305b261ecSmrg 15544642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create 15554642e01fSmrga program from several object files. 155605b261ecSmrg 15574642e01fSmrgThe following components of LINK-COMMAND are treated specially: 155805b261ecSmrg 15594642e01fSmrg -all-static do not do any dynamic linking at all 15604642e01fSmrg -avoid-version do not add a version suffix if possible 15614642e01fSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15624642e01fSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15634642e01fSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15644642e01fSmrg -export-symbols SYMFILE 15654642e01fSmrg try to export only the symbols listed in SYMFILE 15664642e01fSmrg -export-symbols-regex REGEX 15674642e01fSmrg try to export only the symbols matching REGEX 15684642e01fSmrg -LLIBDIR search LIBDIR for required installed libraries 15694642e01fSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 15704642e01fSmrg -module build a library that can dlopened 15714642e01fSmrg -no-fast-install disable the fast-install mode 15724642e01fSmrg -no-install link a not-installable executable 15734642e01fSmrg -no-undefined declare that a library does not refer to external symbols 15744642e01fSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15754642e01fSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 15764642e01fSmrg -precious-files-regex REGEX 15774642e01fSmrg don't remove output files matching REGEX 15784642e01fSmrg -release RELEASE specify package release information 15794642e01fSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 15804642e01fSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15814642e01fSmrg -shared only do dynamic linking of libtool libraries 15824642e01fSmrg -shrext SUFFIX override the standard shared library file extension 15834642e01fSmrg -static do not do any dynamic linking of uninstalled libtool libraries 15844642e01fSmrg -static-libtool-libs 15854642e01fSmrg do not do any dynamic linking of libtool libraries 15864642e01fSmrg -version-info CURRENT[:REVISION[:AGE]] 15874642e01fSmrg specify library version info [each variable defaults to 0] 15884642e01fSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 158905b261ecSmrg 15904642e01fSmrgAll other options (arguments beginning with \`-') are ignored. 159105b261ecSmrg 15924642e01fSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 15934642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library 15944642e01fSmrgobject files. 159505b261ecSmrg 15964642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15974642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 15984642e01fSmrgrequired, except when creating a convenience library. 159905b261ecSmrg 16004642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16014642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 160205b261ecSmrg 16034642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16044642e01fSmrgis created, otherwise an executable program is created." 160505b261ecSmrg ;; 160605b261ecSmrg 16074642e01fSmrg uninstall) 16084642e01fSmrg $ECHO \ 16094642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 161005b261ecSmrg 16114642e01fSmrgRemove libraries from an installation directory. 161205b261ecSmrg 16134642e01fSmrgRM is the name of the program to use to delete files associated with each FILE 16144642e01fSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16154642e01fSmrgto RM. 161605b261ecSmrg 16174642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted. 16184642e01fSmrgOtherwise, only FILE itself is deleted using RM." 16194642e01fSmrg ;; 162005b261ecSmrg 16214642e01fSmrg *) 16224642e01fSmrg func_fatal_help "invalid operation mode \`$mode'" 16234642e01fSmrg ;; 16244642e01fSmrg esac 162505b261ecSmrg 16264642e01fSmrg $ECHO 16274642e01fSmrg $ECHO "Try \`$progname --help' for more information about other modes." 162805b261ecSmrg 16294642e01fSmrg exit $? 16304642e01fSmrg} 163105b261ecSmrg 16324642e01fSmrg # Now that we've collected a possible --mode arg, show help if necessary 16334642e01fSmrg $opt_help && func_mode_help 163405b261ecSmrg 163505b261ecSmrg 16364642e01fSmrg# func_mode_execute arg... 16374642e01fSmrgfunc_mode_execute () 16384642e01fSmrg{ 16394642e01fSmrg $opt_debug 16404642e01fSmrg # The first argument is the command name. 16414642e01fSmrg cmd="$nonopt" 16424642e01fSmrg test -z "$cmd" && \ 16434642e01fSmrg func_fatal_help "you must specify a COMMAND" 164405b261ecSmrg 16454642e01fSmrg # Handle -dlopen flags immediately. 16464642e01fSmrg for file in $execute_dlfiles; do 16474642e01fSmrg test -f "$file" \ 16484642e01fSmrg || func_fatal_help "\`$file' is not a file" 164905b261ecSmrg 16504642e01fSmrg dir= 16514642e01fSmrg case $file in 16524642e01fSmrg *.la) 16534642e01fSmrg # Check to see that this really is a libtool archive. 16544642e01fSmrg func_lalib_unsafe_p "$file" \ 16554642e01fSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 165605b261ecSmrg 16574642e01fSmrg # Read the libtool library. 16584642e01fSmrg dlname= 16594642e01fSmrg library_names= 16604642e01fSmrg func_source "$file" 166105b261ecSmrg 16624642e01fSmrg # Skip this library if it cannot be dlopened. 16634642e01fSmrg if test -z "$dlname"; then 16644642e01fSmrg # Warn if it was a shared library. 16654642e01fSmrg test -n "$library_names" && \ 16664642e01fSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 16674642e01fSmrg continue 16684642e01fSmrg fi 166905b261ecSmrg 16704642e01fSmrg func_dirname "$file" "" "." 16714642e01fSmrg dir="$func_dirname_result" 167205b261ecSmrg 16734642e01fSmrg if test -f "$dir/$objdir/$dlname"; then 16744642e01fSmrg dir="$dir/$objdir" 16754642e01fSmrg else 16764642e01fSmrg if test ! -f "$dir/$dlname"; then 16774642e01fSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16784642e01fSmrg fi 16794642e01fSmrg fi 168005b261ecSmrg ;; 168105b261ecSmrg 16824642e01fSmrg *.lo) 16834642e01fSmrg # Just add the directory containing the .lo file. 16844642e01fSmrg func_dirname "$file" "" "." 16854642e01fSmrg dir="$func_dirname_result" 168605b261ecSmrg ;; 168705b261ecSmrg 16884642e01fSmrg *) 16894642e01fSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 169005b261ecSmrg continue 169105b261ecSmrg ;; 16924642e01fSmrg esac 169305b261ecSmrg 16944642e01fSmrg # Get the absolute pathname. 16954642e01fSmrg absdir=`cd "$dir" && pwd` 16964642e01fSmrg test -n "$absdir" && dir="$absdir" 169705b261ecSmrg 16984642e01fSmrg # Now add the directory to shlibpath_var. 16994642e01fSmrg if eval "test -z \"\$$shlibpath_var\""; then 17004642e01fSmrg eval "$shlibpath_var=\"\$dir\"" 17014642e01fSmrg else 17024642e01fSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17034642e01fSmrg fi 17044642e01fSmrg done 170505b261ecSmrg 17064642e01fSmrg # This variable tells wrapper scripts just to set shlibpath_var 17074642e01fSmrg # rather than running their programs. 17084642e01fSmrg libtool_execute_magic="$magic" 170905b261ecSmrg 17104642e01fSmrg # Check if any of the arguments is a wrapper script. 17114642e01fSmrg args= 17124642e01fSmrg for file 17134642e01fSmrg do 17144642e01fSmrg case $file in 17154642e01fSmrg -*) ;; 17164642e01fSmrg *) 17174642e01fSmrg # Do a test to see if this is really a libtool program. 17184642e01fSmrg if func_ltwrapper_script_p "$file"; then 17194642e01fSmrg func_source "$file" 17204642e01fSmrg # Transform arg to wrapped name. 17214642e01fSmrg file="$progdir/$program" 17224642e01fSmrg elif func_ltwrapper_executable_p "$file"; then 17234642e01fSmrg func_ltwrapper_scriptname "$file" 17244642e01fSmrg func_source "$func_ltwrapper_scriptname_result" 17254642e01fSmrg # Transform arg to wrapped name. 17264642e01fSmrg file="$progdir/$program" 17274642e01fSmrg fi 17284642e01fSmrg ;; 17294642e01fSmrg esac 17304642e01fSmrg # Quote arguments (to preserve shell metacharacters). 17314642e01fSmrg func_quote_for_eval "$file" 17324642e01fSmrg args="$args $func_quote_for_eval_result" 17334642e01fSmrg done 173405b261ecSmrg 17354642e01fSmrg if test "X$opt_dry_run" = Xfalse; then 17364642e01fSmrg if test -n "$shlibpath_var"; then 17374642e01fSmrg # Export the shlibpath_var. 17384642e01fSmrg eval "export $shlibpath_var" 17394642e01fSmrg fi 174005b261ecSmrg 17414642e01fSmrg # Restore saved environment variables 17424642e01fSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17434642e01fSmrg do 17444642e01fSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 17454642e01fSmrg $lt_var=\$save_$lt_var; export $lt_var 174605b261ecSmrg else 17474642e01fSmrg $lt_unset $lt_var 17484642e01fSmrg fi" 17494642e01fSmrg done 175005b261ecSmrg 17514642e01fSmrg # Now prepare to actually exec the command. 17524642e01fSmrg exec_cmd="\$cmd$args" 17534642e01fSmrg else 17544642e01fSmrg # Display what would be done. 17554642e01fSmrg if test -n "$shlibpath_var"; then 17564642e01fSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17574642e01fSmrg $ECHO "export $shlibpath_var" 17584642e01fSmrg fi 17594642e01fSmrg $ECHO "$cmd$args" 17604642e01fSmrg exit $EXIT_SUCCESS 17614642e01fSmrg fi 17624642e01fSmrg} 176305b261ecSmrg 17644642e01fSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"} 176505b261ecSmrg 176605b261ecSmrg 17674642e01fSmrg# func_mode_finish arg... 17684642e01fSmrgfunc_mode_finish () 17694642e01fSmrg{ 17704642e01fSmrg $opt_debug 17714642e01fSmrg libdirs="$nonopt" 17724642e01fSmrg admincmds= 177305b261ecSmrg 17744642e01fSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17754642e01fSmrg for dir 17764642e01fSmrg do 17774642e01fSmrg libdirs="$libdirs $dir" 17784642e01fSmrg done 177905b261ecSmrg 17804642e01fSmrg for libdir in $libdirs; do 17814642e01fSmrg if test -n "$finish_cmds"; then 17824642e01fSmrg # Do each command in the finish commands. 17834642e01fSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17844642e01fSmrg'"$cmd"'"' 178505b261ecSmrg fi 17864642e01fSmrg if test -n "$finish_eval"; then 17874642e01fSmrg # Do the single finish_eval. 17884642e01fSmrg eval cmds=\"$finish_eval\" 17894642e01fSmrg $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17904642e01fSmrg $cmds" 17914642e01fSmrg fi 17924642e01fSmrg done 17934642e01fSmrg fi 179405b261ecSmrg 17954642e01fSmrg # Exit here if they wanted silent mode. 17964642e01fSmrg $opt_silent && exit $EXIT_SUCCESS 179705b261ecSmrg 17984642e01fSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 17994642e01fSmrg $ECHO "Libraries have been installed in:" 18004642e01fSmrg for libdir in $libdirs; do 18014642e01fSmrg $ECHO " $libdir" 18024642e01fSmrg done 18034642e01fSmrg $ECHO 18044642e01fSmrg $ECHO "If you ever happen to want to link against installed libraries" 18054642e01fSmrg $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18064642e01fSmrg $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18074642e01fSmrg $ECHO "flag during linking and do at least one of the following:" 18084642e01fSmrg if test -n "$shlibpath_var"; then 18094642e01fSmrg $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18104642e01fSmrg $ECHO " during execution" 18114642e01fSmrg fi 18124642e01fSmrg if test -n "$runpath_var"; then 18134642e01fSmrg $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18144642e01fSmrg $ECHO " during linking" 18154642e01fSmrg fi 18164642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 18174642e01fSmrg libdir=LIBDIR 18184642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 18194642e01fSmrg 18204642e01fSmrg $ECHO " - use the \`$flag' linker flag" 18214642e01fSmrg fi 18224642e01fSmrg if test -n "$admincmds"; then 18234642e01fSmrg $ECHO " - have your system administrator run these commands:$admincmds" 18244642e01fSmrg fi 18254642e01fSmrg if test -f /etc/ld.so.conf; then 18264642e01fSmrg $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18274642e01fSmrg fi 18284642e01fSmrg $ECHO 18294642e01fSmrg 18304642e01fSmrg $ECHO "See any operating system documentation about shared libraries for" 18314642e01fSmrg case $host in 18324642e01fSmrg solaris2.[6789]|solaris2.1[0-9]) 18334642e01fSmrg $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18344642e01fSmrg $ECHO "pages." 18354642e01fSmrg ;; 18364642e01fSmrg *) 18374642e01fSmrg $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18384642e01fSmrg ;; 18394642e01fSmrg esac 18404642e01fSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 18414642e01fSmrg exit $EXIT_SUCCESS 18424642e01fSmrg} 18434642e01fSmrg 18444642e01fSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"} 18454642e01fSmrg 18464642e01fSmrg 18474642e01fSmrg# func_mode_install arg... 18484642e01fSmrgfunc_mode_install () 18494642e01fSmrg{ 18504642e01fSmrg $opt_debug 18514642e01fSmrg # There may be an optional sh(1) argument at the beginning of 18524642e01fSmrg # install_prog (especially on Windows NT). 18534642e01fSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18544642e01fSmrg # Allow the use of GNU shtool's install command. 18554642e01fSmrg $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18564642e01fSmrg # Aesthetically quote it. 18574642e01fSmrg func_quote_for_eval "$nonopt" 18584642e01fSmrg install_prog="$func_quote_for_eval_result " 18594642e01fSmrg arg=$1 18604642e01fSmrg shift 18614642e01fSmrg else 18624642e01fSmrg install_prog= 18634642e01fSmrg arg=$nonopt 18644642e01fSmrg fi 18654642e01fSmrg 18664642e01fSmrg # The real first argument should be the name of the installation program. 18674642e01fSmrg # Aesthetically quote it. 18684642e01fSmrg func_quote_for_eval "$arg" 18694642e01fSmrg install_prog="$install_prog$func_quote_for_eval_result" 18704642e01fSmrg 18714642e01fSmrg # We need to accept at least all the BSD install flags. 18724642e01fSmrg dest= 18734642e01fSmrg files= 18744642e01fSmrg opts= 18754642e01fSmrg prev= 18764642e01fSmrg install_type= 18774642e01fSmrg isdir=no 18784642e01fSmrg stripme= 18794642e01fSmrg for arg 18804642e01fSmrg do 18814642e01fSmrg if test -n "$dest"; then 18824642e01fSmrg files="$files $dest" 18834642e01fSmrg dest=$arg 18844642e01fSmrg continue 18854642e01fSmrg fi 18864642e01fSmrg 18874642e01fSmrg case $arg in 18884642e01fSmrg -d) isdir=yes ;; 18894642e01fSmrg -f) 18904642e01fSmrg case " $install_prog " in 18914642e01fSmrg *[\\\ /]cp\ *) ;; 18924642e01fSmrg *) prev=$arg ;; 18934642e01fSmrg esac 18944642e01fSmrg ;; 18954642e01fSmrg -g | -m | -o) 18964642e01fSmrg prev=$arg 18974642e01fSmrg ;; 18984642e01fSmrg -s) 18994642e01fSmrg stripme=" -s" 19004642e01fSmrg continue 19014642e01fSmrg ;; 19024642e01fSmrg -*) 19034642e01fSmrg ;; 19044642e01fSmrg *) 19054642e01fSmrg # If the previous option needed an argument, then skip it. 19064642e01fSmrg if test -n "$prev"; then 190705b261ecSmrg prev= 190805b261ecSmrg else 19094642e01fSmrg dest=$arg 19104642e01fSmrg continue 191105b261ecSmrg fi 191205b261ecSmrg ;; 19134642e01fSmrg esac 191405b261ecSmrg 19154642e01fSmrg # Aesthetically quote the argument. 19164642e01fSmrg func_quote_for_eval "$arg" 19174642e01fSmrg install_prog="$install_prog $func_quote_for_eval_result" 19184642e01fSmrg done 191905b261ecSmrg 19204642e01fSmrg test -z "$install_prog" && \ 19214642e01fSmrg func_fatal_help "you must specify an install program" 192205b261ecSmrg 19234642e01fSmrg test -n "$prev" && \ 19244642e01fSmrg func_fatal_help "the \`$prev' option requires an argument" 192505b261ecSmrg 19264642e01fSmrg if test -z "$files"; then 19274642e01fSmrg if test -z "$dest"; then 19284642e01fSmrg func_fatal_help "no file or destination specified" 19294642e01fSmrg else 19304642e01fSmrg func_fatal_help "you must specify a destination" 19314642e01fSmrg fi 193205b261ecSmrg fi 193305b261ecSmrg 19344642e01fSmrg # Strip any trailing slash from the destination. 19354642e01fSmrg func_stripname '' '/' "$dest" 19364642e01fSmrg dest=$func_stripname_result 193705b261ecSmrg 19384642e01fSmrg # Check to see that the destination is a directory. 19394642e01fSmrg test -d "$dest" && isdir=yes 19404642e01fSmrg if test "$isdir" = yes; then 19414642e01fSmrg destdir="$dest" 19424642e01fSmrg destname= 194305b261ecSmrg else 19444642e01fSmrg func_dirname_and_basename "$dest" "" "." 19454642e01fSmrg destdir="$func_dirname_result" 19464642e01fSmrg destname="$func_basename_result" 194705b261ecSmrg 19484642e01fSmrg # Not a directory, so check to see that there is only one file specified. 19494642e01fSmrg set dummy $files; shift 19504642e01fSmrg test "$#" -gt 1 && \ 19514642e01fSmrg func_fatal_help "\`$dest' is not a directory" 195205b261ecSmrg fi 19534642e01fSmrg case $destdir in 19544642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 195505b261ecSmrg *) 19564642e01fSmrg for file in $files; do 19574642e01fSmrg case $file in 19584642e01fSmrg *.lo) ;; 19594642e01fSmrg *) 19604642e01fSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 19614642e01fSmrg ;; 19624642e01fSmrg esac 19634642e01fSmrg done 196405b261ecSmrg ;; 196505b261ecSmrg esac 196605b261ecSmrg 19674642e01fSmrg # This variable tells wrapper scripts just to set variables rather 19684642e01fSmrg # than running their programs. 19694642e01fSmrg libtool_install_magic="$magic" 197005b261ecSmrg 19714642e01fSmrg staticlibs= 19724642e01fSmrg future_libdirs= 19734642e01fSmrg current_libdirs= 19744642e01fSmrg for file in $files; do 197505b261ecSmrg 19764642e01fSmrg # Do each installation. 19774642e01fSmrg case $file in 19784642e01fSmrg *.$libext) 19794642e01fSmrg # Do the static libraries later. 19804642e01fSmrg staticlibs="$staticlibs $file" 19814642e01fSmrg ;; 19824642e01fSmrg 19834642e01fSmrg *.la) 19844642e01fSmrg # Check to see that this really is a libtool archive. 19854642e01fSmrg func_lalib_unsafe_p "$file" \ 19864642e01fSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 19874642e01fSmrg 19884642e01fSmrg library_names= 19894642e01fSmrg old_library= 19904642e01fSmrg relink_command= 19914642e01fSmrg func_source "$file" 19924642e01fSmrg 19934642e01fSmrg # Add the libdir to current_libdirs if it is the destination. 19944642e01fSmrg if test "X$destdir" = "X$libdir"; then 19954642e01fSmrg case "$current_libdirs " in 19964642e01fSmrg *" $libdir "*) ;; 19974642e01fSmrg *) current_libdirs="$current_libdirs $libdir" ;; 199805b261ecSmrg esac 19994642e01fSmrg else 20004642e01fSmrg # Note the libdir as a future libdir. 20014642e01fSmrg case "$future_libdirs " in 20024642e01fSmrg *" $libdir "*) ;; 20034642e01fSmrg *) future_libdirs="$future_libdirs $libdir" ;; 20044642e01fSmrg esac 20054642e01fSmrg fi 200605b261ecSmrg 20074642e01fSmrg func_dirname "$file" "/" "" 20084642e01fSmrg dir="$func_dirname_result" 20094642e01fSmrg dir="$dir$objdir" 20104642e01fSmrg 20114642e01fSmrg if test -n "$relink_command"; then 20124642e01fSmrg # Determine the prefix the user has applied to our future dir. 20134642e01fSmrg inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20144642e01fSmrg 20154642e01fSmrg # Don't allow the user to place us outside of our expected 20164642e01fSmrg # location b/c this prevents finding dependent libraries that 20174642e01fSmrg # are installed to the same prefix. 20184642e01fSmrg # At present, this check doesn't affect windows .dll's that 20194642e01fSmrg # are installed into $libdir/../bin (currently, that works fine) 20204642e01fSmrg # but it's something to keep an eye on. 20214642e01fSmrg test "$inst_prefix_dir" = "$destdir" && \ 20224642e01fSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20234642e01fSmrg 20244642e01fSmrg if test -n "$inst_prefix_dir"; then 20254642e01fSmrg # Stick the inst_prefix_dir data into the link command. 20264642e01fSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20274642e01fSmrg else 20284642e01fSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20294642e01fSmrg fi 20304642e01fSmrg 20314642e01fSmrg func_warning "relinking \`$file'" 20324642e01fSmrg func_show_eval "$relink_command" \ 20334642e01fSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20344642e01fSmrg fi 20354642e01fSmrg 20364642e01fSmrg # See the names of the shared library. 20374642e01fSmrg set dummy $library_names; shift 20384642e01fSmrg if test -n "$1"; then 20394642e01fSmrg realname="$1" 20404642e01fSmrg shift 20414642e01fSmrg 20424642e01fSmrg srcname="$realname" 20434642e01fSmrg test -n "$relink_command" && srcname="$realname"T 20444642e01fSmrg 20454642e01fSmrg # Install the shared library and build the symlinks. 20464642e01fSmrg func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20474642e01fSmrg 'exit $?' 20484642e01fSmrg tstripme="$stripme" 20494642e01fSmrg case $host_os in 20504642e01fSmrg cygwin* | mingw* | pw32* | cegcc*) 20514642e01fSmrg case $realname in 20524642e01fSmrg *.dll.a) 20534642e01fSmrg tstripme="" 20544642e01fSmrg ;; 20554642e01fSmrg esac 205605b261ecSmrg ;; 205705b261ecSmrg esac 20584642e01fSmrg if test -n "$tstripme" && test -n "$striplib"; then 20594642e01fSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 206005b261ecSmrg fi 20614642e01fSmrg 20624642e01fSmrg if test "$#" -gt 0; then 20634642e01fSmrg # Delete the old symlinks, and create new ones. 20644642e01fSmrg # Try `ln -sf' first, because the `ln' binary might depend on 20654642e01fSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 20664642e01fSmrg # so we also need to try rm && ln -s. 20674642e01fSmrg for linkname 20684642e01fSmrg do 20694642e01fSmrg test "$linkname" != "$realname" \ 20704642e01fSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 207105b261ecSmrg done 207205b261ecSmrg fi 207305b261ecSmrg 20744642e01fSmrg # Do each command in the postinstall commands. 20754642e01fSmrg lib="$destdir/$realname" 20764642e01fSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 207705b261ecSmrg fi 207805b261ecSmrg 20794642e01fSmrg # Install the pseudo-library for information purposes. 20804642e01fSmrg func_basename "$file" 20814642e01fSmrg name="$func_basename_result" 20824642e01fSmrg instname="$dir/$name"i 20834642e01fSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 208405b261ecSmrg 20854642e01fSmrg # Maybe install the static library, too. 20864642e01fSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20874642e01fSmrg ;; 208805b261ecSmrg 20894642e01fSmrg *.lo) 20904642e01fSmrg # Install (i.e. copy) a libtool object. 209105b261ecSmrg 20924642e01fSmrg # Figure out destination file name, if it wasn't already specified. 20934642e01fSmrg if test -n "$destname"; then 20944642e01fSmrg destfile="$destdir/$destname" 20954642e01fSmrg else 20964642e01fSmrg func_basename "$file" 20974642e01fSmrg destfile="$func_basename_result" 20984642e01fSmrg destfile="$destdir/$destfile" 20994642e01fSmrg fi 21004642e01fSmrg 21014642e01fSmrg # Deduce the name of the destination old-style object file. 21024642e01fSmrg case $destfile in 21034642e01fSmrg *.lo) 21044642e01fSmrg func_lo2o "$destfile" 21054642e01fSmrg staticdest=$func_lo2o_result 21064642e01fSmrg ;; 21074642e01fSmrg *.$objext) 21084642e01fSmrg staticdest="$destfile" 21094642e01fSmrg destfile= 21104642e01fSmrg ;; 21114642e01fSmrg *) 21124642e01fSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 21134642e01fSmrg ;; 211405b261ecSmrg esac 211505b261ecSmrg 21164642e01fSmrg # Install the libtool object if requested. 21174642e01fSmrg test -n "$destfile" && \ 21184642e01fSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 21194642e01fSmrg 21204642e01fSmrg # Install the old object if enabled. 21214642e01fSmrg if test "$build_old_libs" = yes; then 21224642e01fSmrg # Deduce the name of the old-style object file. 21234642e01fSmrg func_lo2o "$file" 21244642e01fSmrg staticobj=$func_lo2o_result 21254642e01fSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 212605b261ecSmrg fi 21274642e01fSmrg exit $EXIT_SUCCESS 21284642e01fSmrg ;; 212905b261ecSmrg 21304642e01fSmrg *) 21314642e01fSmrg # Figure out destination file name, if it wasn't already specified. 21324642e01fSmrg if test -n "$destname"; then 21334642e01fSmrg destfile="$destdir/$destname" 21344642e01fSmrg else 21354642e01fSmrg func_basename "$file" 21364642e01fSmrg destfile="$func_basename_result" 21374642e01fSmrg destfile="$destdir/$destfile" 21384642e01fSmrg fi 213905b261ecSmrg 21404642e01fSmrg # If the file is missing, and there is a .exe on the end, strip it 21414642e01fSmrg # because it is most likely a libtool script we actually want to 21424642e01fSmrg # install 21434642e01fSmrg stripped_ext="" 21444642e01fSmrg case $file in 21454642e01fSmrg *.exe) 21464642e01fSmrg if test ! -f "$file"; then 21474642e01fSmrg func_stripname '' '.exe' "$file" 21484642e01fSmrg file=$func_stripname_result 21494642e01fSmrg stripped_ext=".exe" 21504642e01fSmrg fi 21514642e01fSmrg ;; 21524642e01fSmrg esac 215305b261ecSmrg 21544642e01fSmrg # Do a test to see if this is really a libtool program. 21554642e01fSmrg case $host in 21564642e01fSmrg *cygwin* | *mingw*) 21574642e01fSmrg if func_ltwrapper_executable_p "$file"; then 21584642e01fSmrg func_ltwrapper_scriptname "$file" 21594642e01fSmrg wrapper=$func_ltwrapper_scriptname_result 21604642e01fSmrg else 21614642e01fSmrg func_stripname '' '.exe' "$file" 21624642e01fSmrg wrapper=$func_stripname_result 21634642e01fSmrg fi 21644642e01fSmrg ;; 21654642e01fSmrg *) 21664642e01fSmrg wrapper=$file 21674642e01fSmrg ;; 21684642e01fSmrg esac 21694642e01fSmrg if func_ltwrapper_script_p "$wrapper"; then 21704642e01fSmrg notinst_deplibs= 21714642e01fSmrg relink_command= 217205b261ecSmrg 21734642e01fSmrg func_source "$wrapper" 21744642e01fSmrg 21754642e01fSmrg # Check the variables that should have been set. 21764642e01fSmrg test -z "$generated_by_libtool_version" && \ 21774642e01fSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21784642e01fSmrg 21794642e01fSmrg finalize=yes 21804642e01fSmrg for lib in $notinst_deplibs; do 21814642e01fSmrg # Check to see that each library is installed. 21824642e01fSmrg libdir= 21834642e01fSmrg if test -f "$lib"; then 21844642e01fSmrg func_source "$lib" 21854642e01fSmrg fi 21864642e01fSmrg libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21874642e01fSmrg if test -n "$libdir" && test ! -f "$libfile"; then 21884642e01fSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 21894642e01fSmrg finalize=no 21904642e01fSmrg fi 21914642e01fSmrg done 21924642e01fSmrg 21934642e01fSmrg relink_command= 21944642e01fSmrg func_source "$wrapper" 21954642e01fSmrg 21964642e01fSmrg outputname= 21974642e01fSmrg if test "$fast_install" = no && test -n "$relink_command"; then 21984642e01fSmrg $opt_dry_run || { 21994642e01fSmrg if test "$finalize" = yes; then 22004642e01fSmrg tmpdir=`func_mktempdir` 22014642e01fSmrg func_basename "$file$stripped_ext" 22024642e01fSmrg file="$func_basename_result" 22034642e01fSmrg outputname="$tmpdir/$file" 22044642e01fSmrg # Replace the output file specification. 22054642e01fSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22064642e01fSmrg 22074642e01fSmrg $opt_silent || { 22084642e01fSmrg func_quote_for_expand "$relink_command" 22094642e01fSmrg eval "func_echo $func_quote_for_expand_result" 22104642e01fSmrg } 22114642e01fSmrg if eval "$relink_command"; then : 22124642e01fSmrg else 22134642e01fSmrg func_error "error: relink \`$file' with the above command before installing it" 22144642e01fSmrg $opt_dry_run || ${RM}r "$tmpdir" 22154642e01fSmrg continue 22164642e01fSmrg fi 22174642e01fSmrg file="$outputname" 22184642e01fSmrg else 22194642e01fSmrg func_warning "cannot relink \`$file'" 22204642e01fSmrg fi 22214642e01fSmrg } 222205b261ecSmrg else 22234642e01fSmrg # Install the binary that we compiled earlier. 22244642e01fSmrg file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 222505b261ecSmrg fi 22264642e01fSmrg fi 222705b261ecSmrg 22284642e01fSmrg # remove .exe since cygwin /usr/bin/install will append another 22294642e01fSmrg # one anyway 22304642e01fSmrg case $install_prog,$host in 22314642e01fSmrg */usr/bin/install*,*cygwin*) 22324642e01fSmrg case $file:$destfile in 22334642e01fSmrg *.exe:*.exe) 22344642e01fSmrg # this is ok 22354642e01fSmrg ;; 22364642e01fSmrg *.exe:*) 22374642e01fSmrg destfile=$destfile.exe 22384642e01fSmrg ;; 22394642e01fSmrg *:*.exe) 22404642e01fSmrg func_stripname '' '.exe' "$destfile" 22414642e01fSmrg destfile=$func_stripname_result 22424642e01fSmrg ;; 22434642e01fSmrg esac 224405b261ecSmrg ;; 224505b261ecSmrg esac 22464642e01fSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22474642e01fSmrg $opt_dry_run || if test -n "$outputname"; then 22484642e01fSmrg ${RM}r "$tmpdir" 22494642e01fSmrg fi 22504642e01fSmrg ;; 22514642e01fSmrg esac 22524642e01fSmrg done 225305b261ecSmrg 22544642e01fSmrg for file in $staticlibs; do 22554642e01fSmrg func_basename "$file" 22564642e01fSmrg name="$func_basename_result" 22574642e01fSmrg 22584642e01fSmrg # Set up the ranlib parameters. 22594642e01fSmrg oldlib="$destdir/$name" 22604642e01fSmrg 22614642e01fSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22624642e01fSmrg 22634642e01fSmrg if test -n "$stripme" && test -n "$old_striplib"; then 22644642e01fSmrg func_show_eval "$old_striplib $oldlib" 'exit $?' 22654642e01fSmrg fi 22664642e01fSmrg 22674642e01fSmrg # Do each command in the postinstall commands. 22684642e01fSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22694642e01fSmrg done 22704642e01fSmrg 22714642e01fSmrg test -n "$future_libdirs" && \ 22724642e01fSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 22734642e01fSmrg 22744642e01fSmrg if test -n "$current_libdirs"; then 22754642e01fSmrg # Maybe just do a dry run. 22764642e01fSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 22774642e01fSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22784642e01fSmrg else 22794642e01fSmrg exit $EXIT_SUCCESS 22804642e01fSmrg fi 22814642e01fSmrg} 22824642e01fSmrg 22834642e01fSmrgtest "$mode" = install && func_mode_install ${1+"$@"} 22844642e01fSmrg 22854642e01fSmrg 22864642e01fSmrg# func_generate_dlsyms outputname originator pic_p 22874642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 22884642e01fSmrg# a dlpreopen symbol table. 22894642e01fSmrgfunc_generate_dlsyms () 22904642e01fSmrg{ 22914642e01fSmrg $opt_debug 22924642e01fSmrg my_outputname="$1" 22934642e01fSmrg my_originator="$2" 22944642e01fSmrg my_pic_p="${3-no}" 22954642e01fSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22964642e01fSmrg my_dlsyms= 22974642e01fSmrg 22984642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22994642e01fSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 23004642e01fSmrg my_dlsyms="${my_outputname}S.c" 23014642e01fSmrg else 23024642e01fSmrg func_error "not configured to extract global symbols from dlpreopened files" 23034642e01fSmrg fi 23044642e01fSmrg fi 23054642e01fSmrg 23064642e01fSmrg if test -n "$my_dlsyms"; then 23074642e01fSmrg case $my_dlsyms in 23084642e01fSmrg "") ;; 23094642e01fSmrg *.c) 23104642e01fSmrg # Discover the nlist of each of the dlfiles. 23114642e01fSmrg nlist="$output_objdir/${my_outputname}.nm" 23124642e01fSmrg 23134642e01fSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23144642e01fSmrg 23154642e01fSmrg # Parse the name list into a source file. 23164642e01fSmrg func_verbose "creating $output_objdir/$my_dlsyms" 23174642e01fSmrg 23184642e01fSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23194642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23204642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23214642e01fSmrg 23224642e01fSmrg#ifdef __cplusplus 23234642e01fSmrgextern \"C\" { 23244642e01fSmrg#endif 23254642e01fSmrg 23264642e01fSmrg/* External symbol declarations for the compiler. */\ 23274642e01fSmrg" 23284642e01fSmrg 23294642e01fSmrg if test "$dlself" = yes; then 23304642e01fSmrg func_verbose "generating symbol list for \`$output'" 23314642e01fSmrg 23324642e01fSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23334642e01fSmrg 23344642e01fSmrg # Add our own program objects to the symbol list. 23354642e01fSmrg progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23364642e01fSmrg for progfile in $progfiles; do 23374642e01fSmrg func_verbose "extracting global C symbols from \`$progfile'" 23384642e01fSmrg $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23394642e01fSmrg done 23404642e01fSmrg 23414642e01fSmrg if test -n "$exclude_expsyms"; then 23424642e01fSmrg $opt_dry_run || { 23434642e01fSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23444642e01fSmrg eval '$MV "$nlist"T "$nlist"' 23454642e01fSmrg } 234605b261ecSmrg fi 23474642e01fSmrg 23484642e01fSmrg if test -n "$export_symbols_regex"; then 23494642e01fSmrg $opt_dry_run || { 23504642e01fSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23514642e01fSmrg eval '$MV "$nlist"T "$nlist"' 23524642e01fSmrg } 23534642e01fSmrg fi 23544642e01fSmrg 23554642e01fSmrg # Prepare the list of exported symbols 23564642e01fSmrg if test -z "$export_symbols"; then 23574642e01fSmrg export_symbols="$output_objdir/$outputname.exp" 23584642e01fSmrg $opt_dry_run || { 23594642e01fSmrg $RM $export_symbols 23604642e01fSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23614642e01fSmrg case $host in 23624642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 23634642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23644642e01fSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23654642e01fSmrg ;; 23664642e01fSmrg esac 23674642e01fSmrg } 236805b261ecSmrg else 23694642e01fSmrg $opt_dry_run || { 23704642e01fSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23714642e01fSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23724642e01fSmrg eval '$MV "$nlist"T "$nlist"' 23734642e01fSmrg case $host in 23744642e01fSmrg *cygwin | *mingw* | *cegcc* ) 23754642e01fSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23764642e01fSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23774642e01fSmrg ;; 23784642e01fSmrg esac 23794642e01fSmrg } 238005b261ecSmrg fi 23814642e01fSmrg fi 238205b261ecSmrg 23834642e01fSmrg for dlprefile in $dlprefiles; do 23844642e01fSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 23854642e01fSmrg func_basename "$dlprefile" 23864642e01fSmrg name="$func_basename_result" 23874642e01fSmrg $opt_dry_run || { 23884642e01fSmrg eval '$ECHO ": $name " >> "$nlist"' 23894642e01fSmrg eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23904642e01fSmrg } 23914642e01fSmrg done 23924642e01fSmrg 23934642e01fSmrg $opt_dry_run || { 23944642e01fSmrg # Make sure we have at least an empty file. 23954642e01fSmrg test -f "$nlist" || : > "$nlist" 23964642e01fSmrg 23974642e01fSmrg if test -n "$exclude_expsyms"; then 23984642e01fSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23994642e01fSmrg $MV "$nlist"T "$nlist" 240005b261ecSmrg fi 24014642e01fSmrg 24024642e01fSmrg # Try sorting and uniquifying the output. 24034642e01fSmrg if $GREP -v "^: " < "$nlist" | 24044642e01fSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 24054642e01fSmrg sort -k 3 24064642e01fSmrg else 24074642e01fSmrg sort +2 24084642e01fSmrg fi | 24094642e01fSmrg uniq > "$nlist"S; then 24104642e01fSmrg : 241105b261ecSmrg else 24124642e01fSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 241305b261ecSmrg fi 241405b261ecSmrg 24154642e01fSmrg if test -f "$nlist"S; then 24164642e01fSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 241705b261ecSmrg else 24184642e01fSmrg $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 241905b261ecSmrg fi 242005b261ecSmrg 24214642e01fSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 242205b261ecSmrg 24234642e01fSmrg/* The mapping between symbol names and symbols. */ 24244642e01fSmrgtypedef struct { 24254642e01fSmrg const char *name; 24264642e01fSmrg void *address; 24274642e01fSmrg} lt_dlsymlist; 24284642e01fSmrg" 24294642e01fSmrg case $host in 24304642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 24314642e01fSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24324642e01fSmrg/* DATA imports from DLLs on WIN32 con't be const, because 24334642e01fSmrg runtime relocations are performed -- see ld's documentation 24344642e01fSmrg on pseudo-relocs. */" 24354642e01fSmrg lt_dlsym_const= ;; 24364642e01fSmrg *osf5*) 24374642e01fSmrg echo >> "$output_objdir/$my_dlsyms" "\ 24384642e01fSmrg/* This system does not cope well with relocations in const data */" 24394642e01fSmrg lt_dlsym_const= ;; 24404642e01fSmrg *) 24414642e01fSmrg lt_dlsym_const=const ;; 24424642e01fSmrg esac 244305b261ecSmrg 24444642e01fSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24454642e01fSmrgextern $lt_dlsym_const lt_dlsymlist 24464642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 24474642e01fSmrg$lt_dlsym_const lt_dlsymlist 24484642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 24494642e01fSmrg{\ 24504642e01fSmrg { \"$my_originator\", (void *) 0 }," 245105b261ecSmrg 24524642e01fSmrg case $need_lib_prefix in 24534642e01fSmrg no) 24544642e01fSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24554642e01fSmrg ;; 24564642e01fSmrg *) 24574642e01fSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24584642e01fSmrg ;; 24594642e01fSmrg esac 24604642e01fSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24614642e01fSmrg {0, (void *) 0} 24624642e01fSmrg}; 246305b261ecSmrg 24644642e01fSmrg/* This works around a problem in FreeBSD linker */ 24654642e01fSmrg#ifdef FREEBSD_WORKAROUND 24664642e01fSmrgstatic const void *lt_preloaded_setup() { 24674642e01fSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 24684642e01fSmrg} 24694642e01fSmrg#endif 24704642e01fSmrg 24714642e01fSmrg#ifdef __cplusplus 24724642e01fSmrg} 24734642e01fSmrg#endif\ 24744642e01fSmrg" 24754642e01fSmrg } # !$opt_dry_run 24764642e01fSmrg 24774642e01fSmrg pic_flag_for_symtable= 24784642e01fSmrg case "$compile_command " in 24794642e01fSmrg *" -static "*) ;; 24804642e01fSmrg *) 24814642e01fSmrg case $host in 24824642e01fSmrg # compiling the symbol table file with pic_flag works around 24834642e01fSmrg # a FreeBSD bug that causes programs to crash when -lm is 24844642e01fSmrg # linked before any other PIC object. But we must not use 24854642e01fSmrg # pic_flag when linking with -static. The problem exists in 24864642e01fSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24874642e01fSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24884642e01fSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24894642e01fSmrg *-*-hpux*) 24904642e01fSmrg pic_flag_for_symtable=" $pic_flag" ;; 24914642e01fSmrg *) 24924642e01fSmrg if test "X$my_pic_p" != Xno; then 24934642e01fSmrg pic_flag_for_symtable=" $pic_flag" 249405b261ecSmrg fi 24954642e01fSmrg ;; 24964642e01fSmrg esac 24974642e01fSmrg ;; 24984642e01fSmrg esac 24994642e01fSmrg symtab_cflags= 25004642e01fSmrg for arg in $LTCFLAGS; do 25014642e01fSmrg case $arg in 25024642e01fSmrg -pie | -fpie | -fPIE) ;; 25034642e01fSmrg *) symtab_cflags="$symtab_cflags $arg" ;; 25044642e01fSmrg esac 25054642e01fSmrg done 250605b261ecSmrg 25074642e01fSmrg # Now compile the dynamic symbol file. 25084642e01fSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 250905b261ecSmrg 25104642e01fSmrg # Clean up the generated files. 25114642e01fSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 251205b261ecSmrg 25134642e01fSmrg # Transform the symbol file into the correct name. 25144642e01fSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 25154642e01fSmrg case $host in 25164642e01fSmrg *cygwin* | *mingw* | *cegcc* ) 25174642e01fSmrg if test -f "$output_objdir/$my_outputname.def"; then 25184642e01fSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25194642e01fSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25204642e01fSmrg else 25214642e01fSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25224642e01fSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 252305b261ecSmrg fi 25244642e01fSmrg ;; 25254642e01fSmrg *) 25264642e01fSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25274642e01fSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25284642e01fSmrg ;; 25294642e01fSmrg esac 25304642e01fSmrg ;; 25314642e01fSmrg *) 25324642e01fSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 25334642e01fSmrg ;; 25344642e01fSmrg esac 25354642e01fSmrg else 25364642e01fSmrg # We keep going just in case the user didn't refer to 25374642e01fSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25384642e01fSmrg # really was required. 253905b261ecSmrg 25404642e01fSmrg # Nullify the symbol file. 25414642e01fSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25424642e01fSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25434642e01fSmrg fi 25444642e01fSmrg} 254505b261ecSmrg 25464642e01fSmrg# func_win32_libid arg 25474642e01fSmrg# return the library type of file 'arg' 25484642e01fSmrg# 25494642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs 25504642e01fSmrg# Has to be a shell function in order to 'eat' the argument 25514642e01fSmrg# that is supplied when $file_magic_command is called. 25524642e01fSmrgfunc_win32_libid () 25534642e01fSmrg{ 25544642e01fSmrg $opt_debug 25554642e01fSmrg win32_libid_type="unknown" 25564642e01fSmrg win32_fileres=`file -L $1 2>/dev/null` 25574642e01fSmrg case $win32_fileres in 25584642e01fSmrg *ar\ archive\ import\ library*) # definitely import 25594642e01fSmrg win32_libid_type="x86 archive import" 25604642e01fSmrg ;; 25614642e01fSmrg *ar\ archive*) # could be an import, or static 25624642e01fSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25634642e01fSmrg $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25644642e01fSmrg win32_nmres=`eval $NM -f posix -A $1 | 25654642e01fSmrg $SED -n -e ' 25664642e01fSmrg 1,100{ 25674642e01fSmrg / I /{ 25684642e01fSmrg s,.*,import, 25694642e01fSmrg p 25704642e01fSmrg q 25714642e01fSmrg } 25724642e01fSmrg }'` 25734642e01fSmrg case $win32_nmres in 25744642e01fSmrg import*) win32_libid_type="x86 archive import";; 25754642e01fSmrg *) win32_libid_type="x86 archive static";; 25764642e01fSmrg esac 25774642e01fSmrg fi 25784642e01fSmrg ;; 25794642e01fSmrg *DLL*) 25804642e01fSmrg win32_libid_type="x86 DLL" 25814642e01fSmrg ;; 25824642e01fSmrg *executable*) # but shell scripts are "executable" too... 25834642e01fSmrg case $win32_fileres in 25844642e01fSmrg *MS\ Windows\ PE\ Intel*) 25854642e01fSmrg win32_libid_type="x86 DLL" 25864642e01fSmrg ;; 25874642e01fSmrg esac 25884642e01fSmrg ;; 25894642e01fSmrg esac 25904642e01fSmrg $ECHO "$win32_libid_type" 25914642e01fSmrg} 259205b261ecSmrg 259305b261ecSmrg 259405b261ecSmrg 25954642e01fSmrg# func_extract_an_archive dir oldlib 25964642e01fSmrgfunc_extract_an_archive () 25974642e01fSmrg{ 25984642e01fSmrg $opt_debug 25994642e01fSmrg f_ex_an_ar_dir="$1"; shift 26004642e01fSmrg f_ex_an_ar_oldlib="$1" 26014642e01fSmrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26024642e01fSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26034642e01fSmrg : 26044642e01fSmrg else 26054642e01fSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26064642e01fSmrg fi 26074642e01fSmrg} 260805b261ecSmrg 260905b261ecSmrg 26104642e01fSmrg# func_extract_archives gentop oldlib ... 26114642e01fSmrgfunc_extract_archives () 26124642e01fSmrg{ 26134642e01fSmrg $opt_debug 26144642e01fSmrg my_gentop="$1"; shift 26154642e01fSmrg my_oldlibs=${1+"$@"} 26164642e01fSmrg my_oldobjs="" 26174642e01fSmrg my_xlib="" 26184642e01fSmrg my_xabs="" 26194642e01fSmrg my_xdir="" 262005b261ecSmrg 26214642e01fSmrg for my_xlib in $my_oldlibs; do 26224642e01fSmrg # Extract the objects. 26234642e01fSmrg case $my_xlib in 26244642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26254642e01fSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 26264642e01fSmrg esac 26274642e01fSmrg func_basename "$my_xlib" 26284642e01fSmrg my_xlib="$func_basename_result" 26294642e01fSmrg my_xlib_u=$my_xlib 26304642e01fSmrg while :; do 26314642e01fSmrg case " $extracted_archives " in 26324642e01fSmrg *" $my_xlib_u "*) 26334642e01fSmrg func_arith $extracted_serial + 1 26344642e01fSmrg extracted_serial=$func_arith_result 26354642e01fSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 26364642e01fSmrg *) break ;; 26374642e01fSmrg esac 26384642e01fSmrg done 26394642e01fSmrg extracted_archives="$extracted_archives $my_xlib_u" 26404642e01fSmrg my_xdir="$my_gentop/$my_xlib_u" 264105b261ecSmrg 26424642e01fSmrg func_mkdir_p "$my_xdir" 264305b261ecSmrg 26444642e01fSmrg case $host in 26454642e01fSmrg *-darwin*) 26464642e01fSmrg func_verbose "Extracting $my_xabs" 26474642e01fSmrg # Do not bother doing anything if just a dry run 26484642e01fSmrg $opt_dry_run || { 26494642e01fSmrg darwin_orig_dir=`pwd` 26504642e01fSmrg cd $my_xdir || exit $? 26514642e01fSmrg darwin_archive=$my_xabs 26524642e01fSmrg darwin_curdir=`pwd` 26534642e01fSmrg darwin_base_archive=`basename "$darwin_archive"` 26544642e01fSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26554642e01fSmrg if test -n "$darwin_arches"; then 26564642e01fSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26574642e01fSmrg darwin_arch= 26584642e01fSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26594642e01fSmrg for darwin_arch in $darwin_arches ; do 26604642e01fSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26614642e01fSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26624642e01fSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26634642e01fSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26644642e01fSmrg cd "$darwin_curdir" 26654642e01fSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26664642e01fSmrg done # $darwin_arches 26674642e01fSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26684642e01fSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26694642e01fSmrg darwin_file= 26704642e01fSmrg darwin_files= 26714642e01fSmrg for darwin_file in $darwin_filelist; do 26724642e01fSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26734642e01fSmrg $LIPO -create -output "$darwin_file" $darwin_files 26744642e01fSmrg done # $darwin_filelist 26754642e01fSmrg $RM -rf unfat-$$ 26764642e01fSmrg cd "$darwin_orig_dir" 267705b261ecSmrg else 26784642e01fSmrg cd $darwin_orig_dir 26794642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 26804642e01fSmrg fi # $darwin_arches 26814642e01fSmrg } # !$opt_dry_run 26824642e01fSmrg ;; 26834642e01fSmrg *) 26844642e01fSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 26854642e01fSmrg ;; 26864642e01fSmrg esac 26874642e01fSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26884642e01fSmrg done 268905b261ecSmrg 26904642e01fSmrg func_extract_archives_result="$my_oldobjs" 26914642e01fSmrg} 269205b261ecSmrg 269305b261ecSmrg 269405b261ecSmrg 26954642e01fSmrg# func_emit_wrapper_part1 [arg=no] 26964642e01fSmrg# 26974642e01fSmrg# Emit the first part of a libtool wrapper script on stdout. 26984642e01fSmrg# For more information, see the description associated with 26994642e01fSmrg# func_emit_wrapper(), below. 27004642e01fSmrgfunc_emit_wrapper_part1 () 27014642e01fSmrg{ 27024642e01fSmrg func_emit_wrapper_part1_arg1=no 27034642e01fSmrg if test -n "$1" ; then 27044642e01fSmrg func_emit_wrapper_part1_arg1=$1 270505b261ecSmrg fi 270605b261ecSmrg 27074642e01fSmrg $ECHO "\ 27084642e01fSmrg#! $SHELL 270905b261ecSmrg 27104642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname 27114642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27124642e01fSmrg# 27134642e01fSmrg# The $output program cannot be directly executed until all the libtool 27144642e01fSmrg# libraries that it depends on are installed. 27154642e01fSmrg# 27164642e01fSmrg# This wrapper script should never be moved out of the build directory. 27174642e01fSmrg# If it is, it will not operate correctly. 271805b261ecSmrg 27194642e01fSmrg# Sed substitution that helps us do robust quoting. It backslashifies 27204642e01fSmrg# metacharacters that are still active within double-quoted strings. 27214642e01fSmrgXsed='${SED} -e 1s/^X//' 27224642e01fSmrgsed_quote_subst='$sed_quote_subst' 272305b261ecSmrg 27244642e01fSmrg# Be Bourne compatible 27254642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27264642e01fSmrg emulate sh 27274642e01fSmrg NULLCMD=: 27284642e01fSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27294642e01fSmrg # is contrary to our usage. Disable this feature. 27304642e01fSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 27314642e01fSmrg setopt NO_GLOB_SUBST 27324642e01fSmrgelse 27334642e01fSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27344642e01fSmrgfi 27354642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 27364642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh 273705b261ecSmrg 27384642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 27394642e01fSmrg# if CDPATH is set. 27404642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 274105b261ecSmrg 27424642e01fSmrgrelink_command=\"$relink_command\" 274305b261ecSmrg 27444642e01fSmrg# This environment variable determines our operation mode. 27454642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 27464642e01fSmrg # install mode needs the following variables: 27474642e01fSmrg generated_by_libtool_version='$macro_version' 27484642e01fSmrg notinst_deplibs='$notinst_deplibs' 27494642e01fSmrgelse 27504642e01fSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 27514642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 27524642e01fSmrg ECHO=\"$qecho\" 27534642e01fSmrg file=\"\$0\" 27544642e01fSmrg # Make sure echo works. 27554642e01fSmrg if test \"X\$1\" = X--no-reexec; then 27564642e01fSmrg # Discard the --no-reexec flag, and continue. 27574642e01fSmrg shift 27584642e01fSmrg elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27594642e01fSmrg # Yippee, \$ECHO works! 27604642e01fSmrg : 27614642e01fSmrg else 27624642e01fSmrg # Restart under the correct shell, and then maybe \$ECHO will work. 27634642e01fSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27644642e01fSmrg fi 27654642e01fSmrg fi\ 27664642e01fSmrg" 27674642e01fSmrg $ECHO "\ 276805b261ecSmrg 27694642e01fSmrg # Find the directory that this script lives in. 27704642e01fSmrg thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27714642e01fSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 277205b261ecSmrg 27734642e01fSmrg # Follow symbolic links until we get to the real thisdir. 27744642e01fSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27754642e01fSmrg while test -n \"\$file\"; do 27764642e01fSmrg destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 277705b261ecSmrg 27784642e01fSmrg # If there was a directory component, then change thisdir. 27794642e01fSmrg if test \"x\$destdir\" != \"x\$file\"; then 27804642e01fSmrg case \"\$destdir\" in 27814642e01fSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27824642e01fSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 278305b261ecSmrg esac 27844642e01fSmrg fi 278505b261ecSmrg 27864642e01fSmrg file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27874642e01fSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27884642e01fSmrg done 27894642e01fSmrg" 27904642e01fSmrg} 27914642e01fSmrg# end: func_emit_wrapper_part1 27924642e01fSmrg 27934642e01fSmrg# func_emit_wrapper_part2 [arg=no] 27944642e01fSmrg# 27954642e01fSmrg# Emit the second part of a libtool wrapper script on stdout. 27964642e01fSmrg# For more information, see the description associated with 27974642e01fSmrg# func_emit_wrapper(), below. 27984642e01fSmrgfunc_emit_wrapper_part2 () 27994642e01fSmrg{ 28004642e01fSmrg func_emit_wrapper_part2_arg1=no 28014642e01fSmrg if test -n "$1" ; then 28024642e01fSmrg func_emit_wrapper_part2_arg1=$1 280305b261ecSmrg fi 280405b261ecSmrg 28054642e01fSmrg $ECHO "\ 280605b261ecSmrg 28074642e01fSmrg # Usually 'no', except on cygwin/mingw when embedded into 28084642e01fSmrg # the cwrapper. 28094642e01fSmrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28104642e01fSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28114642e01fSmrg # special case for '.' 28124642e01fSmrg if test \"\$thisdir\" = \".\"; then 28134642e01fSmrg thisdir=\`pwd\` 28144642e01fSmrg fi 28154642e01fSmrg # remove .libs from thisdir 28164642e01fSmrg case \"\$thisdir\" in 28174642e01fSmrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28184642e01fSmrg $objdir ) thisdir=. ;; 28194642e01fSmrg esac 28204642e01fSmrg fi 28214642e01fSmrg 28224642e01fSmrg # Try to get the absolute directory name. 28234642e01fSmrg absdir=\`cd \"\$thisdir\" && pwd\` 28244642e01fSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 28254642e01fSmrg" 28264642e01fSmrg 28274642e01fSmrg if test "$fast_install" = yes; then 28284642e01fSmrg $ECHO "\ 28294642e01fSmrg program=lt-'$outputname'$exeext 28304642e01fSmrg progdir=\"\$thisdir/$objdir\" 28314642e01fSmrg 28324642e01fSmrg if test ! -f \"\$progdir/\$program\" || 28334642e01fSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28344642e01fSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28354642e01fSmrg 28364642e01fSmrg file=\"\$\$-\$program\" 28374642e01fSmrg 28384642e01fSmrg if test ! -d \"\$progdir\"; then 28394642e01fSmrg $MKDIR \"\$progdir\" 28404642e01fSmrg else 28414642e01fSmrg $RM \"\$progdir/\$file\" 28424642e01fSmrg fi" 28434642e01fSmrg 28444642e01fSmrg $ECHO "\ 28454642e01fSmrg 28464642e01fSmrg # relink executable if necessary 28474642e01fSmrg if test -n \"\$relink_command\"; then 28484642e01fSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28494642e01fSmrg else 28504642e01fSmrg $ECHO \"\$relink_command_output\" >&2 28514642e01fSmrg $RM \"\$progdir/\$file\" 28524642e01fSmrg exit 1 285305b261ecSmrg fi 28544642e01fSmrg fi 285505b261ecSmrg 28564642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28574642e01fSmrg { $RM \"\$progdir/\$program\"; 28584642e01fSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28594642e01fSmrg $RM \"\$progdir/\$file\" 28604642e01fSmrg fi" 28614642e01fSmrg else 28624642e01fSmrg $ECHO "\ 28634642e01fSmrg program='$outputname' 28644642e01fSmrg progdir=\"\$thisdir/$objdir\" 28654642e01fSmrg" 286605b261ecSmrg fi 286705b261ecSmrg 28684642e01fSmrg $ECHO "\ 286905b261ecSmrg 28704642e01fSmrg if test -f \"\$progdir/\$program\"; then" 287105b261ecSmrg 28724642e01fSmrg # Export our shlibpath_var if we have one. 28734642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28744642e01fSmrg $ECHO "\ 28754642e01fSmrg # Add our own library path to $shlibpath_var 28764642e01fSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 287705b261ecSmrg 28784642e01fSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 28794642e01fSmrg # The second colon is a workaround for a bug in BeOS R4 sed 28804642e01fSmrg $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28814642e01fSmrg 28824642e01fSmrg export $shlibpath_var 28834642e01fSmrg" 288405b261ecSmrg fi 288505b261ecSmrg 28864642e01fSmrg # fixup the dll searchpath if we need to. 28874642e01fSmrg if test -n "$dllsearchpath"; then 28884642e01fSmrg $ECHO "\ 28894642e01fSmrg # Add the dll search path components to the executable PATH 28904642e01fSmrg PATH=$dllsearchpath:\$PATH 28914642e01fSmrg" 28924642e01fSmrg fi 289305b261ecSmrg 28944642e01fSmrg $ECHO "\ 28954642e01fSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 28964642e01fSmrg # Run the actual program with our arguments. 28974642e01fSmrg" 28984642e01fSmrg case $host in 28994642e01fSmrg # Backslashes separate directories on plain windows 29004642e01fSmrg *-*-mingw | *-*-os2* | *-cegcc*) 29014642e01fSmrg $ECHO "\ 29024642e01fSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29034642e01fSmrg" 290405b261ecSmrg ;; 290505b261ecSmrg 290605b261ecSmrg *) 29074642e01fSmrg $ECHO "\ 29084642e01fSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 29094642e01fSmrg" 291005b261ecSmrg ;; 291105b261ecSmrg esac 29124642e01fSmrg $ECHO "\ 29134642e01fSmrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29144642e01fSmrg exit 1 29154642e01fSmrg fi 29164642e01fSmrg else 29174642e01fSmrg # The program doesn't exist. 29184642e01fSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29194642e01fSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29204642e01fSmrg $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29214642e01fSmrg exit 1 29224642e01fSmrg fi 29234642e01fSmrgfi\ 29244642e01fSmrg" 29254642e01fSmrg} 29264642e01fSmrg# end: func_emit_wrapper_part2 292705b261ecSmrg 292805b261ecSmrg 29294642e01fSmrg# func_emit_wrapper [arg=no] 29304642e01fSmrg# 29314642e01fSmrg# Emit a libtool wrapper script on stdout. 29324642e01fSmrg# Don't directly open a file because we may want to 29334642e01fSmrg# incorporate the script contents within a cygwin/mingw 29344642e01fSmrg# wrapper executable. Must ONLY be called from within 29354642e01fSmrg# func_mode_link because it depends on a number of variables 29364642e01fSmrg# set therein. 29374642e01fSmrg# 29384642e01fSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29394642e01fSmrg# variable will take. If 'yes', then the emitted script 29404642e01fSmrg# will assume that the directory in which it is stored is 29414642e01fSmrg# the $objdir directory. This is a cygwin/mingw-specific 29424642e01fSmrg# behavior. 29434642e01fSmrgfunc_emit_wrapper () 29444642e01fSmrg{ 29454642e01fSmrg func_emit_wrapper_arg1=no 29464642e01fSmrg if test -n "$1" ; then 29474642e01fSmrg func_emit_wrapper_arg1=$1 294805b261ecSmrg fi 294905b261ecSmrg 29504642e01fSmrg # split this up so that func_emit_cwrapperexe_src 29514642e01fSmrg # can call each part independently. 29524642e01fSmrg func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29534642e01fSmrg func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29544642e01fSmrg} 295505b261ecSmrg 295605b261ecSmrg 29574642e01fSmrg# func_to_host_path arg 29584642e01fSmrg# 29594642e01fSmrg# Convert paths to host format when used with build tools. 29604642e01fSmrg# Intended for use with "native" mingw (where libtool itself 29614642e01fSmrg# is running under the msys shell), or in the following cross- 29624642e01fSmrg# build environments: 29634642e01fSmrg# $build $host 29644642e01fSmrg# mingw (msys) mingw [e.g. native] 29654642e01fSmrg# cygwin mingw 29664642e01fSmrg# *nix + wine mingw 29674642e01fSmrg# where wine is equipped with the `winepath' executable. 29684642e01fSmrg# In the native mingw case, the (msys) shell automatically 29694642e01fSmrg# converts paths for any non-msys applications it launches, 29704642e01fSmrg# but that facility isn't available from inside the cwrapper. 29714642e01fSmrg# Similar accommodations are necessary for $host mingw and 29724642e01fSmrg# $build cygwin. Calling this function does no harm for other 29734642e01fSmrg# $host/$build combinations not listed above. 29744642e01fSmrg# 29754642e01fSmrg# ARG is the path (on $build) that should be converted to 29764642e01fSmrg# the proper representation for $host. The result is stored 29774642e01fSmrg# in $func_to_host_path_result. 29784642e01fSmrgfunc_to_host_path () 29794642e01fSmrg{ 29804642e01fSmrg func_to_host_path_result="$1" 29814642e01fSmrg if test -n "$1" ; then 29824642e01fSmrg case $host in 29834642e01fSmrg *mingw* ) 29844642e01fSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29854642e01fSmrg case $build in 29864642e01fSmrg *mingw* ) # actually, msys 29874642e01fSmrg # awkward: cmd appends spaces to result 29884642e01fSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29894642e01fSmrg func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29904642e01fSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29914642e01fSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29924642e01fSmrg $SED -e "$lt_sed_naive_backslashify"` 29934642e01fSmrg ;; 29944642e01fSmrg *cygwin* ) 29954642e01fSmrg func_to_host_path_tmp1=`cygpath -w "$1"` 29964642e01fSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29974642e01fSmrg $SED -e "$lt_sed_naive_backslashify"` 29984642e01fSmrg ;; 29994642e01fSmrg * ) 30004642e01fSmrg # Unfortunately, winepath does not exit with a non-zero 30014642e01fSmrg # error code, so we are forced to check the contents of 30024642e01fSmrg # stdout. On the other hand, if the command is not 30034642e01fSmrg # found, the shell will set an exit code of 127 and print 30044642e01fSmrg # *an error message* to stdout. So we must check for both 30054642e01fSmrg # error code of zero AND non-empty stdout, which explains 30064642e01fSmrg # the odd construction: 30074642e01fSmrg func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30084642e01fSmrg if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30094642e01fSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30104642e01fSmrg $SED -e "$lt_sed_naive_backslashify"` 30114642e01fSmrg else 30124642e01fSmrg # Allow warning below. 30134642e01fSmrg func_to_host_path_result="" 30144642e01fSmrg fi 30154642e01fSmrg ;; 30164642e01fSmrg esac 30174642e01fSmrg if test -z "$func_to_host_path_result" ; then 30184642e01fSmrg func_error "Could not determine host path corresponding to" 30194642e01fSmrg func_error " '$1'" 30204642e01fSmrg func_error "Continuing, but uninstalled executables may not work." 30214642e01fSmrg # Fallback: 30224642e01fSmrg func_to_host_path_result="$1" 30234642e01fSmrg fi 30244642e01fSmrg ;; 30254642e01fSmrg esac 30264642e01fSmrg fi 30274642e01fSmrg} 30284642e01fSmrg# end: func_to_host_path 302905b261ecSmrg 30304642e01fSmrg# func_to_host_pathlist arg 30314642e01fSmrg# 30324642e01fSmrg# Convert pathlists to host format when used with build tools. 30334642e01fSmrg# See func_to_host_path(), above. This function supports the 30344642e01fSmrg# following $build/$host combinations (but does no harm for 30354642e01fSmrg# combinations not listed here): 30364642e01fSmrg# $build $host 30374642e01fSmrg# mingw (msys) mingw [e.g. native] 30384642e01fSmrg# cygwin mingw 30394642e01fSmrg# *nix + wine mingw 30404642e01fSmrg# 30414642e01fSmrg# Path separators are also converted from $build format to 30424642e01fSmrg# $host format. If ARG begins or ends with a path separator 30434642e01fSmrg# character, it is preserved (but converted to $host format) 30444642e01fSmrg# on output. 30454642e01fSmrg# 30464642e01fSmrg# ARG is a pathlist (on $build) that should be converted to 30474642e01fSmrg# the proper representation on $host. The result is stored 30484642e01fSmrg# in $func_to_host_pathlist_result. 30494642e01fSmrgfunc_to_host_pathlist () 30504642e01fSmrg{ 30514642e01fSmrg func_to_host_pathlist_result="$1" 30524642e01fSmrg if test -n "$1" ; then 30534642e01fSmrg case $host in 30544642e01fSmrg *mingw* ) 30554642e01fSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30564642e01fSmrg # Remove leading and trailing path separator characters from 30574642e01fSmrg # ARG. msys behavior is inconsistent here, cygpath turns them 30584642e01fSmrg # into '.;' and ';.', and winepath ignores them completely. 30594642e01fSmrg func_to_host_pathlist_tmp2="$1" 30604642e01fSmrg # Once set for this call, this variable should not be 30614642e01fSmrg # reassigned. It is used in tha fallback case. 30624642e01fSmrg func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30634642e01fSmrg $SED -e 's|^:*||' -e 's|:*$||'` 30644642e01fSmrg case $build in 30654642e01fSmrg *mingw* ) # Actually, msys. 30664642e01fSmrg # Awkward: cmd appends spaces to result. 30674642e01fSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30684642e01fSmrg func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30694642e01fSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30704642e01fSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30714642e01fSmrg $SED -e "$lt_sed_naive_backslashify"` 30724642e01fSmrg ;; 30734642e01fSmrg *cygwin* ) 30744642e01fSmrg func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30754642e01fSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30764642e01fSmrg $SED -e "$lt_sed_naive_backslashify"` 30774642e01fSmrg ;; 30784642e01fSmrg * ) 30794642e01fSmrg # unfortunately, winepath doesn't convert pathlists 30804642e01fSmrg func_to_host_pathlist_result="" 30814642e01fSmrg func_to_host_pathlist_oldIFS=$IFS 30824642e01fSmrg IFS=: 30834642e01fSmrg for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30844642e01fSmrg IFS=$func_to_host_pathlist_oldIFS 30854642e01fSmrg if test -n "$func_to_host_pathlist_f" ; then 30864642e01fSmrg func_to_host_path "$func_to_host_pathlist_f" 30874642e01fSmrg if test -n "$func_to_host_path_result" ; then 30884642e01fSmrg if test -z "$func_to_host_pathlist_result" ; then 30894642e01fSmrg func_to_host_pathlist_result="$func_to_host_path_result" 30904642e01fSmrg else 30914642e01fSmrg func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30924642e01fSmrg fi 30934642e01fSmrg fi 30944642e01fSmrg fi 30954642e01fSmrg IFS=: 30964642e01fSmrg done 30974642e01fSmrg IFS=$func_to_host_pathlist_oldIFS 30984642e01fSmrg ;; 30994642e01fSmrg esac 31004642e01fSmrg if test -z "$func_to_host_pathlist_result" ; then 31014642e01fSmrg func_error "Could not determine the host path(s) corresponding to" 31024642e01fSmrg func_error " '$1'" 31034642e01fSmrg func_error "Continuing, but uninstalled executables may not work." 31044642e01fSmrg # Fallback. This may break if $1 contains DOS-style drive 31054642e01fSmrg # specifications. The fix is not to complicate the expression 31064642e01fSmrg # below, but for the user to provide a working wine installation 31074642e01fSmrg # with winepath so that path translation in the cross-to-mingw 31084642e01fSmrg # case works properly. 31094642e01fSmrg lt_replace_pathsep_nix_to_dos="s|:|;|g" 31104642e01fSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31114642e01fSmrg $SED -e "$lt_replace_pathsep_nix_to_dos"` 31124642e01fSmrg fi 31134642e01fSmrg # Now, add the leading and trailing path separators back 31144642e01fSmrg case "$1" in 31154642e01fSmrg :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31164642e01fSmrg ;; 31174642e01fSmrg esac 31184642e01fSmrg case "$1" in 31194642e01fSmrg *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31204642e01fSmrg ;; 31214642e01fSmrg esac 31224642e01fSmrg ;; 31234642e01fSmrg esac 31244642e01fSmrg fi 31254642e01fSmrg} 31264642e01fSmrg# end: func_to_host_pathlist 312705b261ecSmrg 31284642e01fSmrg# func_emit_cwrapperexe_src 31294642e01fSmrg# emit the source code for a wrapper executable on stdout 31304642e01fSmrg# Must ONLY be called from within func_mode_link because 31314642e01fSmrg# it depends on a number of variable set therein. 31324642e01fSmrgfunc_emit_cwrapperexe_src () 31334642e01fSmrg{ 31344642e01fSmrg cat <<EOF 313505b261ecSmrg 31364642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31374642e01fSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 313805b261ecSmrg 31394642e01fSmrg The $output program cannot be directly executed until all the libtool 31404642e01fSmrg libraries that it depends on are installed. 314105b261ecSmrg 31424642e01fSmrg This wrapper executable should never be moved out of the build directory. 31434642e01fSmrg If it is, it will not operate correctly. 314405b261ecSmrg 31454642e01fSmrg Currently, it simply execs the wrapper *script* "$SHELL $output", 31464642e01fSmrg but could eventually absorb all of the scripts functionality and 31474642e01fSmrg exec $objdir/$outputname directly. 31484642e01fSmrg*/ 31494642e01fSmrgEOF 31504642e01fSmrg cat <<"EOF" 31514642e01fSmrg#include <stdio.h> 31524642e01fSmrg#include <stdlib.h> 31534642e01fSmrg#ifdef _MSC_VER 31544642e01fSmrg# include <direct.h> 31554642e01fSmrg# include <process.h> 31564642e01fSmrg# include <io.h> 31574642e01fSmrg# define setmode _setmode 31584642e01fSmrg#else 31594642e01fSmrg# include <unistd.h> 31604642e01fSmrg# include <stdint.h> 31614642e01fSmrg# ifdef __CYGWIN__ 31624642e01fSmrg# include <io.h> 31634642e01fSmrg# define HAVE_SETENV 31644642e01fSmrg# ifdef __STRICT_ANSI__ 31654642e01fSmrgchar *realpath (const char *, char *); 31664642e01fSmrgint putenv (char *); 31674642e01fSmrgint setenv (const char *, const char *, int); 31684642e01fSmrg# endif 31694642e01fSmrg# endif 31704642e01fSmrg#endif 31714642e01fSmrg#include <malloc.h> 31724642e01fSmrg#include <stdarg.h> 31734642e01fSmrg#include <assert.h> 31744642e01fSmrg#include <string.h> 31754642e01fSmrg#include <ctype.h> 31764642e01fSmrg#include <errno.h> 31774642e01fSmrg#include <fcntl.h> 31784642e01fSmrg#include <sys/stat.h> 317905b261ecSmrg 31804642e01fSmrg#if defined(PATH_MAX) 31814642e01fSmrg# define LT_PATHMAX PATH_MAX 31824642e01fSmrg#elif defined(MAXPATHLEN) 31834642e01fSmrg# define LT_PATHMAX MAXPATHLEN 31844642e01fSmrg#else 31854642e01fSmrg# define LT_PATHMAX 1024 31864642e01fSmrg#endif 318705b261ecSmrg 31884642e01fSmrg#ifndef S_IXOTH 31894642e01fSmrg# define S_IXOTH 0 31904642e01fSmrg#endif 31914642e01fSmrg#ifndef S_IXGRP 31924642e01fSmrg# define S_IXGRP 0 31934642e01fSmrg#endif 319405b261ecSmrg 31954642e01fSmrg#ifdef _MSC_VER 31964642e01fSmrg# define S_IXUSR _S_IEXEC 31974642e01fSmrg# define stat _stat 31984642e01fSmrg# ifndef _INTPTR_T_DEFINED 31994642e01fSmrg# define intptr_t int 32004642e01fSmrg# endif 32014642e01fSmrg#endif 320205b261ecSmrg 32034642e01fSmrg#ifndef DIR_SEPARATOR 32044642e01fSmrg# define DIR_SEPARATOR '/' 32054642e01fSmrg# define PATH_SEPARATOR ':' 32064642e01fSmrg#endif 320705b261ecSmrg 32084642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32094642e01fSmrg defined (__OS2__) 32104642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 32114642e01fSmrg# define FOPEN_WB "wb" 32124642e01fSmrg# ifndef DIR_SEPARATOR_2 32134642e01fSmrg# define DIR_SEPARATOR_2 '\\' 32144642e01fSmrg# endif 32154642e01fSmrg# ifndef PATH_SEPARATOR_2 32164642e01fSmrg# define PATH_SEPARATOR_2 ';' 32174642e01fSmrg# endif 32184642e01fSmrg#endif 321905b261ecSmrg 32204642e01fSmrg#ifndef DIR_SEPARATOR_2 32214642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32224642e01fSmrg#else /* DIR_SEPARATOR_2 */ 32234642e01fSmrg# define IS_DIR_SEPARATOR(ch) \ 32244642e01fSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32254642e01fSmrg#endif /* DIR_SEPARATOR_2 */ 322605b261ecSmrg 32274642e01fSmrg#ifndef PATH_SEPARATOR_2 32284642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32294642e01fSmrg#else /* PATH_SEPARATOR_2 */ 32304642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32314642e01fSmrg#endif /* PATH_SEPARATOR_2 */ 323205b261ecSmrg 32334642e01fSmrg#ifdef __CYGWIN__ 32344642e01fSmrg# define FOPEN_WB "wb" 32354642e01fSmrg#endif 323605b261ecSmrg 32374642e01fSmrg#ifndef FOPEN_WB 32384642e01fSmrg# define FOPEN_WB "w" 32394642e01fSmrg#endif 32404642e01fSmrg#ifndef _O_BINARY 32414642e01fSmrg# define _O_BINARY 0 32424642e01fSmrg#endif 324305b261ecSmrg 32444642e01fSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32454642e01fSmrg#define XFREE(stale) do { \ 32464642e01fSmrg if (stale) { free ((void *) stale); stale = 0; } \ 32474642e01fSmrg} while (0) 324805b261ecSmrg 32494642e01fSmrg#undef LTWRAPPER_DEBUGPRINTF 32504642e01fSmrg#if defined DEBUGWRAPPER 32514642e01fSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32524642e01fSmrgstatic void 32534642e01fSmrgltwrapper_debugprintf (const char *fmt, ...) 32544642e01fSmrg{ 32554642e01fSmrg va_list args; 32564642e01fSmrg va_start (args, fmt); 32574642e01fSmrg (void) vfprintf (stderr, fmt, args); 32584642e01fSmrg va_end (args); 32594642e01fSmrg} 32604642e01fSmrg#else 32614642e01fSmrg# define LTWRAPPER_DEBUGPRINTF(args) 32624642e01fSmrg#endif 326305b261ecSmrg 32644642e01fSmrgconst char *program_name = NULL; 326505b261ecSmrg 32664642e01fSmrgvoid *xmalloc (size_t num); 32674642e01fSmrgchar *xstrdup (const char *string); 32684642e01fSmrgconst char *base_name (const char *name); 32694642e01fSmrgchar *find_executable (const char *wrapper); 32704642e01fSmrgchar *chase_symlinks (const char *pathspec); 32714642e01fSmrgint make_executable (const char *path); 32724642e01fSmrgint check_executable (const char *path); 32734642e01fSmrgchar *strendzap (char *str, const char *pat); 32744642e01fSmrgvoid lt_fatal (const char *message, ...); 32754642e01fSmrgvoid lt_setenv (const char *name, const char *value); 32764642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 32774642e01fSmrgvoid lt_opt_process_env_set (const char *arg); 32784642e01fSmrgvoid lt_opt_process_env_prepend (const char *arg); 32794642e01fSmrgvoid lt_opt_process_env_append (const char *arg); 32804642e01fSmrgint lt_split_name_value (const char *arg, char** name, char** value); 32814642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value); 32824642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value); 32834642e01fSmrg 32844642e01fSmrgstatic const char *script_text_part1 = 32854642e01fSmrgEOF 328605b261ecSmrg 32874642e01fSmrg func_emit_wrapper_part1 yes | 32884642e01fSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 32894642e01fSmrg -e 's/^/ "/' -e 's/$/\\n"/' 32904642e01fSmrg echo ";" 32914642e01fSmrg cat <<EOF 329205b261ecSmrg 32934642e01fSmrgstatic const char *script_text_part2 = 32944642e01fSmrgEOF 32954642e01fSmrg func_emit_wrapper_part2 yes | 32964642e01fSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 32974642e01fSmrg -e 's/^/ "/' -e 's/$/\\n"/' 32984642e01fSmrg echo ";" 32994642e01fSmrg 33004642e01fSmrg cat <<EOF 33014642e01fSmrgconst char * MAGIC_EXE = "$magic_exe"; 33024642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 33034642e01fSmrgEOF 330405b261ecSmrg 33054642e01fSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33064642e01fSmrg func_to_host_pathlist "$temp_rpath" 33074642e01fSmrg cat <<EOF 33084642e01fSmrgconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33094642e01fSmrgEOF 33104642e01fSmrg else 33114642e01fSmrg cat <<"EOF" 33124642e01fSmrgconst char * LIB_PATH_VALUE = ""; 33134642e01fSmrgEOF 331405b261ecSmrg fi 331505b261ecSmrg 33164642e01fSmrg if test -n "$dllsearchpath"; then 33174642e01fSmrg func_to_host_pathlist "$dllsearchpath:" 33184642e01fSmrg cat <<EOF 33194642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH"; 33204642e01fSmrgconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 332105b261ecSmrgEOF 332205b261ecSmrg else 33234642e01fSmrg cat <<"EOF" 33244642e01fSmrgconst char * EXE_PATH_VARNAME = ""; 33254642e01fSmrgconst char * EXE_PATH_VALUE = ""; 33264642e01fSmrgEOF 332705b261ecSmrg fi 33284642e01fSmrg 33294642e01fSmrg if test "$fast_install" = yes; then 33304642e01fSmrg cat <<EOF 33314642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33324642e01fSmrgEOF 333305b261ecSmrg else 33344642e01fSmrg cat <<EOF 33354642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33364642e01fSmrgEOF 333705b261ecSmrg fi 333805b261ecSmrg 333905b261ecSmrg 33404642e01fSmrg cat <<"EOF" 334105b261ecSmrg 33424642e01fSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 33434642e01fSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 334405b261ecSmrg 33454642e01fSmrgstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33464642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 334705b261ecSmrg 33484642e01fSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 334905b261ecSmrg 33504642e01fSmrgstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33514642e01fSmrgstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33524642e01fSmrg /* argument is putenv-style "foo=bar", value of foo is set to bar */ 335305b261ecSmrg 33544642e01fSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33554642e01fSmrgstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33564642e01fSmrg /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 335705b261ecSmrg 33584642e01fSmrgstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33594642e01fSmrgstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33604642e01fSmrg /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 336105b261ecSmrg 33624642e01fSmrgint 33634642e01fSmrgmain (int argc, char *argv[]) 33644642e01fSmrg{ 33654642e01fSmrg char **newargz; 33664642e01fSmrg int newargc; 33674642e01fSmrg char *tmp_pathspec; 33684642e01fSmrg char *actual_cwrapper_path; 33694642e01fSmrg char *actual_cwrapper_name; 33704642e01fSmrg char *target_name; 33714642e01fSmrg char *lt_argv_zero; 33724642e01fSmrg intptr_t rval = 127; 337305b261ecSmrg 33744642e01fSmrg int i; 337505b261ecSmrg 33764642e01fSmrg program_name = (char *) xstrdup (base_name (argv[0])); 33774642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33784642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 337905b261ecSmrg 33804642e01fSmrg /* very simple arg parsing; don't want to rely on getopt */ 33814642e01fSmrg for (i = 1; i < argc; i++) 33824642e01fSmrg { 33834642e01fSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 33844642e01fSmrg { 33854642e01fSmrgEOF 33864642e01fSmrg case "$host" in 33874642e01fSmrg *mingw* | *cygwin* ) 33884642e01fSmrg # make stdout use "unix" line endings 33894642e01fSmrg echo " setmode(1,_O_BINARY);" 33904642e01fSmrg ;; 33914642e01fSmrg esac 339205b261ecSmrg 33934642e01fSmrg cat <<"EOF" 33944642e01fSmrg printf ("%s", script_text_part1); 33954642e01fSmrg printf ("%s", script_text_part2); 33964642e01fSmrg return 0; 33974642e01fSmrg } 33984642e01fSmrg } 339905b261ecSmrg 34004642e01fSmrg newargz = XMALLOC (char *, argc + 1); 34014642e01fSmrg tmp_pathspec = find_executable (argv[0]); 34024642e01fSmrg if (tmp_pathspec == NULL) 34034642e01fSmrg lt_fatal ("Couldn't find %s", argv[0]); 34044642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34054642e01fSmrg tmp_pathspec)); 34064642e01fSmrg 34074642e01fSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34084642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34094642e01fSmrg actual_cwrapper_path)); 34104642e01fSmrg XFREE (tmp_pathspec); 34114642e01fSmrg 34124642e01fSmrg actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34134642e01fSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 34144642e01fSmrg 34154642e01fSmrg /* wrapper name transforms */ 34164642e01fSmrg strendzap (actual_cwrapper_name, ".exe"); 34174642e01fSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34184642e01fSmrg XFREE (actual_cwrapper_name); 34194642e01fSmrg actual_cwrapper_name = tmp_pathspec; 34204642e01fSmrg tmp_pathspec = 0; 34214642e01fSmrg 34224642e01fSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 34234642e01fSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34244642e01fSmrg strendzap (target_name, ".exe"); 34254642e01fSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34264642e01fSmrg XFREE (target_name); 34274642e01fSmrg target_name = tmp_pathspec; 34284642e01fSmrg tmp_pathspec = 0; 34294642e01fSmrg 34304642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34314642e01fSmrg target_name)); 34324642e01fSmrgEOF 343305b261ecSmrg 34344642e01fSmrg cat <<EOF 34354642e01fSmrg newargz[0] = 34364642e01fSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 34374642e01fSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34384642e01fSmrg strcpy (newargz[0], actual_cwrapper_path); 34394642e01fSmrg strcat (newargz[0], "$objdir"); 34404642e01fSmrg strcat (newargz[0], "/"); 34414642e01fSmrgEOF 344205b261ecSmrg 34434642e01fSmrg cat <<"EOF" 34444642e01fSmrg /* stop here, and copy so we don't have to do this twice */ 34454642e01fSmrg tmp_pathspec = xstrdup (newargz[0]); 344605b261ecSmrg 34474642e01fSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34484642e01fSmrg strcat (newargz[0], actual_cwrapper_name); 344905b261ecSmrg 34504642e01fSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 34514642e01fSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34524642e01fSmrg XFREE (tmp_pathspec); 34534642e01fSmrg tmp_pathspec = NULL; 34544642e01fSmrgEOF 345505b261ecSmrg 34564642e01fSmrg case $host_os in 34574642e01fSmrg mingw*) 34584642e01fSmrg cat <<"EOF" 34594642e01fSmrg { 34604642e01fSmrg char* p; 34614642e01fSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 34624642e01fSmrg { 34634642e01fSmrg *p = '/'; 34644642e01fSmrg } 34654642e01fSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34664642e01fSmrg { 34674642e01fSmrg *p = '/'; 34684642e01fSmrg } 34694642e01fSmrg } 34704642e01fSmrgEOF 34714642e01fSmrg ;; 34724642e01fSmrg esac 347305b261ecSmrg 34744642e01fSmrg cat <<"EOF" 34754642e01fSmrg XFREE (target_name); 34764642e01fSmrg XFREE (actual_cwrapper_path); 34774642e01fSmrg XFREE (actual_cwrapper_name); 347805b261ecSmrg 34794642e01fSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34804642e01fSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34814642e01fSmrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34824642e01fSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 348305b261ecSmrg 34844642e01fSmrg newargc=0; 34854642e01fSmrg for (i = 1; i < argc; i++) 34864642e01fSmrg { 34874642e01fSmrg if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34884642e01fSmrg { 34894642e01fSmrg if (argv[i][env_set_opt_len] == '=') 34904642e01fSmrg { 34914642e01fSmrg const char *p = argv[i] + env_set_opt_len + 1; 34924642e01fSmrg lt_opt_process_env_set (p); 34934642e01fSmrg } 34944642e01fSmrg else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34954642e01fSmrg { 34964642e01fSmrg lt_opt_process_env_set (argv[++i]); /* don't copy */ 34974642e01fSmrg } 34984642e01fSmrg else 34994642e01fSmrg lt_fatal ("%s missing required argument", env_set_opt); 35004642e01fSmrg continue; 35014642e01fSmrg } 35024642e01fSmrg if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35034642e01fSmrg { 35044642e01fSmrg if (argv[i][env_prepend_opt_len] == '=') 35054642e01fSmrg { 35064642e01fSmrg const char *p = argv[i] + env_prepend_opt_len + 1; 35074642e01fSmrg lt_opt_process_env_prepend (p); 35084642e01fSmrg } 35094642e01fSmrg else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35104642e01fSmrg { 35114642e01fSmrg lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35124642e01fSmrg } 35134642e01fSmrg else 35144642e01fSmrg lt_fatal ("%s missing required argument", env_prepend_opt); 35154642e01fSmrg continue; 35164642e01fSmrg } 35174642e01fSmrg if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35184642e01fSmrg { 35194642e01fSmrg if (argv[i][env_append_opt_len] == '=') 35204642e01fSmrg { 35214642e01fSmrg const char *p = argv[i] + env_append_opt_len + 1; 35224642e01fSmrg lt_opt_process_env_append (p); 35234642e01fSmrg } 35244642e01fSmrg else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35254642e01fSmrg { 35264642e01fSmrg lt_opt_process_env_append (argv[++i]); /* don't copy */ 35274642e01fSmrg } 35284642e01fSmrg else 35294642e01fSmrg lt_fatal ("%s missing required argument", env_append_opt); 35304642e01fSmrg continue; 35314642e01fSmrg } 35324642e01fSmrg if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35334642e01fSmrg { 35344642e01fSmrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35354642e01fSmrg namespace, but it is not one of the ones we know about and 35364642e01fSmrg have already dealt with, above (inluding dump-script), then 35374642e01fSmrg report an error. Otherwise, targets might begin to believe 35384642e01fSmrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35394642e01fSmrg namespace. The first time any user complains about this, we'll 35404642e01fSmrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35414642e01fSmrg or a configure.ac-settable value. 35424642e01fSmrg */ 35434642e01fSmrg lt_fatal ("Unrecognized option in %s namespace: '%s'", 35444642e01fSmrg ltwrapper_option_prefix, argv[i]); 35454642e01fSmrg } 35464642e01fSmrg /* otherwise ... */ 35474642e01fSmrg newargz[++newargc] = xstrdup (argv[i]); 35484642e01fSmrg } 35494642e01fSmrg newargz[++newargc] = NULL; 355005b261ecSmrg 35514642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35524642e01fSmrg for (i = 0; i < newargc; i++) 35534642e01fSmrg { 35544642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35554642e01fSmrg } 355605b261ecSmrg 35574642e01fSmrgEOF 355805b261ecSmrg 35594642e01fSmrg case $host_os in 35604642e01fSmrg mingw*) 35614642e01fSmrg cat <<"EOF" 35624642e01fSmrg /* execv doesn't actually work on mingw as expected on unix */ 35634642e01fSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35644642e01fSmrg if (rval == -1) 35654642e01fSmrg { 35664642e01fSmrg /* failed to start process */ 35674642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35684642e01fSmrg return 127; 35694642e01fSmrg } 35704642e01fSmrg return rval; 35714642e01fSmrgEOF 35724642e01fSmrg ;; 35734642e01fSmrg *) 35744642e01fSmrg cat <<"EOF" 35754642e01fSmrg execv (lt_argv_zero, newargz); 35764642e01fSmrg return rval; /* =127, but avoids unused variable warning */ 35774642e01fSmrgEOF 35784642e01fSmrg ;; 35794642e01fSmrg esac 358005b261ecSmrg 35814642e01fSmrg cat <<"EOF" 35824642e01fSmrg} 358305b261ecSmrg 35844642e01fSmrgvoid * 35854642e01fSmrgxmalloc (size_t num) 35864642e01fSmrg{ 35874642e01fSmrg void *p = (void *) malloc (num); 35884642e01fSmrg if (!p) 35894642e01fSmrg lt_fatal ("Memory exhausted"); 359005b261ecSmrg 35914642e01fSmrg return p; 35924642e01fSmrg} 359305b261ecSmrg 35944642e01fSmrgchar * 35954642e01fSmrgxstrdup (const char *string) 35964642e01fSmrg{ 35974642e01fSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35984642e01fSmrg string) : NULL; 35994642e01fSmrg} 360005b261ecSmrg 36014642e01fSmrgconst char * 36024642e01fSmrgbase_name (const char *name) 36034642e01fSmrg{ 36044642e01fSmrg const char *base; 360505b261ecSmrg 36064642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36074642e01fSmrg /* Skip over the disk name in MSDOS pathnames. */ 36084642e01fSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36094642e01fSmrg name += 2; 36104642e01fSmrg#endif 361105b261ecSmrg 36124642e01fSmrg for (base = name; *name; name++) 36134642e01fSmrg if (IS_DIR_SEPARATOR (*name)) 36144642e01fSmrg base = name + 1; 36154642e01fSmrg return base; 36164642e01fSmrg} 361705b261ecSmrg 36184642e01fSmrgint 36194642e01fSmrgcheck_executable (const char *path) 36204642e01fSmrg{ 36214642e01fSmrg struct stat st; 362205b261ecSmrg 36234642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36244642e01fSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 36254642e01fSmrg if ((!path) || (!*path)) 36264642e01fSmrg return 0; 362705b261ecSmrg 36284642e01fSmrg if ((stat (path, &st) >= 0) 36294642e01fSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36304642e01fSmrg return 1; 36314642e01fSmrg else 36324642e01fSmrg return 0; 36334642e01fSmrg} 363405b261ecSmrg 36354642e01fSmrgint 36364642e01fSmrgmake_executable (const char *path) 36374642e01fSmrg{ 36384642e01fSmrg int rval = 0; 36394642e01fSmrg struct stat st; 364005b261ecSmrg 36414642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36424642e01fSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 36434642e01fSmrg if ((!path) || (!*path)) 36444642e01fSmrg return 0; 364505b261ecSmrg 36464642e01fSmrg if (stat (path, &st) >= 0) 36474642e01fSmrg { 36484642e01fSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36494642e01fSmrg } 36504642e01fSmrg return rval; 36514642e01fSmrg} 365205b261ecSmrg 36534642e01fSmrg/* Searches for the full path of the wrapper. Returns 36544642e01fSmrg newly allocated full path name if found, NULL otherwise 36554642e01fSmrg Does not chase symlinks, even on platforms that support them. 36564642e01fSmrg*/ 36574642e01fSmrgchar * 36584642e01fSmrgfind_executable (const char *wrapper) 36594642e01fSmrg{ 36604642e01fSmrg int has_slash = 0; 36614642e01fSmrg const char *p; 36624642e01fSmrg const char *p_next; 36634642e01fSmrg /* static buffer for getcwd */ 36644642e01fSmrg char tmp[LT_PATHMAX + 1]; 36654642e01fSmrg int tmp_len; 36664642e01fSmrg char *concat_name; 366705b261ecSmrg 36684642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36694642e01fSmrg wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 367005b261ecSmrg 36714642e01fSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 36724642e01fSmrg return NULL; 367305b261ecSmrg 36744642e01fSmrg /* Absolute path? */ 36754642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36764642e01fSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36774642e01fSmrg { 36784642e01fSmrg concat_name = xstrdup (wrapper); 36794642e01fSmrg if (check_executable (concat_name)) 36804642e01fSmrg return concat_name; 36814642e01fSmrg XFREE (concat_name); 36824642e01fSmrg } 36834642e01fSmrg else 36844642e01fSmrg { 36854642e01fSmrg#endif 36864642e01fSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 36874642e01fSmrg { 36884642e01fSmrg concat_name = xstrdup (wrapper); 36894642e01fSmrg if (check_executable (concat_name)) 36904642e01fSmrg return concat_name; 36914642e01fSmrg XFREE (concat_name); 36924642e01fSmrg } 36934642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36944642e01fSmrg } 36954642e01fSmrg#endif 369605b261ecSmrg 36974642e01fSmrg for (p = wrapper; *p; p++) 36984642e01fSmrg if (*p == '/') 36994642e01fSmrg { 37004642e01fSmrg has_slash = 1; 37014642e01fSmrg break; 37024642e01fSmrg } 37034642e01fSmrg if (!has_slash) 37044642e01fSmrg { 37054642e01fSmrg /* no slashes; search PATH */ 37064642e01fSmrg const char *path = getenv ("PATH"); 37074642e01fSmrg if (path != NULL) 37084642e01fSmrg { 37094642e01fSmrg for (p = path; *p; p = p_next) 37104642e01fSmrg { 37114642e01fSmrg const char *q; 37124642e01fSmrg size_t p_len; 37134642e01fSmrg for (q = p; *q; q++) 37144642e01fSmrg if (IS_PATH_SEPARATOR (*q)) 37154642e01fSmrg break; 37164642e01fSmrg p_len = q - p; 37174642e01fSmrg p_next = (*q == '\0' ? q : q + 1); 37184642e01fSmrg if (p_len == 0) 37194642e01fSmrg { 37204642e01fSmrg /* empty path: current directory */ 37214642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 37224642e01fSmrg lt_fatal ("getcwd failed"); 37234642e01fSmrg tmp_len = strlen (tmp); 37244642e01fSmrg concat_name = 37254642e01fSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37264642e01fSmrg memcpy (concat_name, tmp, tmp_len); 37274642e01fSmrg concat_name[tmp_len] = '/'; 37284642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 37294642e01fSmrg } 37304642e01fSmrg else 37314642e01fSmrg { 37324642e01fSmrg concat_name = 37334642e01fSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37344642e01fSmrg memcpy (concat_name, p, p_len); 37354642e01fSmrg concat_name[p_len] = '/'; 37364642e01fSmrg strcpy (concat_name + p_len + 1, wrapper); 37374642e01fSmrg } 37384642e01fSmrg if (check_executable (concat_name)) 37394642e01fSmrg return concat_name; 37404642e01fSmrg XFREE (concat_name); 37414642e01fSmrg } 37424642e01fSmrg } 37434642e01fSmrg /* not found in PATH; assume curdir */ 37444642e01fSmrg } 37454642e01fSmrg /* Relative path | not found in path: prepend cwd */ 37464642e01fSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 37474642e01fSmrg lt_fatal ("getcwd failed"); 37484642e01fSmrg tmp_len = strlen (tmp); 37494642e01fSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37504642e01fSmrg memcpy (concat_name, tmp, tmp_len); 37514642e01fSmrg concat_name[tmp_len] = '/'; 37524642e01fSmrg strcpy (concat_name + tmp_len + 1, wrapper); 375305b261ecSmrg 37544642e01fSmrg if (check_executable (concat_name)) 37554642e01fSmrg return concat_name; 37564642e01fSmrg XFREE (concat_name); 37574642e01fSmrg return NULL; 37584642e01fSmrg} 375905b261ecSmrg 37604642e01fSmrgchar * 37614642e01fSmrgchase_symlinks (const char *pathspec) 37624642e01fSmrg{ 37634642e01fSmrg#ifndef S_ISLNK 37644642e01fSmrg return xstrdup (pathspec); 37654642e01fSmrg#else 37664642e01fSmrg char buf[LT_PATHMAX]; 37674642e01fSmrg struct stat s; 37684642e01fSmrg char *tmp_pathspec = xstrdup (pathspec); 37694642e01fSmrg char *p; 37704642e01fSmrg int has_symlinks = 0; 37714642e01fSmrg while (strlen (tmp_pathspec) && !has_symlinks) 37724642e01fSmrg { 37734642e01fSmrg LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37744642e01fSmrg tmp_pathspec)); 37754642e01fSmrg if (lstat (tmp_pathspec, &s) == 0) 37764642e01fSmrg { 37774642e01fSmrg if (S_ISLNK (s.st_mode) != 0) 37784642e01fSmrg { 37794642e01fSmrg has_symlinks = 1; 37804642e01fSmrg break; 37814642e01fSmrg } 378205b261ecSmrg 37834642e01fSmrg /* search backwards for last DIR_SEPARATOR */ 37844642e01fSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37854642e01fSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37864642e01fSmrg p--; 37874642e01fSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37884642e01fSmrg { 37894642e01fSmrg /* no more DIR_SEPARATORS left */ 37904642e01fSmrg break; 37914642e01fSmrg } 37924642e01fSmrg *p = '\0'; 37934642e01fSmrg } 37944642e01fSmrg else 37954642e01fSmrg { 37964642e01fSmrg char *errstr = strerror (errno); 37974642e01fSmrg lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37984642e01fSmrg } 37994642e01fSmrg } 38004642e01fSmrg XFREE (tmp_pathspec); 380105b261ecSmrg 38024642e01fSmrg if (!has_symlinks) 38034642e01fSmrg { 38044642e01fSmrg return xstrdup (pathspec); 38054642e01fSmrg } 380605b261ecSmrg 38074642e01fSmrg tmp_pathspec = realpath (pathspec, buf); 38084642e01fSmrg if (tmp_pathspec == 0) 38094642e01fSmrg { 38104642e01fSmrg lt_fatal ("Could not follow symlinks for %s", pathspec); 38114642e01fSmrg } 38124642e01fSmrg return xstrdup (tmp_pathspec); 38134642e01fSmrg#endif 38144642e01fSmrg} 381505b261ecSmrg 38164642e01fSmrgchar * 38174642e01fSmrgstrendzap (char *str, const char *pat) 38184642e01fSmrg{ 38194642e01fSmrg size_t len, patlen; 382005b261ecSmrg 38214642e01fSmrg assert (str != NULL); 38224642e01fSmrg assert (pat != NULL); 382305b261ecSmrg 38244642e01fSmrg len = strlen (str); 38254642e01fSmrg patlen = strlen (pat); 382605b261ecSmrg 38274642e01fSmrg if (patlen <= len) 38284642e01fSmrg { 38294642e01fSmrg str += len - patlen; 38304642e01fSmrg if (strcmp (str, pat) == 0) 38314642e01fSmrg *str = '\0'; 38324642e01fSmrg } 38334642e01fSmrg return str; 38344642e01fSmrg} 383505b261ecSmrg 38364642e01fSmrgstatic void 38374642e01fSmrglt_error_core (int exit_status, const char *mode, 38384642e01fSmrg const char *message, va_list ap) 38394642e01fSmrg{ 38404642e01fSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 38414642e01fSmrg vfprintf (stderr, message, ap); 38424642e01fSmrg fprintf (stderr, ".\n"); 384305b261ecSmrg 38444642e01fSmrg if (exit_status >= 0) 38454642e01fSmrg exit (exit_status); 38464642e01fSmrg} 384705b261ecSmrg 38484642e01fSmrgvoid 38494642e01fSmrglt_fatal (const char *message, ...) 38504642e01fSmrg{ 38514642e01fSmrg va_list ap; 38524642e01fSmrg va_start (ap, message); 38534642e01fSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38544642e01fSmrg va_end (ap); 38554642e01fSmrg} 385605b261ecSmrg 38574642e01fSmrgvoid 38584642e01fSmrglt_setenv (const char *name, const char *value) 38594642e01fSmrg{ 38604642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38614642e01fSmrg (name ? name : "<NULL>"), 38624642e01fSmrg (value ? value : "<NULL>"))); 38634642e01fSmrg { 38644642e01fSmrg#ifdef HAVE_SETENV 38654642e01fSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 38664642e01fSmrg char *str = xstrdup (value); 38674642e01fSmrg setenv (name, str, 1); 38684642e01fSmrg#else 38694642e01fSmrg int len = strlen (name) + 1 + strlen (value) + 1; 38704642e01fSmrg char *str = XMALLOC (char, len); 38714642e01fSmrg sprintf (str, "%s=%s", name, value); 38724642e01fSmrg if (putenv (str) != EXIT_SUCCESS) 38734642e01fSmrg { 38744642e01fSmrg XFREE (str); 38754642e01fSmrg } 38764642e01fSmrg#endif 38774642e01fSmrg } 38784642e01fSmrg} 387905b261ecSmrg 38804642e01fSmrgchar * 38814642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 38824642e01fSmrg{ 38834642e01fSmrg char *new_value; 38844642e01fSmrg if (orig_value && *orig_value) 38854642e01fSmrg { 38864642e01fSmrg int orig_value_len = strlen (orig_value); 38874642e01fSmrg int add_len = strlen (add); 38884642e01fSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 38894642e01fSmrg if (to_end) 38904642e01fSmrg { 38914642e01fSmrg strcpy (new_value, orig_value); 38924642e01fSmrg strcpy (new_value + orig_value_len, add); 38934642e01fSmrg } 38944642e01fSmrg else 38954642e01fSmrg { 38964642e01fSmrg strcpy (new_value, add); 38974642e01fSmrg strcpy (new_value + add_len, orig_value); 38984642e01fSmrg } 38994642e01fSmrg } 39004642e01fSmrg else 39014642e01fSmrg { 39024642e01fSmrg new_value = xstrdup (add); 39034642e01fSmrg } 39044642e01fSmrg return new_value; 39054642e01fSmrg} 390605b261ecSmrg 39074642e01fSmrgint 39084642e01fSmrglt_split_name_value (const char *arg, char** name, char** value) 39094642e01fSmrg{ 39104642e01fSmrg const char *p; 39114642e01fSmrg int len; 39124642e01fSmrg if (!arg || !*arg) 39134642e01fSmrg return 1; 391405b261ecSmrg 39154642e01fSmrg p = strchr (arg, (int)'='); 391605b261ecSmrg 39174642e01fSmrg if (!p) 39184642e01fSmrg return 1; 391905b261ecSmrg 39204642e01fSmrg *value = xstrdup (++p); 392105b261ecSmrg 39224642e01fSmrg len = strlen (arg) - strlen (*value); 39234642e01fSmrg *name = XMALLOC (char, len); 39244642e01fSmrg strncpy (*name, arg, len-1); 39254642e01fSmrg (*name)[len - 1] = '\0'; 392605b261ecSmrg 39274642e01fSmrg return 0; 39284642e01fSmrg} 392905b261ecSmrg 39304642e01fSmrgvoid 39314642e01fSmrglt_opt_process_env_set (const char *arg) 39324642e01fSmrg{ 39334642e01fSmrg char *name = NULL; 39344642e01fSmrg char *value = NULL; 393505b261ecSmrg 39364642e01fSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39374642e01fSmrg { 39384642e01fSmrg XFREE (name); 39394642e01fSmrg XFREE (value); 39404642e01fSmrg lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39414642e01fSmrg } 394205b261ecSmrg 39434642e01fSmrg lt_setenv (name, value); 39444642e01fSmrg XFREE (name); 39454642e01fSmrg XFREE (value); 39464642e01fSmrg} 394705b261ecSmrg 39484642e01fSmrgvoid 39494642e01fSmrglt_opt_process_env_prepend (const char *arg) 39504642e01fSmrg{ 39514642e01fSmrg char *name = NULL; 39524642e01fSmrg char *value = NULL; 39534642e01fSmrg char *new_value = NULL; 395405b261ecSmrg 39554642e01fSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39564642e01fSmrg { 39574642e01fSmrg XFREE (name); 39584642e01fSmrg XFREE (value); 39594642e01fSmrg lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39604642e01fSmrg } 396105b261ecSmrg 39624642e01fSmrg new_value = lt_extend_str (getenv (name), value, 0); 39634642e01fSmrg lt_setenv (name, new_value); 39644642e01fSmrg XFREE (new_value); 39654642e01fSmrg XFREE (name); 39664642e01fSmrg XFREE (value); 39674642e01fSmrg} 396805b261ecSmrg 39694642e01fSmrgvoid 39704642e01fSmrglt_opt_process_env_append (const char *arg) 39714642e01fSmrg{ 39724642e01fSmrg char *name = NULL; 39734642e01fSmrg char *value = NULL; 39744642e01fSmrg char *new_value = NULL; 397505b261ecSmrg 39764642e01fSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39774642e01fSmrg { 39784642e01fSmrg XFREE (name); 39794642e01fSmrg XFREE (value); 39804642e01fSmrg lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39814642e01fSmrg } 398205b261ecSmrg 39834642e01fSmrg new_value = lt_extend_str (getenv (name), value, 1); 39844642e01fSmrg lt_setenv (name, new_value); 39854642e01fSmrg XFREE (new_value); 39864642e01fSmrg XFREE (name); 39874642e01fSmrg XFREE (value); 39884642e01fSmrg} 398905b261ecSmrg 39904642e01fSmrgvoid 39914642e01fSmrglt_update_exe_path (const char *name, const char *value) 39924642e01fSmrg{ 39934642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39944642e01fSmrg (name ? name : "<NULL>"), 39954642e01fSmrg (value ? value : "<NULL>"))); 399605b261ecSmrg 39974642e01fSmrg if (name && *name && value && *value) 39984642e01fSmrg { 39994642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 40004642e01fSmrg /* some systems can't cope with a ':'-terminated path #' */ 40014642e01fSmrg int len = strlen (new_value); 40024642e01fSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40034642e01fSmrg { 40044642e01fSmrg new_value[len-1] = '\0'; 40054642e01fSmrg } 40064642e01fSmrg lt_setenv (name, new_value); 40074642e01fSmrg XFREE (new_value); 40084642e01fSmrg } 40094642e01fSmrg} 401005b261ecSmrg 40114642e01fSmrgvoid 40124642e01fSmrglt_update_lib_path (const char *name, const char *value) 40134642e01fSmrg{ 40144642e01fSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40154642e01fSmrg (name ? name : "<NULL>"), 40164642e01fSmrg (value ? value : "<NULL>"))); 401705b261ecSmrg 40184642e01fSmrg if (name && *name && value && *value) 40194642e01fSmrg { 40204642e01fSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 40214642e01fSmrg lt_setenv (name, new_value); 40224642e01fSmrg XFREE (new_value); 40234642e01fSmrg } 40244642e01fSmrg} 402505b261ecSmrg 402605b261ecSmrg 40274642e01fSmrgEOF 40284642e01fSmrg} 40294642e01fSmrg# end: func_emit_cwrapperexe_src 403005b261ecSmrg 40314642e01fSmrg# func_mode_link arg... 40324642e01fSmrgfunc_mode_link () 40334642e01fSmrg{ 40344642e01fSmrg $opt_debug 40354642e01fSmrg case $host in 40364642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40374642e01fSmrg # It is impossible to link a dll without this setting, and 40384642e01fSmrg # we shouldn't force the makefile maintainer to figure out 40394642e01fSmrg # which system we are compiling for in order to pass an extra 40404642e01fSmrg # flag for every libtool invocation. 40414642e01fSmrg # allow_undefined=no 404205b261ecSmrg 40434642e01fSmrg # FIXME: Unfortunately, there are problems with the above when trying 40444642e01fSmrg # to make a dll which has undefined symbols, in which case not 40454642e01fSmrg # even a static library is built. For now, we need to specify 40464642e01fSmrg # -no-undefined on the libtool link line when we can be certain 40474642e01fSmrg # that all symbols are satisfied, otherwise we get a static library. 40484642e01fSmrg allow_undefined=yes 40494642e01fSmrg ;; 40504642e01fSmrg *) 40514642e01fSmrg allow_undefined=yes 40524642e01fSmrg ;; 40534642e01fSmrg esac 40544642e01fSmrg libtool_args=$nonopt 40554642e01fSmrg base_compile="$nonopt $@" 40564642e01fSmrg compile_command=$nonopt 40574642e01fSmrg finalize_command=$nonopt 405805b261ecSmrg 40594642e01fSmrg compile_rpath= 40604642e01fSmrg finalize_rpath= 40614642e01fSmrg compile_shlibpath= 40624642e01fSmrg finalize_shlibpath= 40634642e01fSmrg convenience= 40644642e01fSmrg old_convenience= 40654642e01fSmrg deplibs= 40664642e01fSmrg old_deplibs= 40674642e01fSmrg compiler_flags= 40684642e01fSmrg linker_flags= 40694642e01fSmrg dllsearchpath= 40704642e01fSmrg lib_search_path=`pwd` 40714642e01fSmrg inst_prefix_dir= 40724642e01fSmrg new_inherited_linker_flags= 407305b261ecSmrg 40744642e01fSmrg avoid_version=no 40754642e01fSmrg dlfiles= 40764642e01fSmrg dlprefiles= 40774642e01fSmrg dlself=no 40784642e01fSmrg export_dynamic=no 40794642e01fSmrg export_symbols= 40804642e01fSmrg export_symbols_regex= 40814642e01fSmrg generated= 40824642e01fSmrg libobjs= 40834642e01fSmrg ltlibs= 40844642e01fSmrg module=no 40854642e01fSmrg no_install=no 40864642e01fSmrg objs= 40874642e01fSmrg non_pic_objects= 40884642e01fSmrg precious_files_regex= 40894642e01fSmrg prefer_static_libs=no 40904642e01fSmrg preload=no 40914642e01fSmrg prev= 40924642e01fSmrg prevarg= 40934642e01fSmrg release= 40944642e01fSmrg rpath= 40954642e01fSmrg xrpath= 40964642e01fSmrg perm_rpath= 40974642e01fSmrg temp_rpath= 40984642e01fSmrg thread_safe=no 40994642e01fSmrg vinfo= 41004642e01fSmrg vinfo_number=no 41014642e01fSmrg weak_libs= 41024642e01fSmrg single_module="${wl}-single_module" 41034642e01fSmrg func_infer_tag $base_compile 410405b261ecSmrg 41054642e01fSmrg # We need to know -static, to get the right output filenames. 41064642e01fSmrg for arg 41074642e01fSmrg do 41084642e01fSmrg case $arg in 41094642e01fSmrg -shared) 41104642e01fSmrg test "$build_libtool_libs" != yes && \ 41114642e01fSmrg func_fatal_configuration "can not build a shared library" 41124642e01fSmrg build_old_libs=no 41134642e01fSmrg break 41144642e01fSmrg ;; 41154642e01fSmrg -all-static | -static | -static-libtool-libs) 41164642e01fSmrg case $arg in 41174642e01fSmrg -all-static) 41184642e01fSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41194642e01fSmrg func_warning "complete static linking is impossible in this configuration" 41204642e01fSmrg fi 41214642e01fSmrg if test -n "$link_static_flag"; then 41224642e01fSmrg dlopen_self=$dlopen_self_static 41234642e01fSmrg fi 41244642e01fSmrg prefer_static_libs=yes 41254642e01fSmrg ;; 41264642e01fSmrg -static) 41274642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 41284642e01fSmrg dlopen_self=$dlopen_self_static 41294642e01fSmrg fi 41304642e01fSmrg prefer_static_libs=built 41314642e01fSmrg ;; 41324642e01fSmrg -static-libtool-libs) 41334642e01fSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 41344642e01fSmrg dlopen_self=$dlopen_self_static 41354642e01fSmrg fi 41364642e01fSmrg prefer_static_libs=yes 41374642e01fSmrg ;; 41384642e01fSmrg esac 41394642e01fSmrg build_libtool_libs=no 41404642e01fSmrg build_old_libs=yes 41414642e01fSmrg break 41424642e01fSmrg ;; 41434642e01fSmrg esac 41444642e01fSmrg done 414505b261ecSmrg 41464642e01fSmrg # See if our shared archives depend on static archives. 41474642e01fSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 414805b261ecSmrg 41494642e01fSmrg # Go through the arguments, transforming them on the way. 41504642e01fSmrg while test "$#" -gt 0; do 41514642e01fSmrg arg="$1" 41524642e01fSmrg shift 41534642e01fSmrg func_quote_for_eval "$arg" 41544642e01fSmrg qarg=$func_quote_for_eval_unquoted_result 41554642e01fSmrg func_append libtool_args " $func_quote_for_eval_result" 415605b261ecSmrg 41574642e01fSmrg # If the previous option needs an argument, assign it. 41584642e01fSmrg if test -n "$prev"; then 41594642e01fSmrg case $prev in 41604642e01fSmrg output) 41614642e01fSmrg func_append compile_command " @OUTPUT@" 41624642e01fSmrg func_append finalize_command " @OUTPUT@" 41634642e01fSmrg ;; 41644642e01fSmrg esac 416505b261ecSmrg 41664642e01fSmrg case $prev in 41674642e01fSmrg dlfiles|dlprefiles) 41684642e01fSmrg if test "$preload" = no; then 41694642e01fSmrg # Add the symbol object into the linking commands. 41704642e01fSmrg func_append compile_command " @SYMFILE@" 41714642e01fSmrg func_append finalize_command " @SYMFILE@" 41724642e01fSmrg preload=yes 417305b261ecSmrg fi 41744642e01fSmrg case $arg in 41754642e01fSmrg *.la | *.lo) ;; # We handle these cases below. 41764642e01fSmrg force) 41774642e01fSmrg if test "$dlself" = no; then 41784642e01fSmrg dlself=needless 41794642e01fSmrg export_dynamic=yes 41804642e01fSmrg fi 41814642e01fSmrg prev= 41824642e01fSmrg continue 41834642e01fSmrg ;; 41844642e01fSmrg self) 41854642e01fSmrg if test "$prev" = dlprefiles; then 41864642e01fSmrg dlself=yes 41874642e01fSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41884642e01fSmrg dlself=yes 41894642e01fSmrg else 41904642e01fSmrg dlself=needless 41914642e01fSmrg export_dynamic=yes 41924642e01fSmrg fi 41934642e01fSmrg prev= 41944642e01fSmrg continue 41954642e01fSmrg ;; 41964642e01fSmrg *) 41974642e01fSmrg if test "$prev" = dlfiles; then 41984642e01fSmrg dlfiles="$dlfiles $arg" 41994642e01fSmrg else 42004642e01fSmrg dlprefiles="$dlprefiles $arg" 42014642e01fSmrg fi 42024642e01fSmrg prev= 42034642e01fSmrg continue 42044642e01fSmrg ;; 42054642e01fSmrg esac 42064642e01fSmrg ;; 42074642e01fSmrg expsyms) 42084642e01fSmrg export_symbols="$arg" 42094642e01fSmrg test -f "$arg" \ 42104642e01fSmrg || func_fatal_error "symbol file \`$arg' does not exist" 42114642e01fSmrg prev= 42124642e01fSmrg continue 42134642e01fSmrg ;; 42144642e01fSmrg expsyms_regex) 42154642e01fSmrg export_symbols_regex="$arg" 42164642e01fSmrg prev= 42174642e01fSmrg continue 42184642e01fSmrg ;; 42194642e01fSmrg framework) 422005b261ecSmrg case $host in 42214642e01fSmrg *-*-darwin*) 42224642e01fSmrg case "$deplibs " in 42234642e01fSmrg *" $qarg.ltframework "*) ;; 42244642e01fSmrg *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42254642e01fSmrg ;; 42264642e01fSmrg esac 42274642e01fSmrg ;; 422805b261ecSmrg esac 42294642e01fSmrg prev= 42304642e01fSmrg continue 423105b261ecSmrg ;; 42324642e01fSmrg inst_prefix) 42334642e01fSmrg inst_prefix_dir="$arg" 42344642e01fSmrg prev= 42354642e01fSmrg continue 423605b261ecSmrg ;; 42374642e01fSmrg objectlist) 42384642e01fSmrg if test -f "$arg"; then 42394642e01fSmrg save_arg=$arg 42404642e01fSmrg moreargs= 42414642e01fSmrg for fil in `cat "$save_arg"` 42424642e01fSmrg do 42434642e01fSmrg# moreargs="$moreargs $fil" 42444642e01fSmrg arg=$fil 42454642e01fSmrg # A libtool-controlled object. 424605b261ecSmrg 42474642e01fSmrg # Check to see that this really is a libtool object. 42484642e01fSmrg if func_lalib_unsafe_p "$arg"; then 42494642e01fSmrg pic_object= 42504642e01fSmrg non_pic_object= 425105b261ecSmrg 42524642e01fSmrg # Read the .lo file 42534642e01fSmrg func_source "$arg" 425405b261ecSmrg 42554642e01fSmrg if test -z "$pic_object" || 42564642e01fSmrg test -z "$non_pic_object" || 42574642e01fSmrg test "$pic_object" = none && 42584642e01fSmrg test "$non_pic_object" = none; then 42594642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 42604642e01fSmrg fi 426105b261ecSmrg 42624642e01fSmrg # Extract subdirectory from the argument. 42634642e01fSmrg func_dirname "$arg" "/" "" 42644642e01fSmrg xdir="$func_dirname_result" 426505b261ecSmrg 42664642e01fSmrg if test "$pic_object" != none; then 42674642e01fSmrg # Prepend the subdirectory the object is found in. 42684642e01fSmrg pic_object="$xdir$pic_object" 426905b261ecSmrg 42704642e01fSmrg if test "$prev" = dlfiles; then 42714642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42724642e01fSmrg dlfiles="$dlfiles $pic_object" 42734642e01fSmrg prev= 42744642e01fSmrg continue 42754642e01fSmrg else 42764642e01fSmrg # If libtool objects are unsupported, then we need to preload. 42774642e01fSmrg prev=dlprefiles 42784642e01fSmrg fi 42794642e01fSmrg fi 428005b261ecSmrg 42814642e01fSmrg # CHECK ME: I think I busted this. -Ossama 42824642e01fSmrg if test "$prev" = dlprefiles; then 42834642e01fSmrg # Preload the old-style object. 42844642e01fSmrg dlprefiles="$dlprefiles $pic_object" 42854642e01fSmrg prev= 42864642e01fSmrg fi 428705b261ecSmrg 42884642e01fSmrg # A PIC object. 42894642e01fSmrg func_append libobjs " $pic_object" 42904642e01fSmrg arg="$pic_object" 42914642e01fSmrg fi 429205b261ecSmrg 42934642e01fSmrg # Non-PIC object. 42944642e01fSmrg if test "$non_pic_object" != none; then 42954642e01fSmrg # Prepend the subdirectory the object is found in. 42964642e01fSmrg non_pic_object="$xdir$non_pic_object" 429705b261ecSmrg 42984642e01fSmrg # A standard non-PIC object 42994642e01fSmrg func_append non_pic_objects " $non_pic_object" 43004642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 43014642e01fSmrg arg="$non_pic_object" 43024642e01fSmrg fi 43034642e01fSmrg else 43044642e01fSmrg # If the PIC object exists, use it instead. 43054642e01fSmrg # $xdir was prepended to $pic_object above. 43064642e01fSmrg non_pic_object="$pic_object" 43074642e01fSmrg func_append non_pic_objects " $non_pic_object" 43084642e01fSmrg fi 43094642e01fSmrg else 43104642e01fSmrg # Only an error if not doing a dry-run. 43114642e01fSmrg if $opt_dry_run; then 43124642e01fSmrg # Extract subdirectory from the argument. 43134642e01fSmrg func_dirname "$arg" "/" "" 43144642e01fSmrg xdir="$func_dirname_result" 43154642e01fSmrg 43164642e01fSmrg func_lo2o "$arg" 43174642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 43184642e01fSmrg non_pic_object=$xdir$func_lo2o_result 43194642e01fSmrg func_append libobjs " $pic_object" 43204642e01fSmrg func_append non_pic_objects " $non_pic_object" 43214642e01fSmrg else 43224642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 43234642e01fSmrg fi 43244642e01fSmrg fi 43254642e01fSmrg done 432605b261ecSmrg else 43274642e01fSmrg func_fatal_error "link input file \`$arg' does not exist" 432805b261ecSmrg fi 43294642e01fSmrg arg=$save_arg 43304642e01fSmrg prev= 43314642e01fSmrg continue 43324642e01fSmrg ;; 43334642e01fSmrg precious_regex) 43344642e01fSmrg precious_files_regex="$arg" 43354642e01fSmrg prev= 43364642e01fSmrg continue 43374642e01fSmrg ;; 43384642e01fSmrg release) 43394642e01fSmrg release="-$arg" 43404642e01fSmrg prev= 43414642e01fSmrg continue 43424642e01fSmrg ;; 43434642e01fSmrg rpath | xrpath) 43444642e01fSmrg # We need an absolute path. 43454642e01fSmrg case $arg in 43464642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 43474642e01fSmrg *) 43484642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 43494642e01fSmrg ;; 43504642e01fSmrg esac 43514642e01fSmrg if test "$prev" = rpath; then 43524642e01fSmrg case "$rpath " in 43534642e01fSmrg *" $arg "*) ;; 43544642e01fSmrg *) rpath="$rpath $arg" ;; 43554642e01fSmrg esac 435605b261ecSmrg else 43574642e01fSmrg case "$xrpath " in 43584642e01fSmrg *" $arg "*) ;; 43594642e01fSmrg *) xrpath="$xrpath $arg" ;; 43604642e01fSmrg esac 436105b261ecSmrg fi 43624642e01fSmrg prev= 43634642e01fSmrg continue 43644642e01fSmrg ;; 43654642e01fSmrg shrext) 43664642e01fSmrg shrext_cmds="$arg" 43674642e01fSmrg prev= 43684642e01fSmrg continue 43694642e01fSmrg ;; 43704642e01fSmrg weak) 43714642e01fSmrg weak_libs="$weak_libs $arg" 43724642e01fSmrg prev= 43734642e01fSmrg continue 43744642e01fSmrg ;; 43754642e01fSmrg xcclinker) 43764642e01fSmrg linker_flags="$linker_flags $qarg" 43774642e01fSmrg compiler_flags="$compiler_flags $qarg" 43784642e01fSmrg prev= 43794642e01fSmrg func_append compile_command " $qarg" 43804642e01fSmrg func_append finalize_command " $qarg" 43814642e01fSmrg continue 43824642e01fSmrg ;; 43834642e01fSmrg xcompiler) 43844642e01fSmrg compiler_flags="$compiler_flags $qarg" 43854642e01fSmrg prev= 43864642e01fSmrg func_append compile_command " $qarg" 43874642e01fSmrg func_append finalize_command " $qarg" 43884642e01fSmrg continue 43894642e01fSmrg ;; 43904642e01fSmrg xlinker) 43914642e01fSmrg linker_flags="$linker_flags $qarg" 43924642e01fSmrg compiler_flags="$compiler_flags $wl$qarg" 43934642e01fSmrg prev= 43944642e01fSmrg func_append compile_command " $wl$qarg" 43954642e01fSmrg func_append finalize_command " $wl$qarg" 43964642e01fSmrg continue 43974642e01fSmrg ;; 43984642e01fSmrg *) 43994642e01fSmrg eval "$prev=\"\$arg\"" 44004642e01fSmrg prev= 44014642e01fSmrg continue 44024642e01fSmrg ;; 440305b261ecSmrg esac 44044642e01fSmrg fi # test -n "$prev" 440505b261ecSmrg 44064642e01fSmrg prevarg="$arg" 440705b261ecSmrg 44084642e01fSmrg case $arg in 44094642e01fSmrg -all-static) 44104642e01fSmrg if test -n "$link_static_flag"; then 44114642e01fSmrg # See comment for -static flag below, for more details. 44124642e01fSmrg func_append compile_command " $link_static_flag" 44134642e01fSmrg func_append finalize_command " $link_static_flag" 44144642e01fSmrg fi 44154642e01fSmrg continue 44164642e01fSmrg ;; 441705b261ecSmrg 44184642e01fSmrg -allow-undefined) 44194642e01fSmrg # FIXME: remove this flag sometime in the future. 44204642e01fSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44214642e01fSmrg ;; 442205b261ecSmrg 44234642e01fSmrg -avoid-version) 44244642e01fSmrg avoid_version=yes 44254642e01fSmrg continue 44264642e01fSmrg ;; 442705b261ecSmrg 44284642e01fSmrg -dlopen) 44294642e01fSmrg prev=dlfiles 44304642e01fSmrg continue 44314642e01fSmrg ;; 443205b261ecSmrg 44334642e01fSmrg -dlpreopen) 44344642e01fSmrg prev=dlprefiles 44354642e01fSmrg continue 44364642e01fSmrg ;; 443705b261ecSmrg 44384642e01fSmrg -export-dynamic) 44394642e01fSmrg export_dynamic=yes 44404642e01fSmrg continue 44414642e01fSmrg ;; 444205b261ecSmrg 44434642e01fSmrg -export-symbols | -export-symbols-regex) 44444642e01fSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44454642e01fSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 44464642e01fSmrg fi 44474642e01fSmrg if test "X$arg" = "X-export-symbols"; then 44484642e01fSmrg prev=expsyms 44494642e01fSmrg else 44504642e01fSmrg prev=expsyms_regex 44514642e01fSmrg fi 44524642e01fSmrg continue 44534642e01fSmrg ;; 445405b261ecSmrg 44554642e01fSmrg -framework) 44564642e01fSmrg prev=framework 44574642e01fSmrg continue 44584642e01fSmrg ;; 445905b261ecSmrg 44604642e01fSmrg -inst-prefix-dir) 44614642e01fSmrg prev=inst_prefix 44624642e01fSmrg continue 44634642e01fSmrg ;; 446405b261ecSmrg 44654642e01fSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44664642e01fSmrg # so, if we see these flags be careful not to treat them like -L 44674642e01fSmrg -L[A-Z][A-Z]*:*) 44684642e01fSmrg case $with_gcc/$host in 44694642e01fSmrg no/*-*-irix* | /*-*-irix*) 44704642e01fSmrg func_append compile_command " $arg" 44714642e01fSmrg func_append finalize_command " $arg" 44724642e01fSmrg ;; 44734642e01fSmrg esac 44744642e01fSmrg continue 44754642e01fSmrg ;; 447605b261ecSmrg 44774642e01fSmrg -L*) 44784642e01fSmrg func_stripname '-L' '' "$arg" 44794642e01fSmrg dir=$func_stripname_result 44804642e01fSmrg if test -z "$dir"; then 44814642e01fSmrg if test "$#" -gt 0; then 44824642e01fSmrg func_fatal_error "require no space between \`-L' and \`$1'" 44834642e01fSmrg else 44844642e01fSmrg func_fatal_error "need path for \`-L' option" 44854642e01fSmrg fi 44864642e01fSmrg fi 44874642e01fSmrg # We need an absolute path. 44884642e01fSmrg case $dir in 44894642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 44904642e01fSmrg *) 44914642e01fSmrg absdir=`cd "$dir" && pwd` 44924642e01fSmrg test -z "$absdir" && \ 44934642e01fSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 44944642e01fSmrg dir="$absdir" 44954642e01fSmrg ;; 44964642e01fSmrg esac 44974642e01fSmrg case "$deplibs " in 44984642e01fSmrg *" -L$dir "*) ;; 44994642e01fSmrg *) 45004642e01fSmrg deplibs="$deplibs -L$dir" 45014642e01fSmrg lib_search_path="$lib_search_path $dir" 45024642e01fSmrg ;; 45034642e01fSmrg esac 45044642e01fSmrg case $host in 45054642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45064642e01fSmrg testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45074642e01fSmrg case :$dllsearchpath: in 45084642e01fSmrg *":$dir:"*) ;; 45094642e01fSmrg ::) dllsearchpath=$dir;; 45104642e01fSmrg *) dllsearchpath="$dllsearchpath:$dir";; 45114642e01fSmrg esac 45124642e01fSmrg case :$dllsearchpath: in 45134642e01fSmrg *":$testbindir:"*) ;; 45144642e01fSmrg ::) dllsearchpath=$testbindir;; 45154642e01fSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45164642e01fSmrg esac 45174642e01fSmrg ;; 45184642e01fSmrg esac 45194642e01fSmrg continue 45204642e01fSmrg ;; 452105b261ecSmrg 45224642e01fSmrg -l*) 45234642e01fSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45244642e01fSmrg case $host in 45254642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45264642e01fSmrg # These systems don't actually have a C or math library (as such) 45274642e01fSmrg continue 45284642e01fSmrg ;; 45294642e01fSmrg *-*-os2*) 45304642e01fSmrg # These systems don't actually have a C library (as such) 45314642e01fSmrg test "X$arg" = "X-lc" && continue 45324642e01fSmrg ;; 45334642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45344642e01fSmrg # Do not include libc due to us having libc/libc_r. 45354642e01fSmrg test "X$arg" = "X-lc" && continue 45364642e01fSmrg ;; 45374642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 45384642e01fSmrg # Rhapsody C and math libraries are in the System framework 45394642e01fSmrg deplibs="$deplibs System.ltframework" 45404642e01fSmrg continue 45414642e01fSmrg ;; 45424642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 45434642e01fSmrg # Causes problems with __ctype 45444642e01fSmrg test "X$arg" = "X-lc" && continue 45454642e01fSmrg ;; 45464642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45474642e01fSmrg # Compiler inserts libc in the correct place for threads to work 45484642e01fSmrg test "X$arg" = "X-lc" && continue 45494642e01fSmrg ;; 45504642e01fSmrg esac 45514642e01fSmrg elif test "X$arg" = "X-lc_r"; then 45524642e01fSmrg case $host in 45534642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45544642e01fSmrg # Do not include libc_r directly, use -pthread flag. 45554642e01fSmrg continue 45564642e01fSmrg ;; 45574642e01fSmrg esac 45584642e01fSmrg fi 45594642e01fSmrg deplibs="$deplibs $arg" 45604642e01fSmrg continue 45614642e01fSmrg ;; 456205b261ecSmrg 45634642e01fSmrg -module) 45644642e01fSmrg module=yes 45654642e01fSmrg continue 45664642e01fSmrg ;; 456705b261ecSmrg 45684642e01fSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45694642e01fSmrg # classes, name mangling, and exception handling. 45704642e01fSmrg # Darwin uses the -arch flag to determine output architecture. 45714642e01fSmrg -model|-arch|-isysroot) 45724642e01fSmrg compiler_flags="$compiler_flags $arg" 45734642e01fSmrg func_append compile_command " $arg" 45744642e01fSmrg func_append finalize_command " $arg" 45754642e01fSmrg prev=xcompiler 45764642e01fSmrg continue 45774642e01fSmrg ;; 457805b261ecSmrg 45794642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45804642e01fSmrg compiler_flags="$compiler_flags $arg" 45814642e01fSmrg func_append compile_command " $arg" 45824642e01fSmrg func_append finalize_command " $arg" 45834642e01fSmrg case "$new_inherited_linker_flags " in 45844642e01fSmrg *" $arg "*) ;; 45854642e01fSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45864642e01fSmrg esac 45874642e01fSmrg continue 45884642e01fSmrg ;; 458905b261ecSmrg 45904642e01fSmrg -multi_module) 45914642e01fSmrg single_module="${wl}-multi_module" 45924642e01fSmrg continue 45934642e01fSmrg ;; 459405b261ecSmrg 45954642e01fSmrg -no-fast-install) 45964642e01fSmrg fast_install=no 45974642e01fSmrg continue 45984642e01fSmrg ;; 459905b261ecSmrg 46004642e01fSmrg -no-install) 46014642e01fSmrg case $host in 46024642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46034642e01fSmrg # The PATH hackery in wrapper scripts is required on Windows 46044642e01fSmrg # and Darwin in order for the loader to find any dlls it needs. 46054642e01fSmrg func_warning "\`-no-install' is ignored for $host" 46064642e01fSmrg func_warning "assuming \`-no-fast-install' instead" 46074642e01fSmrg fast_install=no 46084642e01fSmrg ;; 46094642e01fSmrg *) no_install=yes ;; 46104642e01fSmrg esac 46114642e01fSmrg continue 46124642e01fSmrg ;; 461305b261ecSmrg 46144642e01fSmrg -no-undefined) 46154642e01fSmrg allow_undefined=no 46164642e01fSmrg continue 46174642e01fSmrg ;; 461805b261ecSmrg 46194642e01fSmrg -objectlist) 46204642e01fSmrg prev=objectlist 46214642e01fSmrg continue 46224642e01fSmrg ;; 462305b261ecSmrg 46244642e01fSmrg -o) prev=output ;; 462505b261ecSmrg 46264642e01fSmrg -precious-files-regex) 46274642e01fSmrg prev=precious_regex 46284642e01fSmrg continue 46294642e01fSmrg ;; 463005b261ecSmrg 46314642e01fSmrg -release) 46324642e01fSmrg prev=release 46334642e01fSmrg continue 46344642e01fSmrg ;; 463505b261ecSmrg 46364642e01fSmrg -rpath) 46374642e01fSmrg prev=rpath 46384642e01fSmrg continue 46394642e01fSmrg ;; 464005b261ecSmrg 46414642e01fSmrg -R) 46424642e01fSmrg prev=xrpath 46434642e01fSmrg continue 46444642e01fSmrg ;; 464505b261ecSmrg 46464642e01fSmrg -R*) 46474642e01fSmrg func_stripname '-R' '' "$arg" 46484642e01fSmrg dir=$func_stripname_result 46494642e01fSmrg # We need an absolute path. 46504642e01fSmrg case $dir in 46514642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 46524642e01fSmrg *) 46534642e01fSmrg func_fatal_error "only absolute run-paths are allowed" 46544642e01fSmrg ;; 46554642e01fSmrg esac 46564642e01fSmrg case "$xrpath " in 46574642e01fSmrg *" $dir "*) ;; 46584642e01fSmrg *) xrpath="$xrpath $dir" ;; 46594642e01fSmrg esac 46604642e01fSmrg continue 46614642e01fSmrg ;; 466205b261ecSmrg 46634642e01fSmrg -shared) 46644642e01fSmrg # The effects of -shared are defined in a previous loop. 46654642e01fSmrg continue 46664642e01fSmrg ;; 466705b261ecSmrg 46684642e01fSmrg -shrext) 46694642e01fSmrg prev=shrext 46704642e01fSmrg continue 46714642e01fSmrg ;; 467205b261ecSmrg 46734642e01fSmrg -static | -static-libtool-libs) 46744642e01fSmrg # The effects of -static are defined in a previous loop. 46754642e01fSmrg # We used to do the same as -all-static on platforms that 46764642e01fSmrg # didn't have a PIC flag, but the assumption that the effects 46774642e01fSmrg # would be equivalent was wrong. It would break on at least 46784642e01fSmrg # Digital Unix and AIX. 46794642e01fSmrg continue 46804642e01fSmrg ;; 468105b261ecSmrg 46824642e01fSmrg -thread-safe) 46834642e01fSmrg thread_safe=yes 46844642e01fSmrg continue 46854642e01fSmrg ;; 468605b261ecSmrg 46874642e01fSmrg -version-info) 46884642e01fSmrg prev=vinfo 46894642e01fSmrg continue 46904642e01fSmrg ;; 469105b261ecSmrg 46924642e01fSmrg -version-number) 46934642e01fSmrg prev=vinfo 46944642e01fSmrg vinfo_number=yes 46954642e01fSmrg continue 46964642e01fSmrg ;; 469705b261ecSmrg 46984642e01fSmrg -weak) 46994642e01fSmrg prev=weak 47004642e01fSmrg continue 47014642e01fSmrg ;; 470205b261ecSmrg 47034642e01fSmrg -Wc,*) 47044642e01fSmrg func_stripname '-Wc,' '' "$arg" 47054642e01fSmrg args=$func_stripname_result 47064642e01fSmrg arg= 47074642e01fSmrg save_ifs="$IFS"; IFS=',' 47084642e01fSmrg for flag in $args; do 47094642e01fSmrg IFS="$save_ifs" 47104642e01fSmrg func_quote_for_eval "$flag" 47114642e01fSmrg arg="$arg $wl$func_quote_for_eval_result" 47124642e01fSmrg compiler_flags="$compiler_flags $func_quote_for_eval_result" 47134642e01fSmrg done 47144642e01fSmrg IFS="$save_ifs" 47154642e01fSmrg func_stripname ' ' '' "$arg" 47164642e01fSmrg arg=$func_stripname_result 47174642e01fSmrg ;; 471805b261ecSmrg 47194642e01fSmrg -Wl,*) 47204642e01fSmrg func_stripname '-Wl,' '' "$arg" 47214642e01fSmrg args=$func_stripname_result 47224642e01fSmrg arg= 47234642e01fSmrg save_ifs="$IFS"; IFS=',' 47244642e01fSmrg for flag in $args; do 47254642e01fSmrg IFS="$save_ifs" 47264642e01fSmrg func_quote_for_eval "$flag" 47274642e01fSmrg arg="$arg $wl$func_quote_for_eval_result" 47284642e01fSmrg compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47294642e01fSmrg linker_flags="$linker_flags $func_quote_for_eval_result" 47304642e01fSmrg done 47314642e01fSmrg IFS="$save_ifs" 47324642e01fSmrg func_stripname ' ' '' "$arg" 47334642e01fSmrg arg=$func_stripname_result 47344642e01fSmrg ;; 473505b261ecSmrg 47364642e01fSmrg -Xcompiler) 47374642e01fSmrg prev=xcompiler 47384642e01fSmrg continue 47394642e01fSmrg ;; 474005b261ecSmrg 47414642e01fSmrg -Xlinker) 47424642e01fSmrg prev=xlinker 47434642e01fSmrg continue 47444642e01fSmrg ;; 474505b261ecSmrg 47464642e01fSmrg -XCClinker) 47474642e01fSmrg prev=xcclinker 47484642e01fSmrg continue 47494642e01fSmrg ;; 475005b261ecSmrg 47514642e01fSmrg # -msg_* for osf cc 47524642e01fSmrg -msg_*) 47534642e01fSmrg func_quote_for_eval "$arg" 47544642e01fSmrg arg="$func_quote_for_eval_result" 47554642e01fSmrg ;; 475605b261ecSmrg 47574642e01fSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47584642e01fSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 47594642e01fSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47604642e01fSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 47614642e01fSmrg # -q* pass through compiler args for the IBM compiler 47624642e01fSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 47634642e01fSmrg # compiler args for GCC 47644642e01fSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 47654642e01fSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47664642e01fSmrg # @file GCC response files 47674642e01fSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47684642e01fSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47694642e01fSmrg func_quote_for_eval "$arg" 47704642e01fSmrg arg="$func_quote_for_eval_result" 47714642e01fSmrg func_append compile_command " $arg" 47724642e01fSmrg func_append finalize_command " $arg" 47734642e01fSmrg compiler_flags="$compiler_flags $arg" 47744642e01fSmrg continue 47754642e01fSmrg ;; 477605b261ecSmrg 47774642e01fSmrg # Some other compiler flag. 47784642e01fSmrg -* | +*) 47794642e01fSmrg func_quote_for_eval "$arg" 47804642e01fSmrg arg="$func_quote_for_eval_result" 47814642e01fSmrg ;; 478205b261ecSmrg 47834642e01fSmrg *.$objext) 47844642e01fSmrg # A standard object. 47854642e01fSmrg objs="$objs $arg" 47864642e01fSmrg ;; 478705b261ecSmrg 47884642e01fSmrg *.lo) 47894642e01fSmrg # A libtool-controlled object. 479005b261ecSmrg 47914642e01fSmrg # Check to see that this really is a libtool object. 47924642e01fSmrg if func_lalib_unsafe_p "$arg"; then 47934642e01fSmrg pic_object= 47944642e01fSmrg non_pic_object= 479505b261ecSmrg 47964642e01fSmrg # Read the .lo file 47974642e01fSmrg func_source "$arg" 479805b261ecSmrg 47994642e01fSmrg if test -z "$pic_object" || 48004642e01fSmrg test -z "$non_pic_object" || 48014642e01fSmrg test "$pic_object" = none && 48024642e01fSmrg test "$non_pic_object" = none; then 48034642e01fSmrg func_fatal_error "cannot find name of object for \`$arg'" 48044642e01fSmrg fi 480505b261ecSmrg 48064642e01fSmrg # Extract subdirectory from the argument. 48074642e01fSmrg func_dirname "$arg" "/" "" 48084642e01fSmrg xdir="$func_dirname_result" 480905b261ecSmrg 48104642e01fSmrg if test "$pic_object" != none; then 48114642e01fSmrg # Prepend the subdirectory the object is found in. 48124642e01fSmrg pic_object="$xdir$pic_object" 481305b261ecSmrg 48144642e01fSmrg if test "$prev" = dlfiles; then 48154642e01fSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48164642e01fSmrg dlfiles="$dlfiles $pic_object" 48174642e01fSmrg prev= 48184642e01fSmrg continue 48194642e01fSmrg else 48204642e01fSmrg # If libtool objects are unsupported, then we need to preload. 48214642e01fSmrg prev=dlprefiles 48224642e01fSmrg fi 48234642e01fSmrg fi 482405b261ecSmrg 48254642e01fSmrg # CHECK ME: I think I busted this. -Ossama 48264642e01fSmrg if test "$prev" = dlprefiles; then 48274642e01fSmrg # Preload the old-style object. 48284642e01fSmrg dlprefiles="$dlprefiles $pic_object" 48294642e01fSmrg prev= 48304642e01fSmrg fi 483105b261ecSmrg 48324642e01fSmrg # A PIC object. 48334642e01fSmrg func_append libobjs " $pic_object" 48344642e01fSmrg arg="$pic_object" 48354642e01fSmrg fi 483605b261ecSmrg 48374642e01fSmrg # Non-PIC object. 48384642e01fSmrg if test "$non_pic_object" != none; then 48394642e01fSmrg # Prepend the subdirectory the object is found in. 48404642e01fSmrg non_pic_object="$xdir$non_pic_object" 484105b261ecSmrg 48424642e01fSmrg # A standard non-PIC object 48434642e01fSmrg func_append non_pic_objects " $non_pic_object" 48444642e01fSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 48454642e01fSmrg arg="$non_pic_object" 48464642e01fSmrg fi 48474642e01fSmrg else 48484642e01fSmrg # If the PIC object exists, use it instead. 48494642e01fSmrg # $xdir was prepended to $pic_object above. 48504642e01fSmrg non_pic_object="$pic_object" 48514642e01fSmrg func_append non_pic_objects " $non_pic_object" 48524642e01fSmrg fi 48534642e01fSmrg else 48544642e01fSmrg # Only an error if not doing a dry-run. 48554642e01fSmrg if $opt_dry_run; then 48564642e01fSmrg # Extract subdirectory from the argument. 48574642e01fSmrg func_dirname "$arg" "/" "" 48584642e01fSmrg xdir="$func_dirname_result" 48594642e01fSmrg 48604642e01fSmrg func_lo2o "$arg" 48614642e01fSmrg pic_object=$xdir$objdir/$func_lo2o_result 48624642e01fSmrg non_pic_object=$xdir$func_lo2o_result 48634642e01fSmrg func_append libobjs " $pic_object" 48644642e01fSmrg func_append non_pic_objects " $non_pic_object" 48654642e01fSmrg else 48664642e01fSmrg func_fatal_error "\`$arg' is not a valid libtool object" 48674642e01fSmrg fi 48684642e01fSmrg fi 48694642e01fSmrg ;; 48704642e01fSmrg 48714642e01fSmrg *.$libext) 48724642e01fSmrg # An archive. 48734642e01fSmrg deplibs="$deplibs $arg" 48744642e01fSmrg old_deplibs="$old_deplibs $arg" 48754642e01fSmrg continue 48764642e01fSmrg ;; 48774642e01fSmrg 48784642e01fSmrg *.la) 48794642e01fSmrg # A libtool-controlled library. 48804642e01fSmrg 48814642e01fSmrg if test "$prev" = dlfiles; then 48824642e01fSmrg # This library was specified with -dlopen. 48834642e01fSmrg dlfiles="$dlfiles $arg" 48844642e01fSmrg prev= 48854642e01fSmrg elif test "$prev" = dlprefiles; then 48864642e01fSmrg # The library was specified with -dlpreopen. 48874642e01fSmrg dlprefiles="$dlprefiles $arg" 48884642e01fSmrg prev= 48894642e01fSmrg else 48904642e01fSmrg deplibs="$deplibs $arg" 48914642e01fSmrg fi 48924642e01fSmrg continue 48934642e01fSmrg ;; 48944642e01fSmrg 48954642e01fSmrg # Some other compiler argument. 48964642e01fSmrg *) 48974642e01fSmrg # Unknown arguments in both finalize_command and compile_command need 48984642e01fSmrg # to be aesthetically quoted because they are evaled later. 48994642e01fSmrg func_quote_for_eval "$arg" 49004642e01fSmrg arg="$func_quote_for_eval_result" 49014642e01fSmrg ;; 49024642e01fSmrg esac # arg 49034642e01fSmrg 49044642e01fSmrg # Now actually substitute the argument into the commands. 49054642e01fSmrg if test -n "$arg"; then 49064642e01fSmrg func_append compile_command " $arg" 49074642e01fSmrg func_append finalize_command " $arg" 49084642e01fSmrg fi 49094642e01fSmrg done # argument parsing loop 49104642e01fSmrg 49114642e01fSmrg test -n "$prev" && \ 49124642e01fSmrg func_fatal_help "the \`$prevarg' option requires an argument" 49134642e01fSmrg 49144642e01fSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49154642e01fSmrg eval arg=\"$export_dynamic_flag_spec\" 49164642e01fSmrg func_append compile_command " $arg" 49174642e01fSmrg func_append finalize_command " $arg" 49184642e01fSmrg fi 49194642e01fSmrg 49204642e01fSmrg oldlibs= 49214642e01fSmrg # calculate the name of the file, without its directory 49224642e01fSmrg func_basename "$output" 49234642e01fSmrg outputname="$func_basename_result" 49244642e01fSmrg libobjs_save="$libobjs" 49254642e01fSmrg 49264642e01fSmrg if test -n "$shlibpath_var"; then 49274642e01fSmrg # get the directories listed in $shlibpath_var 49284642e01fSmrg eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49294642e01fSmrg else 49304642e01fSmrg shlib_search_path= 49314642e01fSmrg fi 49324642e01fSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49334642e01fSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49344642e01fSmrg 49354642e01fSmrg func_dirname "$output" "/" "" 49364642e01fSmrg output_objdir="$func_dirname_result$objdir" 49374642e01fSmrg # Create the object directory. 49384642e01fSmrg func_mkdir_p "$output_objdir" 49394642e01fSmrg 49404642e01fSmrg # Determine the type of output 49414642e01fSmrg case $output in 49424642e01fSmrg "") 49434642e01fSmrg func_fatal_help "you must specify an output file" 49444642e01fSmrg ;; 49454642e01fSmrg *.$libext) linkmode=oldlib ;; 49464642e01fSmrg *.lo | *.$objext) linkmode=obj ;; 49474642e01fSmrg *.la) linkmode=lib ;; 49484642e01fSmrg *) linkmode=prog ;; # Anything else should be a program. 49494642e01fSmrg esac 49504642e01fSmrg 49514642e01fSmrg specialdeplibs= 49524642e01fSmrg 49534642e01fSmrg libs= 49544642e01fSmrg # Find all interdependent deplibs by searching for libraries 49554642e01fSmrg # that are linked more than once (e.g. -la -lb -la) 49564642e01fSmrg for deplib in $deplibs; do 49574642e01fSmrg if $opt_duplicate_deps ; then 49584642e01fSmrg case "$libs " in 49594642e01fSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49604642e01fSmrg esac 49614642e01fSmrg fi 49624642e01fSmrg libs="$libs $deplib" 49634642e01fSmrg done 49644642e01fSmrg 49654642e01fSmrg if test "$linkmode" = lib; then 49664642e01fSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 49674642e01fSmrg 49684642e01fSmrg # Compute libraries that are listed more than once in $predeps 49694642e01fSmrg # $postdeps and mark them as special (i.e., whose duplicates are 49704642e01fSmrg # not to be eliminated). 49714642e01fSmrg pre_post_deps= 49724642e01fSmrg if $opt_duplicate_compiler_generated_deps; then 49734642e01fSmrg for pre_post_dep in $predeps $postdeps; do 49744642e01fSmrg case "$pre_post_deps " in 49754642e01fSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49764642e01fSmrg esac 49774642e01fSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 49784642e01fSmrg done 49794642e01fSmrg fi 49804642e01fSmrg pre_post_deps= 49814642e01fSmrg fi 49824642e01fSmrg 49834642e01fSmrg deplibs= 49844642e01fSmrg newdependency_libs= 49854642e01fSmrg newlib_search_path= 49864642e01fSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 49874642e01fSmrg notinst_deplibs= # not-installed libtool libraries 49884642e01fSmrg notinst_path= # paths that contain not-installed libtool libraries 49894642e01fSmrg 49904642e01fSmrg case $linkmode in 49914642e01fSmrg lib) 49924642e01fSmrg passes="conv dlpreopen link" 49934642e01fSmrg for file in $dlfiles $dlprefiles; do 49944642e01fSmrg case $file in 49954642e01fSmrg *.la) ;; 49964642e01fSmrg *) 49974642e01fSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49984642e01fSmrg ;; 49994642e01fSmrg esac 50004642e01fSmrg done 50014642e01fSmrg ;; 50024642e01fSmrg prog) 50034642e01fSmrg compile_deplibs= 50044642e01fSmrg finalize_deplibs= 50054642e01fSmrg alldeplibs=no 50064642e01fSmrg newdlfiles= 50074642e01fSmrg newdlprefiles= 50084642e01fSmrg passes="conv scan dlopen dlpreopen link" 50094642e01fSmrg ;; 50104642e01fSmrg *) passes="conv" 50114642e01fSmrg ;; 50124642e01fSmrg esac 50134642e01fSmrg 50144642e01fSmrg for pass in $passes; do 50154642e01fSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 50164642e01fSmrg # so that -L comes before libs that need it for instance... 50174642e01fSmrg if test "$linkmode,$pass" = "lib,link"; then 50184642e01fSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 50194642e01fSmrg ## order, and fix it there properly 50204642e01fSmrg tmp_deplibs= 50214642e01fSmrg for deplib in $deplibs; do 50224642e01fSmrg tmp_deplibs="$deplib $tmp_deplibs" 50234642e01fSmrg done 50244642e01fSmrg deplibs="$tmp_deplibs" 50254642e01fSmrg fi 50264642e01fSmrg 50274642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 50284642e01fSmrg test "$linkmode,$pass" = "prog,scan"; then 50294642e01fSmrg libs="$deplibs" 50304642e01fSmrg deplibs= 50314642e01fSmrg fi 50324642e01fSmrg if test "$linkmode" = prog; then 50334642e01fSmrg case $pass in 50344642e01fSmrg dlopen) libs="$dlfiles" ;; 50354642e01fSmrg dlpreopen) libs="$dlprefiles" ;; 50364642e01fSmrg link) 50374642e01fSmrg libs="$deplibs %DEPLIBS%" 50384642e01fSmrg test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 50394642e01fSmrg ;; 50404642e01fSmrg esac 50414642e01fSmrg fi 50424642e01fSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 50434642e01fSmrg # Collect and forward deplibs of preopened libtool libs 50444642e01fSmrg for lib in $dlprefiles; do 50454642e01fSmrg # Ignore non-libtool-libs 50464642e01fSmrg dependency_libs= 50474642e01fSmrg case $lib in 50484642e01fSmrg *.la) func_source "$lib" ;; 50494642e01fSmrg esac 50504642e01fSmrg 50514642e01fSmrg # Collect preopened libtool deplibs, except any this library 50524642e01fSmrg # has declared as weak libs 50534642e01fSmrg for deplib in $dependency_libs; do 50544642e01fSmrg deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50554642e01fSmrg case " $weak_libs " in 50564642e01fSmrg *" $deplib_base "*) ;; 50574642e01fSmrg *) deplibs="$deplibs $deplib" ;; 50584642e01fSmrg esac 50594642e01fSmrg done 50604642e01fSmrg done 50614642e01fSmrg libs="$dlprefiles" 50624642e01fSmrg fi 50634642e01fSmrg if test "$pass" = dlopen; then 50644642e01fSmrg # Collect dlpreopened libraries 50654642e01fSmrg save_deplibs="$deplibs" 50664642e01fSmrg deplibs= 50674642e01fSmrg fi 50684642e01fSmrg 50694642e01fSmrg for deplib in $libs; do 50704642e01fSmrg lib= 50714642e01fSmrg found=no 50724642e01fSmrg case $deplib in 50734642e01fSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50744642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 50754642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 50764642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 50774642e01fSmrg else 50784642e01fSmrg compiler_flags="$compiler_flags $deplib" 50794642e01fSmrg if test "$linkmode" = lib ; then 50804642e01fSmrg case "$new_inherited_linker_flags " in 50814642e01fSmrg *" $deplib "*) ;; 50824642e01fSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50834642e01fSmrg esac 50844642e01fSmrg fi 50854642e01fSmrg fi 50864642e01fSmrg continue 50874642e01fSmrg ;; 50884642e01fSmrg -l*) 50894642e01fSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 50904642e01fSmrg func_warning "\`-l' is ignored for archives/objects" 50914642e01fSmrg continue 50924642e01fSmrg fi 50934642e01fSmrg func_stripname '-l' '' "$deplib" 50944642e01fSmrg name=$func_stripname_result 50954642e01fSmrg if test "$linkmode" = lib; then 50964642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50974642e01fSmrg else 50984642e01fSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50994642e01fSmrg fi 51004642e01fSmrg for searchdir in $searchdirs; do 51014642e01fSmrg for search_ext in .la $std_shrext .so .a; do 51024642e01fSmrg # Search the libtool library 51034642e01fSmrg lib="$searchdir/lib${name}${search_ext}" 51044642e01fSmrg if test -f "$lib"; then 51054642e01fSmrg if test "$search_ext" = ".la"; then 51064642e01fSmrg found=yes 51074642e01fSmrg else 51084642e01fSmrg found=no 51094642e01fSmrg fi 51104642e01fSmrg break 2 51114642e01fSmrg fi 51124642e01fSmrg done 51134642e01fSmrg done 51144642e01fSmrg if test "$found" != yes; then 51154642e01fSmrg # deplib doesn't seem to be a libtool library 51164642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 51174642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 51184642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 51194642e01fSmrg else 51204642e01fSmrg deplibs="$deplib $deplibs" 51214642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51224642e01fSmrg fi 51234642e01fSmrg continue 51244642e01fSmrg else # deplib is a libtool library 51254642e01fSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51264642e01fSmrg # We need to do some special things here, and not later. 51274642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51284642e01fSmrg case " $predeps $postdeps " in 51294642e01fSmrg *" $deplib "*) 51304642e01fSmrg if func_lalib_p "$lib"; then 51314642e01fSmrg library_names= 51324642e01fSmrg old_library= 51334642e01fSmrg func_source "$lib" 51344642e01fSmrg for l in $old_library $library_names; do 51354642e01fSmrg ll="$l" 51364642e01fSmrg done 51374642e01fSmrg if test "X$ll" = "X$old_library" ; then # only static version available 51384642e01fSmrg found=no 51394642e01fSmrg func_dirname "$lib" "" "." 51404642e01fSmrg ladir="$func_dirname_result" 51414642e01fSmrg lib=$ladir/$old_library 51424642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 51434642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 51444642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 51454642e01fSmrg else 51464642e01fSmrg deplibs="$deplib $deplibs" 51474642e01fSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51484642e01fSmrg fi 51494642e01fSmrg continue 51504642e01fSmrg fi 51514642e01fSmrg fi 51524642e01fSmrg ;; 51534642e01fSmrg *) ;; 51544642e01fSmrg esac 51554642e01fSmrg fi 51564642e01fSmrg fi 51574642e01fSmrg ;; # -l 51584642e01fSmrg *.ltframework) 51594642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 51604642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 51614642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 51624642e01fSmrg else 51634642e01fSmrg deplibs="$deplib $deplibs" 51644642e01fSmrg if test "$linkmode" = lib ; then 51654642e01fSmrg case "$new_inherited_linker_flags " in 51664642e01fSmrg *" $deplib "*) ;; 51674642e01fSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51684642e01fSmrg esac 51694642e01fSmrg fi 51704642e01fSmrg fi 51714642e01fSmrg continue 51724642e01fSmrg ;; 51734642e01fSmrg -L*) 51744642e01fSmrg case $linkmode in 51754642e01fSmrg lib) 51764642e01fSmrg deplibs="$deplib $deplibs" 51774642e01fSmrg test "$pass" = conv && continue 51784642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 51794642e01fSmrg func_stripname '-L' '' "$deplib" 51804642e01fSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 51814642e01fSmrg ;; 51824642e01fSmrg prog) 51834642e01fSmrg if test "$pass" = conv; then 51844642e01fSmrg deplibs="$deplib $deplibs" 51854642e01fSmrg continue 51864642e01fSmrg fi 51874642e01fSmrg if test "$pass" = scan; then 51884642e01fSmrg deplibs="$deplib $deplibs" 51894642e01fSmrg else 51904642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 51914642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 51924642e01fSmrg fi 51934642e01fSmrg func_stripname '-L' '' "$deplib" 51944642e01fSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 51954642e01fSmrg ;; 51964642e01fSmrg *) 51974642e01fSmrg func_warning "\`-L' is ignored for archives/objects" 51984642e01fSmrg ;; 51994642e01fSmrg esac # linkmode 52004642e01fSmrg continue 52014642e01fSmrg ;; # -L 52024642e01fSmrg -R*) 52034642e01fSmrg if test "$pass" = link; then 52044642e01fSmrg func_stripname '-R' '' "$deplib" 52054642e01fSmrg dir=$func_stripname_result 52064642e01fSmrg # Make sure the xrpath contains only unique directories. 52074642e01fSmrg case "$xrpath " in 52084642e01fSmrg *" $dir "*) ;; 52094642e01fSmrg *) xrpath="$xrpath $dir" ;; 52104642e01fSmrg esac 52114642e01fSmrg fi 52124642e01fSmrg deplibs="$deplib $deplibs" 52134642e01fSmrg continue 52144642e01fSmrg ;; 52154642e01fSmrg *.la) lib="$deplib" ;; 52164642e01fSmrg *.$libext) 52174642e01fSmrg if test "$pass" = conv; then 52184642e01fSmrg deplibs="$deplib $deplibs" 52194642e01fSmrg continue 52204642e01fSmrg fi 52214642e01fSmrg case $linkmode in 52224642e01fSmrg lib) 52234642e01fSmrg # Linking convenience modules into shared libraries is allowed, 52244642e01fSmrg # but linking other static libraries is non-portable. 52254642e01fSmrg case " $dlpreconveniencelibs " in 52264642e01fSmrg *" $deplib "*) ;; 52274642e01fSmrg *) 52284642e01fSmrg valid_a_lib=no 52294642e01fSmrg case $deplibs_check_method in 52304642e01fSmrg match_pattern*) 52314642e01fSmrg set dummy $deplibs_check_method; shift 52324642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52334642e01fSmrg if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52344642e01fSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 52354642e01fSmrg valid_a_lib=yes 52364642e01fSmrg fi 52374642e01fSmrg ;; 52384642e01fSmrg pass_all) 52394642e01fSmrg valid_a_lib=yes 52404642e01fSmrg ;; 52414642e01fSmrg esac 52424642e01fSmrg if test "$valid_a_lib" != yes; then 52434642e01fSmrg $ECHO 52444642e01fSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52454642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 52464642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 52474642e01fSmrg $ECHO "*** shared version of the library, which you do not appear to have" 52484642e01fSmrg $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52494642e01fSmrg $ECHO "*** that it is just a static archive that I should not use here." 52504642e01fSmrg else 52514642e01fSmrg $ECHO 52524642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the" 52534642e01fSmrg $ECHO "*** static library $deplib is not portable!" 52544642e01fSmrg deplibs="$deplib $deplibs" 52554642e01fSmrg fi 52564642e01fSmrg ;; 52574642e01fSmrg esac 52584642e01fSmrg continue 52594642e01fSmrg ;; 52604642e01fSmrg prog) 52614642e01fSmrg if test "$pass" != link; then 52624642e01fSmrg deplibs="$deplib $deplibs" 52634642e01fSmrg else 52644642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 52654642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 52664642e01fSmrg fi 52674642e01fSmrg continue 52684642e01fSmrg ;; 52694642e01fSmrg esac # linkmode 52704642e01fSmrg ;; # *.$libext 52714642e01fSmrg *.lo | *.$objext) 52724642e01fSmrg if test "$pass" = conv; then 52734642e01fSmrg deplibs="$deplib $deplibs" 52744642e01fSmrg elif test "$linkmode" = prog; then 52754642e01fSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52764642e01fSmrg # If there is no dlopen support or we're linking statically, 52774642e01fSmrg # we need to preload. 52784642e01fSmrg newdlprefiles="$newdlprefiles $deplib" 52794642e01fSmrg compile_deplibs="$deplib $compile_deplibs" 52804642e01fSmrg finalize_deplibs="$deplib $finalize_deplibs" 52814642e01fSmrg else 52824642e01fSmrg newdlfiles="$newdlfiles $deplib" 52834642e01fSmrg fi 52844642e01fSmrg fi 52854642e01fSmrg continue 52864642e01fSmrg ;; 52874642e01fSmrg %DEPLIBS%) 52884642e01fSmrg alldeplibs=yes 52894642e01fSmrg continue 52904642e01fSmrg ;; 52914642e01fSmrg esac # case $deplib 52924642e01fSmrg 52934642e01fSmrg if test "$found" = yes || test -f "$lib"; then : 52944642e01fSmrg else 52954642e01fSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52964642e01fSmrg fi 52974642e01fSmrg 52984642e01fSmrg # Check to see that this really is a libtool archive. 52994642e01fSmrg func_lalib_unsafe_p "$lib" \ 53004642e01fSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 53014642e01fSmrg 53024642e01fSmrg func_dirname "$lib" "" "." 53034642e01fSmrg ladir="$func_dirname_result" 53044642e01fSmrg 53054642e01fSmrg dlname= 53064642e01fSmrg dlopen= 53074642e01fSmrg dlpreopen= 53084642e01fSmrg libdir= 53094642e01fSmrg library_names= 53104642e01fSmrg old_library= 53114642e01fSmrg inherited_linker_flags= 53124642e01fSmrg # If the library was installed with an old release of libtool, 53134642e01fSmrg # it will not redefine variables installed, or shouldnotlink 53144642e01fSmrg installed=yes 53154642e01fSmrg shouldnotlink=no 53164642e01fSmrg avoidtemprpath= 53174642e01fSmrg 53184642e01fSmrg 53194642e01fSmrg # Read the .la file 53204642e01fSmrg func_source "$lib" 53214642e01fSmrg 53224642e01fSmrg # Convert "-framework foo" to "foo.ltframework" 53234642e01fSmrg if test -n "$inherited_linker_flags"; then 53244642e01fSmrg tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53254642e01fSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53264642e01fSmrg case " $new_inherited_linker_flags " in 53274642e01fSmrg *" $tmp_inherited_linker_flag "*) ;; 53284642e01fSmrg *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53294642e01fSmrg esac 53304642e01fSmrg done 53314642e01fSmrg fi 53324642e01fSmrg dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53334642e01fSmrg if test "$linkmode,$pass" = "lib,link" || 53344642e01fSmrg test "$linkmode,$pass" = "prog,scan" || 53354642e01fSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53364642e01fSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53374642e01fSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53384642e01fSmrg fi 53394642e01fSmrg 53404642e01fSmrg if test "$pass" = conv; then 53414642e01fSmrg # Only check for convenience libraries 53424642e01fSmrg deplibs="$lib $deplibs" 53434642e01fSmrg if test -z "$libdir"; then 53444642e01fSmrg if test -z "$old_library"; then 53454642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 53464642e01fSmrg fi 53474642e01fSmrg # It is a libtool convenience library, so add in its objects. 53484642e01fSmrg convenience="$convenience $ladir/$objdir/$old_library" 53494642e01fSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 53504642e01fSmrg tmp_libs= 53514642e01fSmrg for deplib in $dependency_libs; do 53524642e01fSmrg deplibs="$deplib $deplibs" 53534642e01fSmrg if $opt_duplicate_deps ; then 53544642e01fSmrg case "$tmp_libs " in 53554642e01fSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53564642e01fSmrg esac 53574642e01fSmrg fi 53584642e01fSmrg tmp_libs="$tmp_libs $deplib" 53594642e01fSmrg done 53604642e01fSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 53614642e01fSmrg func_fatal_error "\`$lib' is not a convenience library" 53624642e01fSmrg fi 53634642e01fSmrg continue 53644642e01fSmrg fi # $pass = conv 53654642e01fSmrg 53664642e01fSmrg 53674642e01fSmrg # Get the name of the library we link against. 53684642e01fSmrg linklib= 53694642e01fSmrg for l in $old_library $library_names; do 53704642e01fSmrg linklib="$l" 53714642e01fSmrg done 53724642e01fSmrg if test -z "$linklib"; then 53734642e01fSmrg func_fatal_error "cannot find name of link library for \`$lib'" 53744642e01fSmrg fi 53754642e01fSmrg 53764642e01fSmrg # This library was specified with -dlopen. 53774642e01fSmrg if test "$pass" = dlopen; then 53784642e01fSmrg if test -z "$libdir"; then 53794642e01fSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53804642e01fSmrg fi 53814642e01fSmrg if test -z "$dlname" || 53824642e01fSmrg test "$dlopen_support" != yes || 53834642e01fSmrg test "$build_libtool_libs" = no; then 53844642e01fSmrg # If there is no dlname, no dlopen support or we're linking 53854642e01fSmrg # statically, we need to preload. We also need to preload any 53864642e01fSmrg # dependent libraries so libltdl's deplib preloader doesn't 53874642e01fSmrg # bomb out in the load deplibs phase. 53884642e01fSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 53894642e01fSmrg else 53904642e01fSmrg newdlfiles="$newdlfiles $lib" 53914642e01fSmrg fi 53924642e01fSmrg continue 53934642e01fSmrg fi # $pass = dlopen 53944642e01fSmrg 53954642e01fSmrg # We need an absolute path. 53964642e01fSmrg case $ladir in 53974642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53984642e01fSmrg *) 53994642e01fSmrg abs_ladir=`cd "$ladir" && pwd` 54004642e01fSmrg if test -z "$abs_ladir"; then 54014642e01fSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 54024642e01fSmrg func_warning "passing it literally to the linker, although it might fail" 54034642e01fSmrg abs_ladir="$ladir" 54044642e01fSmrg fi 54054642e01fSmrg ;; 54064642e01fSmrg esac 54074642e01fSmrg func_basename "$lib" 54084642e01fSmrg laname="$func_basename_result" 54094642e01fSmrg 54104642e01fSmrg # Find the relevant object directory and library name. 54114642e01fSmrg if test "X$installed" = Xyes; then 54124642e01fSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54134642e01fSmrg func_warning "library \`$lib' was moved." 54144642e01fSmrg dir="$ladir" 54154642e01fSmrg absdir="$abs_ladir" 54164642e01fSmrg libdir="$abs_ladir" 54174642e01fSmrg else 54184642e01fSmrg dir="$libdir" 54194642e01fSmrg absdir="$libdir" 54204642e01fSmrg fi 54214642e01fSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54224642e01fSmrg else 54234642e01fSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54244642e01fSmrg dir="$ladir" 54254642e01fSmrg absdir="$abs_ladir" 54264642e01fSmrg # Remove this search path later 54274642e01fSmrg notinst_path="$notinst_path $abs_ladir" 54284642e01fSmrg else 54294642e01fSmrg dir="$ladir/$objdir" 54304642e01fSmrg absdir="$abs_ladir/$objdir" 54314642e01fSmrg # Remove this search path later 54324642e01fSmrg notinst_path="$notinst_path $abs_ladir" 54334642e01fSmrg fi 54344642e01fSmrg fi # $installed = yes 54354642e01fSmrg func_stripname 'lib' '.la' "$laname" 54364642e01fSmrg name=$func_stripname_result 54374642e01fSmrg 54384642e01fSmrg # This library was specified with -dlpreopen. 54394642e01fSmrg if test "$pass" = dlpreopen; then 54404642e01fSmrg if test -z "$libdir" && test "$linkmode" = prog; then 54414642e01fSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54424642e01fSmrg fi 54434642e01fSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 54444642e01fSmrg # are required to link). 54454642e01fSmrg if test -n "$old_library"; then 54464642e01fSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 54474642e01fSmrg # Keep a list of preopened convenience libraries to check 54484642e01fSmrg # that they are being used correctly in the link pass. 54494642e01fSmrg test -z "$libdir" && \ 54504642e01fSmrg dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54514642e01fSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 54524642e01fSmrg elif test -n "$dlname"; then 54534642e01fSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 54544642e01fSmrg else 54554642e01fSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 54564642e01fSmrg fi 54574642e01fSmrg fi # $pass = dlpreopen 54584642e01fSmrg 54594642e01fSmrg if test -z "$libdir"; then 54604642e01fSmrg # Link the convenience library 54614642e01fSmrg if test "$linkmode" = lib; then 54624642e01fSmrg deplibs="$dir/$old_library $deplibs" 54634642e01fSmrg elif test "$linkmode,$pass" = "prog,link"; then 54644642e01fSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 54654642e01fSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 54664642e01fSmrg else 54674642e01fSmrg deplibs="$lib $deplibs" # used for prog,scan pass 54684642e01fSmrg fi 54694642e01fSmrg continue 54704642e01fSmrg fi 54714642e01fSmrg 54724642e01fSmrg 54734642e01fSmrg if test "$linkmode" = prog && test "$pass" != link; then 54744642e01fSmrg newlib_search_path="$newlib_search_path $ladir" 54754642e01fSmrg deplibs="$lib $deplibs" 54764642e01fSmrg 54774642e01fSmrg linkalldeplibs=no 54784642e01fSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 54794642e01fSmrg test "$build_libtool_libs" = no; then 54804642e01fSmrg linkalldeplibs=yes 54814642e01fSmrg fi 54824642e01fSmrg 54834642e01fSmrg tmp_libs= 54844642e01fSmrg for deplib in $dependency_libs; do 54854642e01fSmrg case $deplib in 54864642e01fSmrg -L*) func_stripname '-L' '' "$deplib" 54874642e01fSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 54884642e01fSmrg ;; 54894642e01fSmrg esac 54904642e01fSmrg # Need to link against all dependency_libs? 54914642e01fSmrg if test "$linkalldeplibs" = yes; then 54924642e01fSmrg deplibs="$deplib $deplibs" 54934642e01fSmrg else 54944642e01fSmrg # Need to hardcode shared library paths 54954642e01fSmrg # or/and link against static libraries 54964642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 54974642e01fSmrg fi 54984642e01fSmrg if $opt_duplicate_deps ; then 54994642e01fSmrg case "$tmp_libs " in 55004642e01fSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 55014642e01fSmrg esac 55024642e01fSmrg fi 55034642e01fSmrg tmp_libs="$tmp_libs $deplib" 55044642e01fSmrg done # for deplib 55054642e01fSmrg continue 55064642e01fSmrg fi # $linkmode = prog... 55074642e01fSmrg 55084642e01fSmrg if test "$linkmode,$pass" = "prog,link"; then 55094642e01fSmrg if test -n "$library_names" && 55104642e01fSmrg { { test "$prefer_static_libs" = no || 55114642e01fSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 55124642e01fSmrg test -z "$old_library"; }; then 55134642e01fSmrg # We need to hardcode the library path 55144642e01fSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55154642e01fSmrg # Make sure the rpath contains only unique directories. 55164642e01fSmrg case "$temp_rpath:" in 55174642e01fSmrg *"$absdir:"*) ;; 55184642e01fSmrg *) temp_rpath="$temp_rpath$absdir:" ;; 55194642e01fSmrg esac 55204642e01fSmrg fi 55214642e01fSmrg 55224642e01fSmrg # Hardcode the library path. 55234642e01fSmrg # Skip directories that are in the system default run-time 55244642e01fSmrg # search path. 55254642e01fSmrg case " $sys_lib_dlsearch_path " in 55264642e01fSmrg *" $absdir "*) ;; 55274642e01fSmrg *) 55284642e01fSmrg case "$compile_rpath " in 55294642e01fSmrg *" $absdir "*) ;; 55304642e01fSmrg *) compile_rpath="$compile_rpath $absdir" 55314642e01fSmrg esac 55324642e01fSmrg ;; 55334642e01fSmrg esac 55344642e01fSmrg case " $sys_lib_dlsearch_path " in 55354642e01fSmrg *" $libdir "*) ;; 55364642e01fSmrg *) 55374642e01fSmrg case "$finalize_rpath " in 55384642e01fSmrg *" $libdir "*) ;; 55394642e01fSmrg *) finalize_rpath="$finalize_rpath $libdir" 55404642e01fSmrg esac 55414642e01fSmrg ;; 55424642e01fSmrg esac 55434642e01fSmrg fi # $linkmode,$pass = prog,link... 55444642e01fSmrg 55454642e01fSmrg if test "$alldeplibs" = yes && 55464642e01fSmrg { test "$deplibs_check_method" = pass_all || 55474642e01fSmrg { test "$build_libtool_libs" = yes && 55484642e01fSmrg test -n "$library_names"; }; }; then 55494642e01fSmrg # We only need to search for static libraries 55504642e01fSmrg continue 55514642e01fSmrg fi 55524642e01fSmrg fi 55534642e01fSmrg 55544642e01fSmrg link_static=no # Whether the deplib will be linked statically 55554642e01fSmrg use_static_libs=$prefer_static_libs 55564642e01fSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 55574642e01fSmrg use_static_libs=no 55584642e01fSmrg fi 55594642e01fSmrg if test -n "$library_names" && 55604642e01fSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 55614642e01fSmrg case $host in 55624642e01fSmrg *cygwin* | *mingw* | *cegcc*) 55634642e01fSmrg # No point in relinking DLLs because paths are not encoded 55644642e01fSmrg notinst_deplibs="$notinst_deplibs $lib" 55654642e01fSmrg need_relink=no 55664642e01fSmrg ;; 55674642e01fSmrg *) 55684642e01fSmrg if test "$installed" = no; then 55694642e01fSmrg notinst_deplibs="$notinst_deplibs $lib" 55704642e01fSmrg need_relink=yes 55714642e01fSmrg fi 55724642e01fSmrg ;; 55734642e01fSmrg esac 55744642e01fSmrg # This is a shared library 55754642e01fSmrg 55764642e01fSmrg # Warn about portability, can't link against -module's on some 55774642e01fSmrg # systems (darwin). Don't bleat about dlopened modules though! 55784642e01fSmrg dlopenmodule="" 55794642e01fSmrg for dlpremoduletest in $dlprefiles; do 55804642e01fSmrg if test "X$dlpremoduletest" = "X$lib"; then 55814642e01fSmrg dlopenmodule="$dlpremoduletest" 55824642e01fSmrg break 55834642e01fSmrg fi 55844642e01fSmrg done 55854642e01fSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55864642e01fSmrg $ECHO 55874642e01fSmrg if test "$linkmode" = prog; then 55884642e01fSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 55894642e01fSmrg else 55904642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55914642e01fSmrg fi 55924642e01fSmrg $ECHO "*** $linklib is not portable!" 55934642e01fSmrg fi 55944642e01fSmrg if test "$linkmode" = lib && 55954642e01fSmrg test "$hardcode_into_libs" = yes; then 55964642e01fSmrg # Hardcode the library path. 55974642e01fSmrg # Skip directories that are in the system default run-time 55984642e01fSmrg # search path. 55994642e01fSmrg case " $sys_lib_dlsearch_path " in 56004642e01fSmrg *" $absdir "*) ;; 56014642e01fSmrg *) 56024642e01fSmrg case "$compile_rpath " in 56034642e01fSmrg *" $absdir "*) ;; 56044642e01fSmrg *) compile_rpath="$compile_rpath $absdir" 56054642e01fSmrg esac 56064642e01fSmrg ;; 56074642e01fSmrg esac 56084642e01fSmrg case " $sys_lib_dlsearch_path " in 56094642e01fSmrg *" $libdir "*) ;; 56104642e01fSmrg *) 56114642e01fSmrg case "$finalize_rpath " in 56124642e01fSmrg *" $libdir "*) ;; 56134642e01fSmrg *) finalize_rpath="$finalize_rpath $libdir" 56144642e01fSmrg esac 56154642e01fSmrg ;; 56164642e01fSmrg esac 56174642e01fSmrg fi 56184642e01fSmrg 56194642e01fSmrg if test -n "$old_archive_from_expsyms_cmds"; then 56204642e01fSmrg # figure out the soname 56214642e01fSmrg set dummy $library_names 56224642e01fSmrg shift 56234642e01fSmrg realname="$1" 56244642e01fSmrg shift 56254642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 56264642e01fSmrg # use dlname if we got it. it's perfectly good, no? 56274642e01fSmrg if test -n "$dlname"; then 56284642e01fSmrg soname="$dlname" 56294642e01fSmrg elif test -n "$soname_spec"; then 56304642e01fSmrg # bleh windows 56314642e01fSmrg case $host in 56324642e01fSmrg *cygwin* | mingw* | *cegcc*) 56334642e01fSmrg func_arith $current - $age 56344642e01fSmrg major=$func_arith_result 56354642e01fSmrg versuffix="-$major" 56364642e01fSmrg ;; 56374642e01fSmrg esac 56384642e01fSmrg eval soname=\"$soname_spec\" 56394642e01fSmrg else 56404642e01fSmrg soname="$realname" 56414642e01fSmrg fi 56424642e01fSmrg 56434642e01fSmrg # Make a new name for the extract_expsyms_cmds to use 56444642e01fSmrg soroot="$soname" 56454642e01fSmrg func_basename "$soroot" 56464642e01fSmrg soname="$func_basename_result" 56474642e01fSmrg func_stripname 'lib' '.dll' "$soname" 56484642e01fSmrg newlib=libimp-$func_stripname_result.a 56494642e01fSmrg 56504642e01fSmrg # If the library has no export list, then create one now 56514642e01fSmrg if test -f "$output_objdir/$soname-def"; then : 56524642e01fSmrg else 56534642e01fSmrg func_verbose "extracting exported symbol list from \`$soname'" 56544642e01fSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56554642e01fSmrg fi 56564642e01fSmrg 56574642e01fSmrg # Create $newlib 56584642e01fSmrg if test -f "$output_objdir/$newlib"; then :; else 56594642e01fSmrg func_verbose "generating import library for \`$soname'" 56604642e01fSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56614642e01fSmrg fi 56624642e01fSmrg # make sure the library variables are pointing to the new library 56634642e01fSmrg dir=$output_objdir 56644642e01fSmrg linklib=$newlib 56654642e01fSmrg fi # test -n "$old_archive_from_expsyms_cmds" 56664642e01fSmrg 56674642e01fSmrg if test "$linkmode" = prog || test "$mode" != relink; then 56684642e01fSmrg add_shlibpath= 56694642e01fSmrg add_dir= 56704642e01fSmrg add= 56714642e01fSmrg lib_linked=yes 56724642e01fSmrg case $hardcode_action in 56734642e01fSmrg immediate | unsupported) 56744642e01fSmrg if test "$hardcode_direct" = no; then 56754642e01fSmrg add="$dir/$linklib" 56764642e01fSmrg case $host in 56774642e01fSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56784642e01fSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56794642e01fSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56804642e01fSmrg *-*-unixware7*) add_dir="-L$dir" ;; 56814642e01fSmrg *-*-darwin* ) 56824642e01fSmrg # if the lib is a (non-dlopened) module then we can not 56834642e01fSmrg # link against it, someone is ignoring the earlier warnings 56844642e01fSmrg if /usr/bin/file -L $add 2> /dev/null | 56854642e01fSmrg $GREP ": [^:]* bundle" >/dev/null ; then 56864642e01fSmrg if test "X$dlopenmodule" != "X$lib"; then 56874642e01fSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56884642e01fSmrg if test -z "$old_library" ; then 56894642e01fSmrg $ECHO 56904642e01fSmrg $ECHO "*** And there doesn't seem to be a static archive available" 56914642e01fSmrg $ECHO "*** The link will probably fail, sorry" 56924642e01fSmrg else 56934642e01fSmrg add="$dir/$old_library" 56944642e01fSmrg fi 56954642e01fSmrg elif test -n "$old_library"; then 56964642e01fSmrg add="$dir/$old_library" 56974642e01fSmrg fi 56984642e01fSmrg fi 56994642e01fSmrg esac 57004642e01fSmrg elif test "$hardcode_minus_L" = no; then 57014642e01fSmrg case $host in 57024642e01fSmrg *-*-sunos*) add_shlibpath="$dir" ;; 57034642e01fSmrg esac 57044642e01fSmrg add_dir="-L$dir" 57054642e01fSmrg add="-l$name" 57064642e01fSmrg elif test "$hardcode_shlibpath_var" = no; then 57074642e01fSmrg add_shlibpath="$dir" 57084642e01fSmrg add="-l$name" 57094642e01fSmrg else 57104642e01fSmrg lib_linked=no 57114642e01fSmrg fi 57124642e01fSmrg ;; 57134642e01fSmrg relink) 57144642e01fSmrg if test "$hardcode_direct" = yes && 57154642e01fSmrg test "$hardcode_direct_absolute" = no; then 57164642e01fSmrg add="$dir/$linklib" 57174642e01fSmrg elif test "$hardcode_minus_L" = yes; then 57184642e01fSmrg add_dir="-L$dir" 57194642e01fSmrg # Try looking first in the location we're being installed to. 57204642e01fSmrg if test -n "$inst_prefix_dir"; then 57214642e01fSmrg case $libdir in 57224642e01fSmrg [\\/]*) 57234642e01fSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 57244642e01fSmrg ;; 57254642e01fSmrg esac 57264642e01fSmrg fi 57274642e01fSmrg add="-l$name" 57284642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 57294642e01fSmrg add_shlibpath="$dir" 57304642e01fSmrg add="-l$name" 57314642e01fSmrg else 57324642e01fSmrg lib_linked=no 57334642e01fSmrg fi 57344642e01fSmrg ;; 57354642e01fSmrg *) lib_linked=no ;; 57364642e01fSmrg esac 57374642e01fSmrg 57384642e01fSmrg if test "$lib_linked" != yes; then 57394642e01fSmrg func_fatal_configuration "unsupported hardcode properties" 57404642e01fSmrg fi 57414642e01fSmrg 57424642e01fSmrg if test -n "$add_shlibpath"; then 57434642e01fSmrg case :$compile_shlibpath: in 57444642e01fSmrg *":$add_shlibpath:"*) ;; 57454642e01fSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57464642e01fSmrg esac 57474642e01fSmrg fi 57484642e01fSmrg if test "$linkmode" = prog; then 57494642e01fSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57504642e01fSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 57514642e01fSmrg else 57524642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 57534642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 57544642e01fSmrg if test "$hardcode_direct" != yes && 57554642e01fSmrg test "$hardcode_minus_L" != yes && 57564642e01fSmrg test "$hardcode_shlibpath_var" = yes; then 57574642e01fSmrg case :$finalize_shlibpath: in 57584642e01fSmrg *":$libdir:"*) ;; 57594642e01fSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57604642e01fSmrg esac 57614642e01fSmrg fi 57624642e01fSmrg fi 57634642e01fSmrg fi 57644642e01fSmrg 57654642e01fSmrg if test "$linkmode" = prog || test "$mode" = relink; then 57664642e01fSmrg add_shlibpath= 57674642e01fSmrg add_dir= 57684642e01fSmrg add= 57694642e01fSmrg # Finalize command for both is simple: just hardcode it. 57704642e01fSmrg if test "$hardcode_direct" = yes && 57714642e01fSmrg test "$hardcode_direct_absolute" = no; then 57724642e01fSmrg add="$libdir/$linklib" 57734642e01fSmrg elif test "$hardcode_minus_L" = yes; then 57744642e01fSmrg add_dir="-L$libdir" 57754642e01fSmrg add="-l$name" 57764642e01fSmrg elif test "$hardcode_shlibpath_var" = yes; then 57774642e01fSmrg case :$finalize_shlibpath: in 57784642e01fSmrg *":$libdir:"*) ;; 57794642e01fSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57804642e01fSmrg esac 57814642e01fSmrg add="-l$name" 57824642e01fSmrg elif test "$hardcode_automatic" = yes; then 57834642e01fSmrg if test -n "$inst_prefix_dir" && 57844642e01fSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 57854642e01fSmrg add="$inst_prefix_dir$libdir/$linklib" 57864642e01fSmrg else 57874642e01fSmrg add="$libdir/$linklib" 57884642e01fSmrg fi 57894642e01fSmrg else 57904642e01fSmrg # We cannot seem to hardcode it, guess we'll fake it. 57914642e01fSmrg add_dir="-L$libdir" 57924642e01fSmrg # Try looking first in the location we're being installed to. 57934642e01fSmrg if test -n "$inst_prefix_dir"; then 57944642e01fSmrg case $libdir in 57954642e01fSmrg [\\/]*) 57964642e01fSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 57974642e01fSmrg ;; 57984642e01fSmrg esac 57994642e01fSmrg fi 58004642e01fSmrg add="-l$name" 58014642e01fSmrg fi 58024642e01fSmrg 58034642e01fSmrg if test "$linkmode" = prog; then 58044642e01fSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58054642e01fSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58064642e01fSmrg else 58074642e01fSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 58084642e01fSmrg test -n "$add" && deplibs="$add $deplibs" 58094642e01fSmrg fi 58104642e01fSmrg fi 58114642e01fSmrg elif test "$linkmode" = prog; then 58124642e01fSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 58134642e01fSmrg # is not unsupported. This is valid on all known static and 58144642e01fSmrg # shared platforms. 58154642e01fSmrg if test "$hardcode_direct" != unsupported; then 58164642e01fSmrg test -n "$old_library" && linklib="$old_library" 58174642e01fSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 58184642e01fSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 58194642e01fSmrg else 58204642e01fSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 58214642e01fSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58224642e01fSmrg fi 58234642e01fSmrg elif test "$build_libtool_libs" = yes; then 58244642e01fSmrg # Not a shared library 58254642e01fSmrg if test "$deplibs_check_method" != pass_all; then 58264642e01fSmrg # We're trying link a shared library against a static one 58274642e01fSmrg # but the system doesn't support it. 58284642e01fSmrg 58294642e01fSmrg # Just print a warning and add the library to dependency_libs so 58304642e01fSmrg # that the program can be linked against the static library. 58314642e01fSmrg $ECHO 58324642e01fSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 58334642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 58344642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 58354642e01fSmrg $ECHO "*** shared version of the library, which you do not appear to have." 58364642e01fSmrg if test "$module" = yes; then 58374642e01fSmrg $ECHO "*** But as you try to build a module library, libtool will still create " 58384642e01fSmrg $ECHO "*** a static module, that should work as long as the dlopening application" 58394642e01fSmrg $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58404642e01fSmrg if test -z "$global_symbol_pipe"; then 58414642e01fSmrg $ECHO 58424642e01fSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 58434642e01fSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58444642e01fSmrg $ECHO "*** not find such a program. So, this module is probably useless." 58454642e01fSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58464642e01fSmrg fi 58474642e01fSmrg if test "$build_old_libs" = no; then 58484642e01fSmrg build_libtool_libs=module 58494642e01fSmrg build_old_libs=yes 58504642e01fSmrg else 58514642e01fSmrg build_libtool_libs=no 58524642e01fSmrg fi 58534642e01fSmrg fi 58544642e01fSmrg else 58554642e01fSmrg deplibs="$dir/$old_library $deplibs" 58564642e01fSmrg link_static=yes 58574642e01fSmrg fi 58584642e01fSmrg fi # link shared/static library? 58594642e01fSmrg 58604642e01fSmrg if test "$linkmode" = lib; then 58614642e01fSmrg if test -n "$dependency_libs" && 58624642e01fSmrg { test "$hardcode_into_libs" != yes || 58634642e01fSmrg test "$build_old_libs" = yes || 58644642e01fSmrg test "$link_static" = yes; }; then 58654642e01fSmrg # Extract -R from dependency_libs 58664642e01fSmrg temp_deplibs= 58674642e01fSmrg for libdir in $dependency_libs; do 58684642e01fSmrg case $libdir in 58694642e01fSmrg -R*) func_stripname '-R' '' "$libdir" 58704642e01fSmrg temp_xrpath=$func_stripname_result 58714642e01fSmrg case " $xrpath " in 58724642e01fSmrg *" $temp_xrpath "*) ;; 58734642e01fSmrg *) xrpath="$xrpath $temp_xrpath";; 58744642e01fSmrg esac;; 58754642e01fSmrg *) temp_deplibs="$temp_deplibs $libdir";; 58764642e01fSmrg esac 58774642e01fSmrg done 58784642e01fSmrg dependency_libs="$temp_deplibs" 58794642e01fSmrg fi 58804642e01fSmrg 58814642e01fSmrg newlib_search_path="$newlib_search_path $absdir" 58824642e01fSmrg # Link against this library 58834642e01fSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58844642e01fSmrg # ... and its dependency_libs 58854642e01fSmrg tmp_libs= 58864642e01fSmrg for deplib in $dependency_libs; do 58874642e01fSmrg newdependency_libs="$deplib $newdependency_libs" 58884642e01fSmrg if $opt_duplicate_deps ; then 58894642e01fSmrg case "$tmp_libs " in 58904642e01fSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58914642e01fSmrg esac 58924642e01fSmrg fi 58934642e01fSmrg tmp_libs="$tmp_libs $deplib" 58944642e01fSmrg done 58954642e01fSmrg 58964642e01fSmrg if test "$link_all_deplibs" != no; then 58974642e01fSmrg # Add the search paths of all dependency libraries 58984642e01fSmrg for deplib in $dependency_libs; do 58994642e01fSmrg path= 59004642e01fSmrg case $deplib in 59014642e01fSmrg -L*) path="$deplib" ;; 59024642e01fSmrg *.la) 59034642e01fSmrg func_dirname "$deplib" "" "." 59044642e01fSmrg dir="$func_dirname_result" 59054642e01fSmrg # We need an absolute path. 59064642e01fSmrg case $dir in 59074642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59084642e01fSmrg *) 59094642e01fSmrg absdir=`cd "$dir" && pwd` 59104642e01fSmrg if test -z "$absdir"; then 59114642e01fSmrg func_warning "cannot determine absolute directory name of \`$dir'" 59124642e01fSmrg absdir="$dir" 59134642e01fSmrg fi 59144642e01fSmrg ;; 59154642e01fSmrg esac 59164642e01fSmrg if $GREP "^installed=no" $deplib > /dev/null; then 59174642e01fSmrg case $host in 59184642e01fSmrg *-*-darwin*) 59194642e01fSmrg depdepl= 59204642e01fSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59214642e01fSmrg if test -n "$deplibrary_names" ; then 59224642e01fSmrg for tmp in $deplibrary_names ; do 59234642e01fSmrg depdepl=$tmp 59244642e01fSmrg done 59254642e01fSmrg if test -f "$absdir/$objdir/$depdepl" ; then 59264642e01fSmrg depdepl="$absdir/$objdir/$depdepl" 59274642e01fSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59284642e01fSmrg if test -z "$darwin_install_name"; then 59294642e01fSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59304642e01fSmrg fi 59314642e01fSmrg compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59324642e01fSmrg linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59334642e01fSmrg path= 59344642e01fSmrg fi 59354642e01fSmrg fi 59364642e01fSmrg ;; 59374642e01fSmrg *) 59384642e01fSmrg path="-L$absdir/$objdir" 59394642e01fSmrg ;; 59404642e01fSmrg esac 59414642e01fSmrg else 59424642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59434642e01fSmrg test -z "$libdir" && \ 59444642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 59454642e01fSmrg test "$absdir" != "$libdir" && \ 59464642e01fSmrg func_warning "\`$deplib' seems to be moved" 59474642e01fSmrg 59484642e01fSmrg path="-L$absdir" 59494642e01fSmrg fi 59504642e01fSmrg ;; 59514642e01fSmrg esac 59524642e01fSmrg case " $deplibs " in 59534642e01fSmrg *" $path "*) ;; 59544642e01fSmrg *) deplibs="$path $deplibs" ;; 59554642e01fSmrg esac 59564642e01fSmrg done 59574642e01fSmrg fi # link_all_deplibs != no 59584642e01fSmrg fi # linkmode = lib 59594642e01fSmrg done # for deplib in $libs 59604642e01fSmrg if test "$pass" = link; then 59614642e01fSmrg if test "$linkmode" = "prog"; then 59624642e01fSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59634642e01fSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59644642e01fSmrg else 59654642e01fSmrg compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59664642e01fSmrg fi 59674642e01fSmrg fi 59684642e01fSmrg dependency_libs="$newdependency_libs" 59694642e01fSmrg if test "$pass" = dlpreopen; then 59704642e01fSmrg # Link the dlpreopened libraries before other libraries 59714642e01fSmrg for deplib in $save_deplibs; do 59724642e01fSmrg deplibs="$deplib $deplibs" 59734642e01fSmrg done 59744642e01fSmrg fi 59754642e01fSmrg if test "$pass" != dlopen; then 59764642e01fSmrg if test "$pass" != conv; then 59774642e01fSmrg # Make sure lib_search_path contains only unique directories. 59784642e01fSmrg lib_search_path= 59794642e01fSmrg for dir in $newlib_search_path; do 59804642e01fSmrg case "$lib_search_path " in 59814642e01fSmrg *" $dir "*) ;; 59824642e01fSmrg *) lib_search_path="$lib_search_path $dir" ;; 59834642e01fSmrg esac 59844642e01fSmrg done 59854642e01fSmrg newlib_search_path= 59864642e01fSmrg fi 59874642e01fSmrg 59884642e01fSmrg if test "$linkmode,$pass" != "prog,link"; then 59894642e01fSmrg vars="deplibs" 59904642e01fSmrg else 59914642e01fSmrg vars="compile_deplibs finalize_deplibs" 59924642e01fSmrg fi 59934642e01fSmrg for var in $vars dependency_libs; do 59944642e01fSmrg # Add libraries to $var in reverse order 59954642e01fSmrg eval tmp_libs=\"\$$var\" 59964642e01fSmrg new_libs= 59974642e01fSmrg for deplib in $tmp_libs; do 59984642e01fSmrg # FIXME: Pedantically, this is the right thing to do, so 59994642e01fSmrg # that some nasty dependency loop isn't accidentally 60004642e01fSmrg # broken: 60014642e01fSmrg #new_libs="$deplib $new_libs" 60024642e01fSmrg # Pragmatically, this seems to cause very few problems in 60034642e01fSmrg # practice: 60044642e01fSmrg case $deplib in 60054642e01fSmrg -L*) new_libs="$deplib $new_libs" ;; 60064642e01fSmrg -R*) ;; 60074642e01fSmrg *) 60084642e01fSmrg # And here is the reason: when a library appears more 60094642e01fSmrg # than once as an explicit dependence of a library, or 60104642e01fSmrg # is implicitly linked in more than once by the 60114642e01fSmrg # compiler, it is considered special, and multiple 60124642e01fSmrg # occurrences thereof are not removed. Compare this 60134642e01fSmrg # with having the same library being listed as a 60144642e01fSmrg # dependency of multiple other libraries: in this case, 60154642e01fSmrg # we know (pedantically, we assume) the library does not 60164642e01fSmrg # need to be listed more than once, so we keep only the 60174642e01fSmrg # last copy. This is not always right, but it is rare 60184642e01fSmrg # enough that we require users that really mean to play 60194642e01fSmrg # such unportable linking tricks to link the library 60204642e01fSmrg # using -Wl,-lname, so that libtool does not consider it 60214642e01fSmrg # for duplicate removal. 60224642e01fSmrg case " $specialdeplibs " in 60234642e01fSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 60244642e01fSmrg *) 60254642e01fSmrg case " $new_libs " in 60264642e01fSmrg *" $deplib "*) ;; 60274642e01fSmrg *) new_libs="$deplib $new_libs" ;; 60284642e01fSmrg esac 60294642e01fSmrg ;; 60304642e01fSmrg esac 60314642e01fSmrg ;; 60324642e01fSmrg esac 60334642e01fSmrg done 60344642e01fSmrg tmp_libs= 60354642e01fSmrg for deplib in $new_libs; do 60364642e01fSmrg case $deplib in 60374642e01fSmrg -L*) 60384642e01fSmrg case " $tmp_libs " in 60394642e01fSmrg *" $deplib "*) ;; 60404642e01fSmrg *) tmp_libs="$tmp_libs $deplib" ;; 60414642e01fSmrg esac 60424642e01fSmrg ;; 60434642e01fSmrg *) tmp_libs="$tmp_libs $deplib" ;; 60444642e01fSmrg esac 60454642e01fSmrg done 60464642e01fSmrg eval $var=\"$tmp_libs\" 60474642e01fSmrg done # for var 60484642e01fSmrg fi 60494642e01fSmrg # Last step: remove runtime libs from dependency_libs 60504642e01fSmrg # (they stay in deplibs) 60514642e01fSmrg tmp_libs= 60524642e01fSmrg for i in $dependency_libs ; do 60534642e01fSmrg case " $predeps $postdeps $compiler_lib_search_path " in 60544642e01fSmrg *" $i "*) 60554642e01fSmrg i="" 60564642e01fSmrg ;; 60574642e01fSmrg esac 60584642e01fSmrg if test -n "$i" ; then 60594642e01fSmrg tmp_libs="$tmp_libs $i" 60604642e01fSmrg fi 60614642e01fSmrg done 60624642e01fSmrg dependency_libs=$tmp_libs 60634642e01fSmrg done # for pass 60644642e01fSmrg if test "$linkmode" = prog; then 60654642e01fSmrg dlfiles="$newdlfiles" 60664642e01fSmrg fi 60674642e01fSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 60684642e01fSmrg dlprefiles="$newdlprefiles" 60694642e01fSmrg fi 60704642e01fSmrg 60714642e01fSmrg case $linkmode in 60724642e01fSmrg oldlib) 60734642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60744642e01fSmrg func_warning "\`-dlopen' is ignored for archives" 60754642e01fSmrg fi 60764642e01fSmrg 60774642e01fSmrg case " $deplibs" in 60784642e01fSmrg *\ -l* | *\ -L*) 60794642e01fSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 60804642e01fSmrg esac 60814642e01fSmrg 60824642e01fSmrg test -n "$rpath" && \ 60834642e01fSmrg func_warning "\`-rpath' is ignored for archives" 60844642e01fSmrg 60854642e01fSmrg test -n "$xrpath" && \ 60864642e01fSmrg func_warning "\`-R' is ignored for archives" 60874642e01fSmrg 60884642e01fSmrg test -n "$vinfo" && \ 60894642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 60904642e01fSmrg 60914642e01fSmrg test -n "$release" && \ 60924642e01fSmrg func_warning "\`-release' is ignored for archives" 60934642e01fSmrg 60944642e01fSmrg test -n "$export_symbols$export_symbols_regex" && \ 60954642e01fSmrg func_warning "\`-export-symbols' is ignored for archives" 60964642e01fSmrg 60974642e01fSmrg # Now set the variables for building old libraries. 60984642e01fSmrg build_libtool_libs=no 60994642e01fSmrg oldlibs="$output" 61004642e01fSmrg objs="$objs$old_deplibs" 61014642e01fSmrg ;; 61024642e01fSmrg 61034642e01fSmrg lib) 61044642e01fSmrg # Make sure we only generate libraries of the form `libNAME.la'. 61054642e01fSmrg case $outputname in 61064642e01fSmrg lib*) 61074642e01fSmrg func_stripname 'lib' '.la' "$outputname" 61084642e01fSmrg name=$func_stripname_result 61094642e01fSmrg eval shared_ext=\"$shrext_cmds\" 61104642e01fSmrg eval libname=\"$libname_spec\" 61114642e01fSmrg ;; 61124642e01fSmrg *) 61134642e01fSmrg test "$module" = no && \ 61144642e01fSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 61154642e01fSmrg 61164642e01fSmrg if test "$need_lib_prefix" != no; then 61174642e01fSmrg # Add the "lib" prefix for modules if required 61184642e01fSmrg func_stripname '' '.la' "$outputname" 61194642e01fSmrg name=$func_stripname_result 61204642e01fSmrg eval shared_ext=\"$shrext_cmds\" 61214642e01fSmrg eval libname=\"$libname_spec\" 61224642e01fSmrg else 61234642e01fSmrg func_stripname '' '.la' "$outputname" 61244642e01fSmrg libname=$func_stripname_result 61254642e01fSmrg fi 61264642e01fSmrg ;; 61274642e01fSmrg esac 61284642e01fSmrg 61294642e01fSmrg if test -n "$objs"; then 61304642e01fSmrg if test "$deplibs_check_method" != pass_all; then 61314642e01fSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61324642e01fSmrg else 61334642e01fSmrg $ECHO 61344642e01fSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61354642e01fSmrg $ECHO "*** objects $objs is not portable!" 61364642e01fSmrg libobjs="$libobjs $objs" 61374642e01fSmrg fi 61384642e01fSmrg fi 61394642e01fSmrg 61404642e01fSmrg test "$dlself" != no && \ 61414642e01fSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 61424642e01fSmrg 61434642e01fSmrg set dummy $rpath 61444642e01fSmrg shift 61454642e01fSmrg test "$#" -gt 1 && \ 61464642e01fSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 61474642e01fSmrg 61484642e01fSmrg install_libdir="$1" 61494642e01fSmrg 61504642e01fSmrg oldlibs= 61514642e01fSmrg if test -z "$rpath"; then 61524642e01fSmrg if test "$build_libtool_libs" = yes; then 61534642e01fSmrg # Building a libtool convenience library. 61544642e01fSmrg # Some compilers have problems with a `.al' extension so 61554642e01fSmrg # convenience libraries should have the same extension an 61564642e01fSmrg # archive normally would. 61574642e01fSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 61584642e01fSmrg build_libtool_libs=convenience 61594642e01fSmrg build_old_libs=yes 61604642e01fSmrg fi 61614642e01fSmrg 61624642e01fSmrg test -n "$vinfo" && \ 61634642e01fSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61644642e01fSmrg 61654642e01fSmrg test -n "$release" && \ 61664642e01fSmrg func_warning "\`-release' is ignored for convenience libraries" 61674642e01fSmrg else 61684642e01fSmrg 61694642e01fSmrg # Parse the version information argument. 61704642e01fSmrg save_ifs="$IFS"; IFS=':' 61714642e01fSmrg set dummy $vinfo 0 0 0 61724642e01fSmrg shift 61734642e01fSmrg IFS="$save_ifs" 61744642e01fSmrg 61754642e01fSmrg test -n "$7" && \ 61764642e01fSmrg func_fatal_help "too many parameters to \`-version-info'" 61774642e01fSmrg 61784642e01fSmrg # convert absolute version numbers to libtool ages 61794642e01fSmrg # this retains compatibility with .la files and attempts 61804642e01fSmrg # to make the code below a bit more comprehensible 61814642e01fSmrg 61824642e01fSmrg case $vinfo_number in 61834642e01fSmrg yes) 61844642e01fSmrg number_major="$1" 61854642e01fSmrg number_minor="$2" 61864642e01fSmrg number_revision="$3" 61874642e01fSmrg # 61884642e01fSmrg # There are really only two kinds -- those that 61894642e01fSmrg # use the current revision as the major version 61904642e01fSmrg # and those that subtract age and use age as 61914642e01fSmrg # a minor version. But, then there is irix 61924642e01fSmrg # which has an extra 1 added just for fun 61934642e01fSmrg # 61944642e01fSmrg case $version_type in 61954642e01fSmrg darwin|linux|osf|windows|none) 61964642e01fSmrg func_arith $number_major + $number_minor 61974642e01fSmrg current=$func_arith_result 61984642e01fSmrg age="$number_minor" 61994642e01fSmrg revision="$number_revision" 62004642e01fSmrg ;; 62014642e01fSmrg freebsd-aout|freebsd-elf|sunos) 62024642e01fSmrg current="$number_major" 62034642e01fSmrg revision="$number_minor" 62044642e01fSmrg age="0" 62054642e01fSmrg ;; 62064642e01fSmrg irix|nonstopux) 62074642e01fSmrg func_arith $number_major + $number_minor 62084642e01fSmrg current=$func_arith_result 62094642e01fSmrg age="$number_minor" 62104642e01fSmrg revision="$number_minor" 62114642e01fSmrg lt_irix_increment=no 62124642e01fSmrg ;; 62134642e01fSmrg *) 62144642e01fSmrg func_fatal_configuration "$modename: unknown library version type \`$version_type'" 62154642e01fSmrg ;; 62164642e01fSmrg esac 62174642e01fSmrg ;; 62184642e01fSmrg no) 62194642e01fSmrg current="$1" 62204642e01fSmrg revision="$2" 62214642e01fSmrg age="$3" 62224642e01fSmrg ;; 62234642e01fSmrg esac 62244642e01fSmrg 62254642e01fSmrg # Check that each of the things are valid numbers. 62264642e01fSmrg case $current in 62274642e01fSmrg 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]) ;; 62284642e01fSmrg *) 62294642e01fSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 62304642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 62314642e01fSmrg ;; 62324642e01fSmrg esac 62334642e01fSmrg 62344642e01fSmrg case $revision in 62354642e01fSmrg 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]) ;; 62364642e01fSmrg *) 62374642e01fSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 62384642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 62394642e01fSmrg ;; 62404642e01fSmrg esac 62414642e01fSmrg 62424642e01fSmrg case $age in 62434642e01fSmrg 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]) ;; 62444642e01fSmrg *) 62454642e01fSmrg func_error "AGE \`$age' must be a nonnegative integer" 62464642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 62474642e01fSmrg ;; 62484642e01fSmrg esac 62494642e01fSmrg 62504642e01fSmrg if test "$age" -gt "$current"; then 62514642e01fSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 62524642e01fSmrg func_fatal_error "\`$vinfo' is not valid version information" 62534642e01fSmrg fi 62544642e01fSmrg 62554642e01fSmrg # Calculate the version variables. 62564642e01fSmrg major= 62574642e01fSmrg versuffix= 62584642e01fSmrg verstring= 62594642e01fSmrg case $version_type in 62604642e01fSmrg none) ;; 62614642e01fSmrg 62624642e01fSmrg darwin) 62634642e01fSmrg # Like Linux, but with the current version available in 62644642e01fSmrg # verstring for coding it into the library header 62654642e01fSmrg func_arith $current - $age 62664642e01fSmrg major=.$func_arith_result 62674642e01fSmrg versuffix="$major.$age.$revision" 62684642e01fSmrg # Darwin ld doesn't like 0 for these options... 62694642e01fSmrg func_arith $current + 1 62704642e01fSmrg minor_current=$func_arith_result 62714642e01fSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62724642e01fSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62734642e01fSmrg ;; 62744642e01fSmrg 62754642e01fSmrg freebsd-aout) 62764642e01fSmrg major=".$current" 62774642e01fSmrg versuffix=".$current.$revision"; 62784642e01fSmrg ;; 62794642e01fSmrg 62804642e01fSmrg freebsd-elf) 62814642e01fSmrg major=".$current" 62824642e01fSmrg versuffix=".$current" 62834642e01fSmrg ;; 62844642e01fSmrg 62854642e01fSmrg irix | nonstopux) 62864642e01fSmrg if test "X$lt_irix_increment" = "Xno"; then 62874642e01fSmrg func_arith $current - $age 62884642e01fSmrg else 62894642e01fSmrg func_arith $current - $age + 1 62904642e01fSmrg fi 62914642e01fSmrg major=$func_arith_result 62924642e01fSmrg 62934642e01fSmrg case $version_type in 62944642e01fSmrg nonstopux) verstring_prefix=nonstopux ;; 62954642e01fSmrg *) verstring_prefix=sgi ;; 62964642e01fSmrg esac 62974642e01fSmrg verstring="$verstring_prefix$major.$revision" 62984642e01fSmrg 62994642e01fSmrg # Add in all the interfaces that we are compatible with. 63004642e01fSmrg loop=$revision 63014642e01fSmrg while test "$loop" -ne 0; do 63024642e01fSmrg func_arith $revision - $loop 63034642e01fSmrg iface=$func_arith_result 63044642e01fSmrg func_arith $loop - 1 63054642e01fSmrg loop=$func_arith_result 63064642e01fSmrg verstring="$verstring_prefix$major.$iface:$verstring" 63074642e01fSmrg done 63084642e01fSmrg 63094642e01fSmrg # Before this point, $major must not contain `.'. 63104642e01fSmrg major=.$major 63114642e01fSmrg versuffix="$major.$revision" 63124642e01fSmrg ;; 63134642e01fSmrg 63144642e01fSmrg linux) 63154642e01fSmrg func_arith $current - $age 63164642e01fSmrg major=.$func_arith_result 63174642e01fSmrg versuffix="$major.$age.$revision" 63184642e01fSmrg ;; 63194642e01fSmrg 63204642e01fSmrg osf) 63214642e01fSmrg func_arith $current - $age 63224642e01fSmrg major=.$func_arith_result 63234642e01fSmrg versuffix=".$current.$age.$revision" 63244642e01fSmrg verstring="$current.$age.$revision" 63254642e01fSmrg 63264642e01fSmrg # Add in all the interfaces that we are compatible with. 63274642e01fSmrg loop=$age 63284642e01fSmrg while test "$loop" -ne 0; do 63294642e01fSmrg func_arith $current - $loop 63304642e01fSmrg iface=$func_arith_result 63314642e01fSmrg func_arith $loop - 1 63324642e01fSmrg loop=$func_arith_result 63334642e01fSmrg verstring="$verstring:${iface}.0" 63344642e01fSmrg done 63354642e01fSmrg 63364642e01fSmrg # Make executables depend on our current version. 63374642e01fSmrg verstring="$verstring:${current}.0" 63384642e01fSmrg ;; 63394642e01fSmrg 63404642e01fSmrg qnx) 63414642e01fSmrg major=".$current" 63424642e01fSmrg versuffix=".$current" 63434642e01fSmrg ;; 63444642e01fSmrg 63454642e01fSmrg sunos) 63464642e01fSmrg major=".$current" 63474642e01fSmrg versuffix=".$current.$revision" 63484642e01fSmrg ;; 63494642e01fSmrg 63504642e01fSmrg windows) 63514642e01fSmrg # Use '-' rather than '.', since we only want one 63524642e01fSmrg # extension on DOS 8.3 filesystems. 63534642e01fSmrg func_arith $current - $age 63544642e01fSmrg major=$func_arith_result 63554642e01fSmrg versuffix="-$major" 63564642e01fSmrg ;; 63574642e01fSmrg 63584642e01fSmrg *) 63594642e01fSmrg func_fatal_configuration "unknown library version type \`$version_type'" 63604642e01fSmrg ;; 63614642e01fSmrg esac 63624642e01fSmrg 63634642e01fSmrg # Clear the version info if we defaulted, and they specified a release. 63644642e01fSmrg if test -z "$vinfo" && test -n "$release"; then 63654642e01fSmrg major= 63664642e01fSmrg case $version_type in 63674642e01fSmrg darwin) 63684642e01fSmrg # we can't check for "0.0" in archive_cmds due to quoting 63694642e01fSmrg # problems, so we reset it completely 63704642e01fSmrg verstring= 63714642e01fSmrg ;; 63724642e01fSmrg *) 63734642e01fSmrg verstring="0.0" 63744642e01fSmrg ;; 63754642e01fSmrg esac 63764642e01fSmrg if test "$need_version" = no; then 63774642e01fSmrg versuffix= 63784642e01fSmrg else 63794642e01fSmrg versuffix=".0.0" 63804642e01fSmrg fi 63814642e01fSmrg fi 63824642e01fSmrg 63834642e01fSmrg # Remove version info from name if versioning should be avoided 63844642e01fSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 63854642e01fSmrg major= 63864642e01fSmrg versuffix= 63874642e01fSmrg verstring="" 63884642e01fSmrg fi 63894642e01fSmrg 63904642e01fSmrg # Check to see if the archive will have undefined symbols. 63914642e01fSmrg if test "$allow_undefined" = yes; then 63924642e01fSmrg if test "$allow_undefined_flag" = unsupported; then 63934642e01fSmrg func_warning "undefined symbols not allowed in $host shared libraries" 63944642e01fSmrg build_libtool_libs=no 63954642e01fSmrg build_old_libs=yes 63964642e01fSmrg fi 63974642e01fSmrg else 63984642e01fSmrg # Don't allow undefined symbols. 63994642e01fSmrg allow_undefined_flag="$no_undefined_flag" 64004642e01fSmrg fi 64014642e01fSmrg 64024642e01fSmrg fi 64034642e01fSmrg 64044642e01fSmrg func_generate_dlsyms "$libname" "$libname" "yes" 64054642e01fSmrg libobjs="$libobjs $symfileobj" 64064642e01fSmrg test "X$libobjs" = "X " && libobjs= 64074642e01fSmrg 64084642e01fSmrg if test "$mode" != relink; then 64094642e01fSmrg # Remove our outputs, but don't remove object files since they 64104642e01fSmrg # may have been created when compiling PIC objects. 64114642e01fSmrg removelist= 64124642e01fSmrg tempremovelist=`$ECHO "$output_objdir/*"` 64134642e01fSmrg for p in $tempremovelist; do 64144642e01fSmrg case $p in 64154642e01fSmrg *.$objext | *.gcno) 64164642e01fSmrg ;; 64174642e01fSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64184642e01fSmrg if test "X$precious_files_regex" != "X"; then 64194642e01fSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64204642e01fSmrg then 64214642e01fSmrg continue 64224642e01fSmrg fi 64234642e01fSmrg fi 64244642e01fSmrg removelist="$removelist $p" 64254642e01fSmrg ;; 64264642e01fSmrg *) ;; 64274642e01fSmrg esac 64284642e01fSmrg done 64294642e01fSmrg test -n "$removelist" && \ 64304642e01fSmrg func_show_eval "${RM}r \$removelist" 64314642e01fSmrg fi 64324642e01fSmrg 64334642e01fSmrg # Now set the variables for building old libraries. 64344642e01fSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64354642e01fSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 64364642e01fSmrg 64374642e01fSmrg # Transform .lo files to .o files. 64384642e01fSmrg oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64394642e01fSmrg fi 64404642e01fSmrg 64414642e01fSmrg # Eliminate all temporary directories. 64424642e01fSmrg #for path in $notinst_path; do 64434642e01fSmrg # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64444642e01fSmrg # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64454642e01fSmrg # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64464642e01fSmrg #done 64474642e01fSmrg 64484642e01fSmrg if test -n "$xrpath"; then 64494642e01fSmrg # If the user specified any rpath flags, then add them. 64504642e01fSmrg temp_xrpath= 64514642e01fSmrg for libdir in $xrpath; do 64524642e01fSmrg temp_xrpath="$temp_xrpath -R$libdir" 64534642e01fSmrg case "$finalize_rpath " in 64544642e01fSmrg *" $libdir "*) ;; 64554642e01fSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 64564642e01fSmrg esac 64574642e01fSmrg done 64584642e01fSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64594642e01fSmrg dependency_libs="$temp_xrpath $dependency_libs" 64604642e01fSmrg fi 64614642e01fSmrg fi 64624642e01fSmrg 64634642e01fSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 64644642e01fSmrg old_dlfiles="$dlfiles" 64654642e01fSmrg dlfiles= 64664642e01fSmrg for lib in $old_dlfiles; do 64674642e01fSmrg case " $dlprefiles $dlfiles " in 64684642e01fSmrg *" $lib "*) ;; 64694642e01fSmrg *) dlfiles="$dlfiles $lib" ;; 64704642e01fSmrg esac 64714642e01fSmrg done 64724642e01fSmrg 64734642e01fSmrg # Make sure dlprefiles contains only unique files 64744642e01fSmrg old_dlprefiles="$dlprefiles" 64754642e01fSmrg dlprefiles= 64764642e01fSmrg for lib in $old_dlprefiles; do 64774642e01fSmrg case "$dlprefiles " in 64784642e01fSmrg *" $lib "*) ;; 64794642e01fSmrg *) dlprefiles="$dlprefiles $lib" ;; 64804642e01fSmrg esac 64814642e01fSmrg done 64824642e01fSmrg 64834642e01fSmrg if test "$build_libtool_libs" = yes; then 64844642e01fSmrg if test -n "$rpath"; then 64854642e01fSmrg case $host in 64864642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64874642e01fSmrg # these systems don't actually have a c library (as such)! 64884642e01fSmrg ;; 64894642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 64904642e01fSmrg # Rhapsody C library is in the System framework 64914642e01fSmrg deplibs="$deplibs System.ltframework" 64924642e01fSmrg ;; 64934642e01fSmrg *-*-netbsd*) 64944642e01fSmrg # Don't link with libc until the a.out ld.so is fixed. 64954642e01fSmrg ;; 64964642e01fSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64974642e01fSmrg # Do not include libc due to us having libc/libc_r. 64984642e01fSmrg ;; 64994642e01fSmrg *-*-sco3.2v5* | *-*-sco5v6*) 65004642e01fSmrg # Causes problems with __ctype 65014642e01fSmrg ;; 65024642e01fSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 65034642e01fSmrg # Compiler inserts libc in the correct place for threads to work 65044642e01fSmrg ;; 65054642e01fSmrg *) 65064642e01fSmrg # Add libc to deplibs on all other systems if necessary. 65074642e01fSmrg if test "$build_libtool_need_lc" = "yes"; then 65084642e01fSmrg deplibs="$deplibs -lc" 65094642e01fSmrg fi 65104642e01fSmrg ;; 65114642e01fSmrg esac 65124642e01fSmrg fi 65134642e01fSmrg 65144642e01fSmrg # Transform deplibs into only deplibs that can be linked in shared. 65154642e01fSmrg name_save=$name 65164642e01fSmrg libname_save=$libname 65174642e01fSmrg release_save=$release 65184642e01fSmrg versuffix_save=$versuffix 65194642e01fSmrg major_save=$major 65204642e01fSmrg # I'm not sure if I'm treating the release correctly. I think 65214642e01fSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 65224642e01fSmrg # add it in twice. Is that correct? 65234642e01fSmrg release="" 65244642e01fSmrg versuffix="" 65254642e01fSmrg major="" 65264642e01fSmrg newdeplibs= 65274642e01fSmrg droppeddeps=no 65284642e01fSmrg case $deplibs_check_method in 65294642e01fSmrg pass_all) 65304642e01fSmrg # Don't check for shared/static. Everything works. 65314642e01fSmrg # This might be a little naive. We might want to check 65324642e01fSmrg # whether the library exists or not. But this is on 65334642e01fSmrg # osf3 & osf4 and I'm not really sure... Just 65344642e01fSmrg # implementing what was already the behavior. 65354642e01fSmrg newdeplibs=$deplibs 65364642e01fSmrg ;; 65374642e01fSmrg test_compile) 65384642e01fSmrg # This code stresses the "libraries are programs" paradigm to its 65394642e01fSmrg # limits. Maybe even breaks it. We compile a program, linking it 65404642e01fSmrg # against the deplibs as a proxy for the library. Then we can check 65414642e01fSmrg # whether they linked in statically or dynamically with ldd. 65424642e01fSmrg $opt_dry_run || $RM conftest.c 65434642e01fSmrg cat > conftest.c <<EOF 65444642e01fSmrg int main() { return 0; } 65454642e01fSmrgEOF 65464642e01fSmrg $opt_dry_run || $RM conftest 65474642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65484642e01fSmrg ldd_output=`ldd conftest` 65494642e01fSmrg for i in $deplibs; do 65504642e01fSmrg case $i in 65514642e01fSmrg -l*) 65524642e01fSmrg func_stripname -l '' "$i" 65534642e01fSmrg name=$func_stripname_result 65544642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65554642e01fSmrg case " $predeps $postdeps " in 65564642e01fSmrg *" $i "*) 65574642e01fSmrg newdeplibs="$newdeplibs $i" 65584642e01fSmrg i="" 65594642e01fSmrg ;; 65604642e01fSmrg esac 65614642e01fSmrg fi 65624642e01fSmrg if test -n "$i" ; then 65634642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 65644642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65654642e01fSmrg set dummy $deplib_matches; shift 65664642e01fSmrg deplib_match=$1 65674642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65684642e01fSmrg newdeplibs="$newdeplibs $i" 65694642e01fSmrg else 65704642e01fSmrg droppeddeps=yes 65714642e01fSmrg $ECHO 65724642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65734642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 65744642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 65754642e01fSmrg $ECHO "*** shared version of the library, which I believe you do not have" 65764642e01fSmrg $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65774642e01fSmrg $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65784642e01fSmrg fi 65794642e01fSmrg fi 65804642e01fSmrg ;; 65814642e01fSmrg *) 65824642e01fSmrg newdeplibs="$newdeplibs $i" 65834642e01fSmrg ;; 65844642e01fSmrg esac 65854642e01fSmrg done 65864642e01fSmrg else 65874642e01fSmrg # Error occurred in the first compile. Let's try to salvage 65884642e01fSmrg # the situation: Compile a separate program for each library. 65894642e01fSmrg for i in $deplibs; do 65904642e01fSmrg case $i in 65914642e01fSmrg -l*) 65924642e01fSmrg func_stripname -l '' "$i" 65934642e01fSmrg name=$func_stripname_result 65944642e01fSmrg $opt_dry_run || $RM conftest 65954642e01fSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65964642e01fSmrg ldd_output=`ldd conftest` 65974642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65984642e01fSmrg case " $predeps $postdeps " in 65994642e01fSmrg *" $i "*) 66004642e01fSmrg newdeplibs="$newdeplibs $i" 66014642e01fSmrg i="" 66024642e01fSmrg ;; 66034642e01fSmrg esac 66044642e01fSmrg fi 66054642e01fSmrg if test -n "$i" ; then 66064642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 66074642e01fSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66084642e01fSmrg set dummy $deplib_matches; shift 66094642e01fSmrg deplib_match=$1 66104642e01fSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66114642e01fSmrg newdeplibs="$newdeplibs $i" 66124642e01fSmrg else 66134642e01fSmrg droppeddeps=yes 66144642e01fSmrg $ECHO 66154642e01fSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66164642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 66174642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 66184642e01fSmrg $ECHO "*** shared version of the library, which you do not appear to have" 66194642e01fSmrg $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66204642e01fSmrg $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66214642e01fSmrg fi 66224642e01fSmrg fi 66234642e01fSmrg else 66244642e01fSmrg droppeddeps=yes 66254642e01fSmrg $ECHO 66264642e01fSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66274642e01fSmrg $ECHO "*** make it link in! You will probably need to install it or some" 66284642e01fSmrg $ECHO "*** library that it depends on before this library will be fully" 66294642e01fSmrg $ECHO "*** functional. Installing it before continuing would be even better." 66304642e01fSmrg fi 66314642e01fSmrg ;; 66324642e01fSmrg *) 66334642e01fSmrg newdeplibs="$newdeplibs $i" 66344642e01fSmrg ;; 66354642e01fSmrg esac 66364642e01fSmrg done 66374642e01fSmrg fi 66384642e01fSmrg ;; 66394642e01fSmrg file_magic*) 66404642e01fSmrg set dummy $deplibs_check_method; shift 66414642e01fSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66424642e01fSmrg for a_deplib in $deplibs; do 66434642e01fSmrg case $a_deplib in 66444642e01fSmrg -l*) 66454642e01fSmrg func_stripname -l '' "$a_deplib" 66464642e01fSmrg name=$func_stripname_result 66474642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66484642e01fSmrg case " $predeps $postdeps " in 66494642e01fSmrg *" $a_deplib "*) 66504642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 66514642e01fSmrg a_deplib="" 66524642e01fSmrg ;; 66534642e01fSmrg esac 66544642e01fSmrg fi 66554642e01fSmrg if test -n "$a_deplib" ; then 66564642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 66574642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66584642e01fSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66594642e01fSmrg for potent_lib in $potential_libs; do 66604642e01fSmrg # Follow soft links. 66614642e01fSmrg if ls -lLd "$potent_lib" 2>/dev/null | 66624642e01fSmrg $GREP " -> " >/dev/null; then 66634642e01fSmrg continue 66644642e01fSmrg fi 66654642e01fSmrg # The statement above tries to avoid entering an 66664642e01fSmrg # endless loop below, in case of cyclic links. 66674642e01fSmrg # We might still enter an endless loop, since a link 66684642e01fSmrg # loop can be closed while we follow links, 66694642e01fSmrg # but so what? 66704642e01fSmrg potlib="$potent_lib" 66714642e01fSmrg while test -h "$potlib" 2>/dev/null; do 66724642e01fSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66734642e01fSmrg case $potliblink in 66744642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66754642e01fSmrg *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66764642e01fSmrg esac 66774642e01fSmrg done 66784642e01fSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66794642e01fSmrg $SED -e 10q | 66804642e01fSmrg $EGREP "$file_magic_regex" > /dev/null; then 66814642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 66824642e01fSmrg a_deplib="" 66834642e01fSmrg break 2 66844642e01fSmrg fi 66854642e01fSmrg done 66864642e01fSmrg done 66874642e01fSmrg fi 66884642e01fSmrg if test -n "$a_deplib" ; then 66894642e01fSmrg droppeddeps=yes 66904642e01fSmrg $ECHO 66914642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66924642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 66934642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 66944642e01fSmrg $ECHO "*** shared version of the library, which you do not appear to have" 66954642e01fSmrg $ECHO "*** because I did check the linker path looking for a file starting" 66964642e01fSmrg if test -z "$potlib" ; then 66974642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66984642e01fSmrg else 66994642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 67004642e01fSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 67014642e01fSmrg fi 67024642e01fSmrg fi 67034642e01fSmrg ;; 67044642e01fSmrg *) 67054642e01fSmrg # Add a -L argument. 67064642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 67074642e01fSmrg ;; 67084642e01fSmrg esac 67094642e01fSmrg done # Gone through all deplibs. 67104642e01fSmrg ;; 67114642e01fSmrg match_pattern*) 67124642e01fSmrg set dummy $deplibs_check_method; shift 67134642e01fSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67144642e01fSmrg for a_deplib in $deplibs; do 67154642e01fSmrg case $a_deplib in 67164642e01fSmrg -l*) 67174642e01fSmrg func_stripname -l '' "$a_deplib" 67184642e01fSmrg name=$func_stripname_result 67194642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67204642e01fSmrg case " $predeps $postdeps " in 67214642e01fSmrg *" $a_deplib "*) 67224642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 67234642e01fSmrg a_deplib="" 67244642e01fSmrg ;; 67254642e01fSmrg esac 67264642e01fSmrg fi 67274642e01fSmrg if test -n "$a_deplib" ; then 67284642e01fSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 67294642e01fSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67304642e01fSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67314642e01fSmrg for potent_lib in $potential_libs; do 67324642e01fSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 67334642e01fSmrg if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67344642e01fSmrg $EGREP "$match_pattern_regex" > /dev/null; then 67354642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 67364642e01fSmrg a_deplib="" 67374642e01fSmrg break 2 67384642e01fSmrg fi 67394642e01fSmrg done 67404642e01fSmrg done 67414642e01fSmrg fi 67424642e01fSmrg if test -n "$a_deplib" ; then 67434642e01fSmrg droppeddeps=yes 67444642e01fSmrg $ECHO 67454642e01fSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67464642e01fSmrg $ECHO "*** I have the capability to make that library automatically link in when" 67474642e01fSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 67484642e01fSmrg $ECHO "*** shared version of the library, which you do not appear to have" 67494642e01fSmrg $ECHO "*** because I did check the linker path looking for a file starting" 67504642e01fSmrg if test -z "$potlib" ; then 67514642e01fSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67524642e01fSmrg else 67534642e01fSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 67544642e01fSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 67554642e01fSmrg fi 67564642e01fSmrg fi 67574642e01fSmrg ;; 67584642e01fSmrg *) 67594642e01fSmrg # Add a -L argument. 67604642e01fSmrg newdeplibs="$newdeplibs $a_deplib" 67614642e01fSmrg ;; 67624642e01fSmrg esac 67634642e01fSmrg done # Gone through all deplibs. 67644642e01fSmrg ;; 67654642e01fSmrg none | unknown | *) 67664642e01fSmrg newdeplibs="" 67674642e01fSmrg tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67684642e01fSmrg -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67694642e01fSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67704642e01fSmrg for i in $predeps $postdeps ; do 67714642e01fSmrg # can't use Xsed below, because $i might contain '/' 67724642e01fSmrg tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67734642e01fSmrg done 67744642e01fSmrg fi 67754642e01fSmrg if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67764642e01fSmrg $GREP . >/dev/null; then 67774642e01fSmrg $ECHO 67784642e01fSmrg if test "X$deplibs_check_method" = "Xnone"; then 67794642e01fSmrg $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67804642e01fSmrg else 67814642e01fSmrg $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67824642e01fSmrg fi 67834642e01fSmrg $ECHO "*** All declared inter-library dependencies are being dropped." 67844642e01fSmrg droppeddeps=yes 67854642e01fSmrg fi 67864642e01fSmrg ;; 67874642e01fSmrg esac 67884642e01fSmrg versuffix=$versuffix_save 67894642e01fSmrg major=$major_save 67904642e01fSmrg release=$release_save 67914642e01fSmrg libname=$libname_save 67924642e01fSmrg name=$name_save 67934642e01fSmrg 67944642e01fSmrg case $host in 67954642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 67964642e01fSmrg # On Rhapsody replace the C library with the System framework 67974642e01fSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67984642e01fSmrg ;; 67994642e01fSmrg esac 68004642e01fSmrg 68014642e01fSmrg if test "$droppeddeps" = yes; then 68024642e01fSmrg if test "$module" = yes; then 68034642e01fSmrg $ECHO 68044642e01fSmrg $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 68054642e01fSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 68064642e01fSmrg $ECHO "*** a static module, that should work as long as the dlopening" 68074642e01fSmrg $ECHO "*** application is linked with the -dlopen flag." 68084642e01fSmrg if test -z "$global_symbol_pipe"; then 68094642e01fSmrg $ECHO 68104642e01fSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 68114642e01fSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68124642e01fSmrg $ECHO "*** not find such a program. So, this module is probably useless." 68134642e01fSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68144642e01fSmrg fi 68154642e01fSmrg if test "$build_old_libs" = no; then 68164642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 68174642e01fSmrg build_libtool_libs=module 68184642e01fSmrg build_old_libs=yes 68194642e01fSmrg else 68204642e01fSmrg build_libtool_libs=no 68214642e01fSmrg fi 68224642e01fSmrg else 68234642e01fSmrg $ECHO "*** The inter-library dependencies that have been dropped here will be" 68244642e01fSmrg $ECHO "*** automatically added whenever a program is linked with this library" 68254642e01fSmrg $ECHO "*** or is declared to -dlopen it." 68264642e01fSmrg 68274642e01fSmrg if test "$allow_undefined" = no; then 68284642e01fSmrg $ECHO 68294642e01fSmrg $ECHO "*** Since this library must not contain undefined symbols," 68304642e01fSmrg $ECHO "*** because either the platform does not support them or" 68314642e01fSmrg $ECHO "*** it was explicitly requested with -no-undefined," 68324642e01fSmrg $ECHO "*** libtool will only create a static version of it." 68334642e01fSmrg if test "$build_old_libs" = no; then 68344642e01fSmrg oldlibs="$output_objdir/$libname.$libext" 68354642e01fSmrg build_libtool_libs=module 68364642e01fSmrg build_old_libs=yes 68374642e01fSmrg else 68384642e01fSmrg build_libtool_libs=no 68394642e01fSmrg fi 68404642e01fSmrg fi 68414642e01fSmrg fi 68424642e01fSmrg fi 68434642e01fSmrg # Done checking deplibs! 68444642e01fSmrg deplibs=$newdeplibs 68454642e01fSmrg fi 68464642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68474642e01fSmrg case $host in 68484642e01fSmrg *-*-darwin*) 68494642e01fSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68504642e01fSmrg new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68514642e01fSmrg deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68524642e01fSmrg ;; 68534642e01fSmrg esac 68544642e01fSmrg 68554642e01fSmrg # move library search paths that coincide with paths to not yet 68564642e01fSmrg # installed libraries to the beginning of the library search list 68574642e01fSmrg new_libs= 68584642e01fSmrg for path in $notinst_path; do 68594642e01fSmrg case " $new_libs " in 68604642e01fSmrg *" -L$path/$objdir "*) ;; 68614642e01fSmrg *) 68624642e01fSmrg case " $deplibs " in 68634642e01fSmrg *" -L$path/$objdir "*) 68644642e01fSmrg new_libs="$new_libs -L$path/$objdir" ;; 68654642e01fSmrg esac 68664642e01fSmrg ;; 68674642e01fSmrg esac 68684642e01fSmrg done 68694642e01fSmrg for deplib in $deplibs; do 68704642e01fSmrg case $deplib in 68714642e01fSmrg -L*) 68724642e01fSmrg case " $new_libs " in 68734642e01fSmrg *" $deplib "*) ;; 68744642e01fSmrg *) new_libs="$new_libs $deplib" ;; 68754642e01fSmrg esac 68764642e01fSmrg ;; 68774642e01fSmrg *) new_libs="$new_libs $deplib" ;; 68784642e01fSmrg esac 68794642e01fSmrg done 68804642e01fSmrg deplibs="$new_libs" 68814642e01fSmrg 68824642e01fSmrg # All the library-specific variables (install_libdir is set above). 68834642e01fSmrg library_names= 68844642e01fSmrg old_library= 68854642e01fSmrg dlname= 68864642e01fSmrg 68874642e01fSmrg # Test again, we may have decided not to build it any more 68884642e01fSmrg if test "$build_libtool_libs" = yes; then 68894642e01fSmrg if test "$hardcode_into_libs" = yes; then 68904642e01fSmrg # Hardcode the library paths 68914642e01fSmrg hardcode_libdirs= 68924642e01fSmrg dep_rpath= 68934642e01fSmrg rpath="$finalize_rpath" 68944642e01fSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 68954642e01fSmrg for libdir in $rpath; do 68964642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 68974642e01fSmrg if test -n "$hardcode_libdir_separator"; then 68984642e01fSmrg if test -z "$hardcode_libdirs"; then 68994642e01fSmrg hardcode_libdirs="$libdir" 69004642e01fSmrg else 69014642e01fSmrg # Just accumulate the unique libdirs. 69024642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 69034642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 69044642e01fSmrg ;; 69054642e01fSmrg *) 69064642e01fSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69074642e01fSmrg ;; 69084642e01fSmrg esac 69094642e01fSmrg fi 69104642e01fSmrg else 69114642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 69124642e01fSmrg dep_rpath="$dep_rpath $flag" 69134642e01fSmrg fi 69144642e01fSmrg elif test -n "$runpath_var"; then 69154642e01fSmrg case "$perm_rpath " in 69164642e01fSmrg *" $libdir "*) ;; 69174642e01fSmrg *) perm_rpath="$perm_rpath $libdir" ;; 69184642e01fSmrg esac 69194642e01fSmrg fi 69204642e01fSmrg done 69214642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 69224642e01fSmrg if test -n "$hardcode_libdir_separator" && 69234642e01fSmrg test -n "$hardcode_libdirs"; then 69244642e01fSmrg libdir="$hardcode_libdirs" 69254642e01fSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 69264642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69274642e01fSmrg else 69284642e01fSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69294642e01fSmrg fi 69304642e01fSmrg fi 69314642e01fSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 69324642e01fSmrg # We should set the runpath_var. 69334642e01fSmrg rpath= 69344642e01fSmrg for dir in $perm_rpath; do 69354642e01fSmrg rpath="$rpath$dir:" 69364642e01fSmrg done 69374642e01fSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69384642e01fSmrg fi 69394642e01fSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 69404642e01fSmrg fi 694105b261ecSmrg 69424642e01fSmrg shlibpath="$finalize_shlibpath" 69434642e01fSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69444642e01fSmrg if test -n "$shlibpath"; then 69454642e01fSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69464642e01fSmrg fi 694705b261ecSmrg 69484642e01fSmrg # Get the real and link names of the library. 69494642e01fSmrg eval shared_ext=\"$shrext_cmds\" 69504642e01fSmrg eval library_names=\"$library_names_spec\" 69514642e01fSmrg set dummy $library_names 69524642e01fSmrg shift 69534642e01fSmrg realname="$1" 69544642e01fSmrg shift 695505b261ecSmrg 69564642e01fSmrg if test -n "$soname_spec"; then 69574642e01fSmrg eval soname=\"$soname_spec\" 69584642e01fSmrg else 69594642e01fSmrg soname="$realname" 69604642e01fSmrg fi 69614642e01fSmrg if test -z "$dlname"; then 69624642e01fSmrg dlname=$soname 69634642e01fSmrg fi 696405b261ecSmrg 69654642e01fSmrg lib="$output_objdir/$realname" 69664642e01fSmrg linknames= 69674642e01fSmrg for link 69684642e01fSmrg do 69694642e01fSmrg linknames="$linknames $link" 69704642e01fSmrg done 697105b261ecSmrg 69724642e01fSmrg # Use standard objects if they are pic 69734642e01fSmrg test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69744642e01fSmrg test "X$libobjs" = "X " && libobjs= 697505b261ecSmrg 69764642e01fSmrg delfiles= 69774642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 69784642e01fSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69794642e01fSmrg export_symbols="$output_objdir/$libname.uexp" 69804642e01fSmrg delfiles="$delfiles $export_symbols" 69814642e01fSmrg fi 698205b261ecSmrg 69834642e01fSmrg orig_export_symbols= 69844642e01fSmrg case $host_os in 69854642e01fSmrg cygwin* | mingw* | cegcc*) 69864642e01fSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69874642e01fSmrg # exporting using user supplied symfile 69884642e01fSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69894642e01fSmrg # and it's NOT already a .def file. Must figure out 69904642e01fSmrg # which of the given symbols are data symbols and tag 69914642e01fSmrg # them as such. So, trigger use of export_symbols_cmds. 69924642e01fSmrg # export_symbols gets reassigned inside the "prepare 69934642e01fSmrg # the list of exported symbols" if statement, so the 69944642e01fSmrg # include_expsyms logic still works. 69954642e01fSmrg orig_export_symbols="$export_symbols" 69964642e01fSmrg export_symbols= 69974642e01fSmrg always_export_symbols=yes 69984642e01fSmrg fi 69994642e01fSmrg fi 70004642e01fSmrg ;; 70014642e01fSmrg esac 700205b261ecSmrg 70034642e01fSmrg # Prepare the list of exported symbols 70044642e01fSmrg if test -z "$export_symbols"; then 70054642e01fSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 70064642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 70074642e01fSmrg export_symbols="$output_objdir/$libname.exp" 70084642e01fSmrg $opt_dry_run || $RM $export_symbols 70094642e01fSmrg cmds=$export_symbols_cmds 70104642e01fSmrg save_ifs="$IFS"; IFS='~' 70114642e01fSmrg for cmd in $cmds; do 70124642e01fSmrg IFS="$save_ifs" 70134642e01fSmrg eval cmd=\"$cmd\" 70144642e01fSmrg func_len " $cmd" 70154642e01fSmrg len=$func_len_result 70164642e01fSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70174642e01fSmrg func_show_eval "$cmd" 'exit $?' 70184642e01fSmrg skipped_export=false 70194642e01fSmrg else 70204642e01fSmrg # The command line is too long to execute in one step. 70214642e01fSmrg func_verbose "using reloadable object file for export list..." 70224642e01fSmrg skipped_export=: 70234642e01fSmrg # Break out early, otherwise skipped_export may be 70244642e01fSmrg # set to false by a later but shorter cmd. 70254642e01fSmrg break 70264642e01fSmrg fi 70274642e01fSmrg done 70284642e01fSmrg IFS="$save_ifs" 70294642e01fSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70304642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70314642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70324642e01fSmrg fi 70334642e01fSmrg fi 703405b261ecSmrg fi 703505b261ecSmrg 70364642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 70374642e01fSmrg tmp_export_symbols="$export_symbols" 70384642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70394642e01fSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70404642e01fSmrg fi 704105b261ecSmrg 70424642e01fSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70434642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 70444642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70454642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 70464642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 70474642e01fSmrg # though. Also, the filter scales superlinearly with the number of 70484642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 70494642e01fSmrg # isn't a blessed tool. 70504642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70514642e01fSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70524642e01fSmrg export_symbols=$output_objdir/$libname.def 70534642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70544642e01fSmrg fi 705505b261ecSmrg 70564642e01fSmrg tmp_deplibs= 70574642e01fSmrg for test_deplib in $deplibs; do 70584642e01fSmrg case " $convenience " in 70594642e01fSmrg *" $test_deplib "*) ;; 70604642e01fSmrg *) 70614642e01fSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 70624642e01fSmrg ;; 70634642e01fSmrg esac 70644642e01fSmrg done 70654642e01fSmrg deplibs="$tmp_deplibs" 706605b261ecSmrg 70674642e01fSmrg if test -n "$convenience"; then 70684642e01fSmrg if test -n "$whole_archive_flag_spec" && 70694642e01fSmrg test "$compiler_needs_object" = yes && 70704642e01fSmrg test -z "$libobjs"; then 70714642e01fSmrg # extract the archives, so we have objects to list. 70724642e01fSmrg # TODO: could optimize this to just extract one archive. 70734642e01fSmrg whole_archive_flag_spec= 70744642e01fSmrg fi 70754642e01fSmrg if test -n "$whole_archive_flag_spec"; then 70764642e01fSmrg save_libobjs=$libobjs 70774642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70784642e01fSmrg test "X$libobjs" = "X " && libobjs= 70794642e01fSmrg else 70804642e01fSmrg gentop="$output_objdir/${outputname}x" 70814642e01fSmrg generated="$generated $gentop" 708205b261ecSmrg 70834642e01fSmrg func_extract_archives $gentop $convenience 70844642e01fSmrg libobjs="$libobjs $func_extract_archives_result" 70854642e01fSmrg test "X$libobjs" = "X " && libobjs= 70864642e01fSmrg fi 708705b261ecSmrg fi 708805b261ecSmrg 70894642e01fSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70904642e01fSmrg eval flag=\"$thread_safe_flag_spec\" 70914642e01fSmrg linker_flags="$linker_flags $flag" 709205b261ecSmrg fi 709305b261ecSmrg 70944642e01fSmrg # Make a backup of the uninstalled library when relinking 70954642e01fSmrg if test "$mode" = relink; then 70964642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70974642e01fSmrg fi 709805b261ecSmrg 70994642e01fSmrg # Do each of the archive commands. 71004642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 71014642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 71024642e01fSmrg eval test_cmds=\"$module_expsym_cmds\" 71034642e01fSmrg cmds=$module_expsym_cmds 71044642e01fSmrg else 71054642e01fSmrg eval test_cmds=\"$module_cmds\" 71064642e01fSmrg cmds=$module_cmds 71074642e01fSmrg fi 710805b261ecSmrg else 71094642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71104642e01fSmrg eval test_cmds=\"$archive_expsym_cmds\" 71114642e01fSmrg cmds=$archive_expsym_cmds 71124642e01fSmrg else 71134642e01fSmrg eval test_cmds=\"$archive_cmds\" 71144642e01fSmrg cmds=$archive_cmds 71154642e01fSmrg fi 711605b261ecSmrg fi 711705b261ecSmrg 71184642e01fSmrg if test "X$skipped_export" != "X:" && 71194642e01fSmrg func_len " $test_cmds" && 71204642e01fSmrg len=$func_len_result && 71214642e01fSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71224642e01fSmrg : 71234642e01fSmrg else 71244642e01fSmrg # The command line is too long to link in one step, link piecewise 71254642e01fSmrg # or, if using GNU ld and skipped_export is not :, use a linker 71264642e01fSmrg # script. 712705b261ecSmrg 71284642e01fSmrg # Save the value of $output and $libobjs because we want to 71294642e01fSmrg # use them later. If we have whole_archive_flag_spec, we 71304642e01fSmrg # want to use save_libobjs as it was before 71314642e01fSmrg # whole_archive_flag_spec was expanded, because we can't 71324642e01fSmrg # assume the linker understands whole_archive_flag_spec. 71334642e01fSmrg # This may have to be revisited, in case too many 71344642e01fSmrg # convenience libraries get linked in and end up exceeding 71354642e01fSmrg # the spec. 71364642e01fSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71374642e01fSmrg save_libobjs=$libobjs 71384642e01fSmrg fi 71394642e01fSmrg save_output=$output 71404642e01fSmrg output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 714105b261ecSmrg 71424642e01fSmrg # Clear the reloadable object creation command queue and 71434642e01fSmrg # initialize k to one. 71444642e01fSmrg test_cmds= 71454642e01fSmrg concat_cmds= 71464642e01fSmrg objlist= 71474642e01fSmrg last_robj= 71484642e01fSmrg k=1 71494642e01fSmrg 71504642e01fSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71514642e01fSmrg output=${output_objdir}/${output_la}.lnkscript 71524642e01fSmrg func_verbose "creating GNU ld script: $output" 71534642e01fSmrg $ECHO 'INPUT (' > $output 71544642e01fSmrg for obj in $save_libobjs 715505b261ecSmrg do 71564642e01fSmrg $ECHO "$obj" >> $output 71574642e01fSmrg done 71584642e01fSmrg $ECHO ')' >> $output 71594642e01fSmrg delfiles="$delfiles $output" 71604642e01fSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71614642e01fSmrg output=${output_objdir}/${output_la}.lnk 71624642e01fSmrg func_verbose "creating linker input file list: $output" 71634642e01fSmrg : > $output 71644642e01fSmrg set x $save_libobjs 71654642e01fSmrg shift 71664642e01fSmrg firstobj= 71674642e01fSmrg if test "$compiler_needs_object" = yes; then 71684642e01fSmrg firstobj="$1 " 71694642e01fSmrg shift 71704642e01fSmrg fi 71714642e01fSmrg for obj 71724642e01fSmrg do 71734642e01fSmrg $ECHO "$obj" >> $output 71744642e01fSmrg done 71754642e01fSmrg delfiles="$delfiles $output" 71764642e01fSmrg output=$firstobj\"$file_list_spec$output\" 71774642e01fSmrg else 71784642e01fSmrg if test -n "$save_libobjs"; then 71794642e01fSmrg func_verbose "creating reloadable object files..." 71804642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 71814642e01fSmrg eval test_cmds=\"$reload_cmds\" 71824642e01fSmrg func_len " $test_cmds" 71834642e01fSmrg len0=$func_len_result 71844642e01fSmrg len=$len0 71854642e01fSmrg 71864642e01fSmrg # Loop over the list of objects to be linked. 71874642e01fSmrg for obj in $save_libobjs 71884642e01fSmrg do 71894642e01fSmrg func_len " $obj" 71904642e01fSmrg func_arith $len + $func_len_result 71914642e01fSmrg len=$func_arith_result 71924642e01fSmrg if test "X$objlist" = X || 71934642e01fSmrg test "$len" -lt "$max_cmd_len"; then 71944642e01fSmrg func_append objlist " $obj" 71954642e01fSmrg else 71964642e01fSmrg # The command $test_cmds is almost too long, add a 71974642e01fSmrg # command to the queue. 71984642e01fSmrg if test "$k" -eq 1 ; then 71994642e01fSmrg # The first file doesn't have a previous command to add. 72004642e01fSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 72014642e01fSmrg else 72024642e01fSmrg # All subsequent reloadable object files will link in 72034642e01fSmrg # the last one created. 72044642e01fSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 72054642e01fSmrg fi 72064642e01fSmrg last_robj=$output_objdir/$output_la-${k}.$objext 72074642e01fSmrg func_arith $k + 1 72084642e01fSmrg k=$func_arith_result 72094642e01fSmrg output=$output_objdir/$output_la-${k}.$objext 72104642e01fSmrg objlist=$obj 72114642e01fSmrg func_len " $last_robj" 72124642e01fSmrg func_arith $len0 + $func_len_result 72134642e01fSmrg len=$func_arith_result 72144642e01fSmrg fi 72154642e01fSmrg done 72164642e01fSmrg # Handle the remaining objects by creating one last 72174642e01fSmrg # reloadable object file. All subsequent reloadable object 72184642e01fSmrg # files will link in the last one created. 72194642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72204642e01fSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72214642e01fSmrg if test -n "$last_robj"; then 72224642e01fSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 72234642e01fSmrg fi 72244642e01fSmrg delfiles="$delfiles $output" 722505b261ecSmrg 72264642e01fSmrg else 72274642e01fSmrg output= 72284642e01fSmrg fi 722905b261ecSmrg 72304642e01fSmrg if ${skipped_export-false}; then 72314642e01fSmrg func_verbose "generating symbol list for \`$libname.la'" 72324642e01fSmrg export_symbols="$output_objdir/$libname.exp" 72334642e01fSmrg $opt_dry_run || $RM $export_symbols 72344642e01fSmrg libobjs=$output 72354642e01fSmrg # Append the command to create the export file. 72364642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72374642e01fSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72384642e01fSmrg if test -n "$last_robj"; then 72394642e01fSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 72404642e01fSmrg fi 724105b261ecSmrg fi 724205b261ecSmrg 72434642e01fSmrg test -n "$save_libobjs" && 72444642e01fSmrg func_verbose "creating a temporary reloadable object file: $output" 724505b261ecSmrg 72464642e01fSmrg # Loop through the commands generated above and execute them. 72474642e01fSmrg save_ifs="$IFS"; IFS='~' 72484642e01fSmrg for cmd in $concat_cmds; do 72494642e01fSmrg IFS="$save_ifs" 72504642e01fSmrg $opt_silent || { 72514642e01fSmrg func_quote_for_expand "$cmd" 72524642e01fSmrg eval "func_echo $func_quote_for_expand_result" 72534642e01fSmrg } 72544642e01fSmrg $opt_dry_run || eval "$cmd" || { 72554642e01fSmrg lt_exit=$? 72564642e01fSmrg 72574642e01fSmrg # Restore the uninstalled library and exit 72584642e01fSmrg if test "$mode" = relink; then 72594642e01fSmrg ( cd "$output_objdir" && \ 72604642e01fSmrg $RM "${realname}T" && \ 72614642e01fSmrg $MV "${realname}U" "$realname" ) 72624642e01fSmrg fi 726305b261ecSmrg 72644642e01fSmrg exit $lt_exit 72654642e01fSmrg } 72664642e01fSmrg done 72674642e01fSmrg IFS="$save_ifs" 726805b261ecSmrg 72694642e01fSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72704642e01fSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72714642e01fSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 727205b261ecSmrg fi 727305b261ecSmrg fi 727405b261ecSmrg 72754642e01fSmrg if ${skipped_export-false}; then 72764642e01fSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 72774642e01fSmrg tmp_export_symbols="$export_symbols" 72784642e01fSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72794642e01fSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72804642e01fSmrg fi 728105b261ecSmrg 72824642e01fSmrg if test -n "$orig_export_symbols"; then 72834642e01fSmrg # The given exports_symbols file has to be filtered, so filter it. 72844642e01fSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72854642e01fSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 72864642e01fSmrg # 's' commands which not all seds can handle. GNU sed should be fine 72874642e01fSmrg # though. Also, the filter scales superlinearly with the number of 72884642e01fSmrg # global variables. join(1) would be nice here, but unfortunately 72894642e01fSmrg # isn't a blessed tool. 72904642e01fSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72914642e01fSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72924642e01fSmrg export_symbols=$output_objdir/$libname.def 72934642e01fSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72944642e01fSmrg fi 72954642e01fSmrg fi 729605b261ecSmrg 72974642e01fSmrg libobjs=$output 72984642e01fSmrg # Restore the value of output. 72994642e01fSmrg output=$save_output 730005b261ecSmrg 73014642e01fSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 73024642e01fSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 73034642e01fSmrg test "X$libobjs" = "X " && libobjs= 73044642e01fSmrg fi 73054642e01fSmrg # Expand the library linking commands again to reset the 73064642e01fSmrg # value of $libobjs for piecewise linking. 730705b261ecSmrg 73084642e01fSmrg # Do each of the archive commands. 73094642e01fSmrg if test "$module" = yes && test -n "$module_cmds" ; then 73104642e01fSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73114642e01fSmrg cmds=$module_expsym_cmds 73124642e01fSmrg else 73134642e01fSmrg cmds=$module_cmds 731405b261ecSmrg fi 731505b261ecSmrg else 73164642e01fSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73174642e01fSmrg cmds=$archive_expsym_cmds 73184642e01fSmrg else 73194642e01fSmrg cmds=$archive_cmds 73204642e01fSmrg fi 732105b261ecSmrg fi 73224642e01fSmrg fi 732305b261ecSmrg 73244642e01fSmrg if test -n "$delfiles"; then 73254642e01fSmrg # Append the command to remove temporary files to $cmds. 73264642e01fSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 73274642e01fSmrg fi 732805b261ecSmrg 73294642e01fSmrg # Add any objects from preloaded convenience libraries 73304642e01fSmrg if test -n "$dlprefiles"; then 73314642e01fSmrg gentop="$output_objdir/${outputname}x" 73324642e01fSmrg generated="$generated $gentop" 733305b261ecSmrg 73344642e01fSmrg func_extract_archives $gentop $dlprefiles 73354642e01fSmrg libobjs="$libobjs $func_extract_archives_result" 73364642e01fSmrg test "X$libobjs" = "X " && libobjs= 73374642e01fSmrg fi 733805b261ecSmrg 73394642e01fSmrg save_ifs="$IFS"; IFS='~' 73404642e01fSmrg for cmd in $cmds; do 73414642e01fSmrg IFS="$save_ifs" 73424642e01fSmrg eval cmd=\"$cmd\" 73434642e01fSmrg $opt_silent || { 73444642e01fSmrg func_quote_for_expand "$cmd" 73454642e01fSmrg eval "func_echo $func_quote_for_expand_result" 73464642e01fSmrg } 73474642e01fSmrg $opt_dry_run || eval "$cmd" || { 73484642e01fSmrg lt_exit=$? 734905b261ecSmrg 73504642e01fSmrg # Restore the uninstalled library and exit 73514642e01fSmrg if test "$mode" = relink; then 73524642e01fSmrg ( cd "$output_objdir" && \ 73534642e01fSmrg $RM "${realname}T" && \ 73544642e01fSmrg $MV "${realname}U" "$realname" ) 73554642e01fSmrg fi 735605b261ecSmrg 73574642e01fSmrg exit $lt_exit 73584642e01fSmrg } 73594642e01fSmrg done 73604642e01fSmrg IFS="$save_ifs" 736105b261ecSmrg 73624642e01fSmrg # Restore the uninstalled library and exit 73634642e01fSmrg if test "$mode" = relink; then 73644642e01fSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 736505b261ecSmrg 73664642e01fSmrg if test -n "$convenience"; then 73674642e01fSmrg if test -z "$whole_archive_flag_spec"; then 73684642e01fSmrg func_show_eval '${RM}r "$gentop"' 73694642e01fSmrg fi 73704642e01fSmrg fi 737105b261ecSmrg 73724642e01fSmrg exit $EXIT_SUCCESS 73734642e01fSmrg fi 73744642e01fSmrg 73754642e01fSmrg # Create links to the real library. 73764642e01fSmrg for linkname in $linknames; do 73774642e01fSmrg if test "$realname" != "$linkname"; then 73784642e01fSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 737905b261ecSmrg fi 738005b261ecSmrg done 738105b261ecSmrg 73824642e01fSmrg # If -module or -export-dynamic was specified, set the dlname. 73834642e01fSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 73844642e01fSmrg # On all known operating systems, these are identical. 73854642e01fSmrg dlname="$soname" 73864642e01fSmrg fi 73874642e01fSmrg fi 738805b261ecSmrg ;; 738905b261ecSmrg 73904642e01fSmrg obj) 73914642e01fSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73924642e01fSmrg func_warning "\`-dlopen' is ignored for objects" 73934642e01fSmrg fi 739405b261ecSmrg 73954642e01fSmrg case " $deplibs" in 73964642e01fSmrg *\ -l* | *\ -L*) 73974642e01fSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 739805b261ecSmrg esac 739905b261ecSmrg 74004642e01fSmrg test -n "$rpath" && \ 74014642e01fSmrg func_warning "\`-rpath' is ignored for objects" 74024642e01fSmrg 74034642e01fSmrg test -n "$xrpath" && \ 74044642e01fSmrg func_warning "\`-R' is ignored for objects" 740505b261ecSmrg 74064642e01fSmrg test -n "$vinfo" && \ 74074642e01fSmrg func_warning "\`-version-info' is ignored for objects" 740805b261ecSmrg 74094642e01fSmrg test -n "$release" && \ 74104642e01fSmrg func_warning "\`-release' is ignored for objects" 74114642e01fSmrg 74124642e01fSmrg case $output in 74134642e01fSmrg *.lo) 74144642e01fSmrg test -n "$objs$old_deplibs" && \ 74154642e01fSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74164642e01fSmrg 74174642e01fSmrg libobj=$output 74184642e01fSmrg func_lo2o "$libobj" 74194642e01fSmrg obj=$func_lo2o_result 742005b261ecSmrg ;; 742105b261ecSmrg *) 74224642e01fSmrg libobj= 74234642e01fSmrg obj="$output" 742405b261ecSmrg ;; 742505b261ecSmrg esac 742605b261ecSmrg 74274642e01fSmrg # Delete the old objects. 74284642e01fSmrg $opt_dry_run || $RM $obj $libobj 742905b261ecSmrg 74304642e01fSmrg # Objects from convenience libraries. This assumes 74314642e01fSmrg # single-version convenience libraries. Whenever we create 74324642e01fSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 74334642e01fSmrg # the extraction. 74344642e01fSmrg reload_conv_objs= 74354642e01fSmrg gentop= 74364642e01fSmrg # reload_cmds runs $LD directly, so let us get rid of 74374642e01fSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 74384642e01fSmrg # turning comma into space.. 74394642e01fSmrg wl= 744005b261ecSmrg 74414642e01fSmrg if test -n "$convenience"; then 74424642e01fSmrg if test -n "$whole_archive_flag_spec"; then 74434642e01fSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74444642e01fSmrg reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74454642e01fSmrg else 74464642e01fSmrg gentop="$output_objdir/${obj}x" 74474642e01fSmrg generated="$generated $gentop" 744805b261ecSmrg 74494642e01fSmrg func_extract_archives $gentop $convenience 74504642e01fSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 74514642e01fSmrg fi 745205b261ecSmrg fi 745305b261ecSmrg 74544642e01fSmrg # Create the old-style object. 74554642e01fSmrg reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 745605b261ecSmrg 74574642e01fSmrg output="$obj" 74584642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 745905b261ecSmrg 74604642e01fSmrg # Exit if we aren't doing a library object file. 74614642e01fSmrg if test -z "$libobj"; then 74624642e01fSmrg if test -n "$gentop"; then 74634642e01fSmrg func_show_eval '${RM}r "$gentop"' 74644642e01fSmrg fi 74654642e01fSmrg 74664642e01fSmrg exit $EXIT_SUCCESS 746705b261ecSmrg fi 74684642e01fSmrg 74694642e01fSmrg if test "$build_libtool_libs" != yes; then 74704642e01fSmrg if test -n "$gentop"; then 74714642e01fSmrg func_show_eval '${RM}r "$gentop"' 74724642e01fSmrg fi 74734642e01fSmrg 74744642e01fSmrg # Create an invalid libtool object if no PIC, so that we don't 74754642e01fSmrg # accidentally link it into a program. 74764642e01fSmrg # $show "echo timestamp > $libobj" 74774642e01fSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74784642e01fSmrg exit $EXIT_SUCCESS 74794642e01fSmrg fi 74804642e01fSmrg 74814642e01fSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 74824642e01fSmrg # Only do commands if we really have different PIC objects. 74834642e01fSmrg reload_objs="$libobjs $reload_conv_objs" 74844642e01fSmrg output="$libobj" 74854642e01fSmrg func_execute_cmds "$reload_cmds" 'exit $?' 74864642e01fSmrg fi 74874642e01fSmrg 74884642e01fSmrg if test -n "$gentop"; then 74894642e01fSmrg func_show_eval '${RM}r "$gentop"' 74904642e01fSmrg fi 74914642e01fSmrg 74924642e01fSmrg exit $EXIT_SUCCESS 749305b261ecSmrg ;; 749405b261ecSmrg 74954642e01fSmrg prog) 74964642e01fSmrg case $host in 74974642e01fSmrg *cygwin*) func_stripname '' '.exe' "$output" 74984642e01fSmrg output=$func_stripname_result.exe;; 74994642e01fSmrg esac 75004642e01fSmrg test -n "$vinfo" && \ 75014642e01fSmrg func_warning "\`-version-info' is ignored for programs" 750205b261ecSmrg 75034642e01fSmrg test -n "$release" && \ 75044642e01fSmrg func_warning "\`-release' is ignored for programs" 750505b261ecSmrg 75064642e01fSmrg test "$preload" = yes \ 75074642e01fSmrg && test "$dlopen_support" = unknown \ 75084642e01fSmrg && test "$dlopen_self" = unknown \ 75094642e01fSmrg && test "$dlopen_self_static" = unknown && \ 75104642e01fSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75114642e01fSmrg 75124642e01fSmrg case $host in 75134642e01fSmrg *-*-rhapsody* | *-*-darwin1.[012]) 75144642e01fSmrg # On Rhapsody replace the C library is the System framework 75154642e01fSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75164642e01fSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 751705b261ecSmrg ;; 75184642e01fSmrg esac 751905b261ecSmrg 75204642e01fSmrg case $host in 75214642e01fSmrg *-*-darwin*) 75224642e01fSmrg # Don't allow lazy linking, it breaks C++ global constructors 75234642e01fSmrg # But is supposedly fixed on 10.4 or later (yay!). 75244642e01fSmrg if test "$tagname" = CXX ; then 75254642e01fSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75264642e01fSmrg 10.[0123]) 75274642e01fSmrg compile_command="$compile_command ${wl}-bind_at_load" 75284642e01fSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 75294642e01fSmrg ;; 75304642e01fSmrg esac 753105b261ecSmrg fi 75324642e01fSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75334642e01fSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75344642e01fSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75354642e01fSmrg ;; 75364642e01fSmrg esac 753705b261ecSmrg 753805b261ecSmrg 75394642e01fSmrg # move library search paths that coincide with paths to not yet 75404642e01fSmrg # installed libraries to the beginning of the library search list 75414642e01fSmrg new_libs= 75424642e01fSmrg for path in $notinst_path; do 75434642e01fSmrg case " $new_libs " in 75444642e01fSmrg *" -L$path/$objdir "*) ;; 75454642e01fSmrg *) 75464642e01fSmrg case " $compile_deplibs " in 75474642e01fSmrg *" -L$path/$objdir "*) 75484642e01fSmrg new_libs="$new_libs -L$path/$objdir" ;; 754905b261ecSmrg esac 75504642e01fSmrg ;; 75514642e01fSmrg esac 75524642e01fSmrg done 75534642e01fSmrg for deplib in $compile_deplibs; do 75544642e01fSmrg case $deplib in 75554642e01fSmrg -L*) 75564642e01fSmrg case " $new_libs " in 75574642e01fSmrg *" $deplib "*) ;; 75584642e01fSmrg *) new_libs="$new_libs $deplib" ;; 755905b261ecSmrg esac 75604642e01fSmrg ;; 75614642e01fSmrg *) new_libs="$new_libs $deplib" ;; 75624642e01fSmrg esac 75634642e01fSmrg done 75644642e01fSmrg compile_deplibs="$new_libs" 756505b261ecSmrg 756605b261ecSmrg 75674642e01fSmrg compile_command="$compile_command $compile_deplibs" 75684642e01fSmrg finalize_command="$finalize_command $finalize_deplibs" 756905b261ecSmrg 75704642e01fSmrg if test -n "$rpath$xrpath"; then 75714642e01fSmrg # If the user specified any rpath flags, then add them. 75724642e01fSmrg for libdir in $rpath $xrpath; do 75734642e01fSmrg # This is the magic to use -rpath. 75744642e01fSmrg case "$finalize_rpath " in 75754642e01fSmrg *" $libdir "*) ;; 75764642e01fSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 75774642e01fSmrg esac 75784642e01fSmrg done 75794642e01fSmrg fi 758005b261ecSmrg 75814642e01fSmrg # Now hardcode the library paths 75824642e01fSmrg rpath= 75834642e01fSmrg hardcode_libdirs= 75844642e01fSmrg for libdir in $compile_rpath $finalize_rpath; do 75854642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 75864642e01fSmrg if test -n "$hardcode_libdir_separator"; then 75874642e01fSmrg if test -z "$hardcode_libdirs"; then 75884642e01fSmrg hardcode_libdirs="$libdir" 75894642e01fSmrg else 75904642e01fSmrg # Just accumulate the unique libdirs. 75914642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75924642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75934642e01fSmrg ;; 75944642e01fSmrg *) 75954642e01fSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75964642e01fSmrg ;; 75974642e01fSmrg esac 75984642e01fSmrg fi 759905b261ecSmrg else 76004642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 76014642e01fSmrg rpath="$rpath $flag" 760205b261ecSmrg fi 76034642e01fSmrg elif test -n "$runpath_var"; then 76044642e01fSmrg case "$perm_rpath " in 76054642e01fSmrg *" $libdir "*) ;; 76064642e01fSmrg *) perm_rpath="$perm_rpath $libdir" ;; 76074642e01fSmrg esac 76084642e01fSmrg fi 76094642e01fSmrg case $host in 76104642e01fSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76114642e01fSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76124642e01fSmrg case :$dllsearchpath: in 76134642e01fSmrg *":$libdir:"*) ;; 76144642e01fSmrg ::) dllsearchpath=$libdir;; 76154642e01fSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 76164642e01fSmrg esac 76174642e01fSmrg case :$dllsearchpath: in 76184642e01fSmrg *":$testbindir:"*) ;; 76194642e01fSmrg ::) dllsearchpath=$testbindir;; 76204642e01fSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 76214642e01fSmrg esac 76224642e01fSmrg ;; 76234642e01fSmrg esac 76244642e01fSmrg done 76254642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 76264642e01fSmrg if test -n "$hardcode_libdir_separator" && 76274642e01fSmrg test -n "$hardcode_libdirs"; then 76284642e01fSmrg libdir="$hardcode_libdirs" 76294642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 76304642e01fSmrg fi 76314642e01fSmrg compile_rpath="$rpath" 763205b261ecSmrg 76334642e01fSmrg rpath= 76344642e01fSmrg hardcode_libdirs= 76354642e01fSmrg for libdir in $finalize_rpath; do 76364642e01fSmrg if test -n "$hardcode_libdir_flag_spec"; then 76374642e01fSmrg if test -n "$hardcode_libdir_separator"; then 76384642e01fSmrg if test -z "$hardcode_libdirs"; then 76394642e01fSmrg hardcode_libdirs="$libdir" 76404642e01fSmrg else 76414642e01fSmrg # Just accumulate the unique libdirs. 76424642e01fSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76434642e01fSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76444642e01fSmrg ;; 76454642e01fSmrg *) 76464642e01fSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76474642e01fSmrg ;; 76484642e01fSmrg esac 76494642e01fSmrg fi 765005b261ecSmrg else 76514642e01fSmrg eval flag=\"$hardcode_libdir_flag_spec\" 76524642e01fSmrg rpath="$rpath $flag" 765305b261ecSmrg fi 76544642e01fSmrg elif test -n "$runpath_var"; then 76554642e01fSmrg case "$finalize_perm_rpath " in 76564642e01fSmrg *" $libdir "*) ;; 76574642e01fSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76584642e01fSmrg esac 765905b261ecSmrg fi 76604642e01fSmrg done 76614642e01fSmrg # Substitute the hardcoded libdirs into the rpath. 76624642e01fSmrg if test -n "$hardcode_libdir_separator" && 76634642e01fSmrg test -n "$hardcode_libdirs"; then 76644642e01fSmrg libdir="$hardcode_libdirs" 76654642e01fSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 76664642e01fSmrg fi 76674642e01fSmrg finalize_rpath="$rpath" 766805b261ecSmrg 76694642e01fSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 76704642e01fSmrg # Transform all the library objects into standard objects. 76714642e01fSmrg compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76724642e01fSmrg finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76734642e01fSmrg fi 767405b261ecSmrg 76754642e01fSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 767605b261ecSmrg 76774642e01fSmrg # template prelinking step 76784642e01fSmrg if test -n "$prelink_cmds"; then 76794642e01fSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 76804642e01fSmrg fi 768105b261ecSmrg 76824642e01fSmrg wrappers_required=yes 76834642e01fSmrg case $host in 76844642e01fSmrg *cygwin* | *mingw* ) 76854642e01fSmrg if test "$build_libtool_libs" != yes; then 76864642e01fSmrg wrappers_required=no 76874642e01fSmrg fi 76884642e01fSmrg ;; 76894642e01fSmrg *cegcc) 76904642e01fSmrg # Disable wrappers for cegcc, we are cross compiling anyway. 76914642e01fSmrg wrappers_required=no 76924642e01fSmrg ;; 76934642e01fSmrg *) 76944642e01fSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76954642e01fSmrg wrappers_required=no 76964642e01fSmrg fi 76974642e01fSmrg ;; 76984642e01fSmrg esac 76994642e01fSmrg if test "$wrappers_required" = no; then 77004642e01fSmrg # Replace the output file specification. 77014642e01fSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77024642e01fSmrg link_command="$compile_command$compile_rpath" 770305b261ecSmrg 77044642e01fSmrg # We have no uninstalled library dependencies, so finalize right now. 77054642e01fSmrg exit_status=0 77064642e01fSmrg func_show_eval "$link_command" 'exit_status=$?' 770705b261ecSmrg 77084642e01fSmrg # Delete the generated files. 77094642e01fSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 77104642e01fSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 771105b261ecSmrg fi 771205b261ecSmrg 77134642e01fSmrg exit $exit_status 77144642e01fSmrg fi 771505b261ecSmrg 77164642e01fSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 77174642e01fSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77184642e01fSmrg fi 77194642e01fSmrg if test -n "$finalize_shlibpath"; then 77204642e01fSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77214642e01fSmrg fi 772205b261ecSmrg 77234642e01fSmrg compile_var= 77244642e01fSmrg finalize_var= 77254642e01fSmrg if test -n "$runpath_var"; then 77264642e01fSmrg if test -n "$perm_rpath"; then 77274642e01fSmrg # We should set the runpath_var. 77284642e01fSmrg rpath= 77294642e01fSmrg for dir in $perm_rpath; do 77304642e01fSmrg rpath="$rpath$dir:" 77314642e01fSmrg done 77324642e01fSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 773305b261ecSmrg fi 77344642e01fSmrg if test -n "$finalize_perm_rpath"; then 77354642e01fSmrg # We should set the runpath_var. 77364642e01fSmrg rpath= 77374642e01fSmrg for dir in $finalize_perm_rpath; do 77384642e01fSmrg rpath="$rpath$dir:" 77394642e01fSmrg done 77404642e01fSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 774105b261ecSmrg fi 77424642e01fSmrg fi 774305b261ecSmrg 77444642e01fSmrg if test "$no_install" = yes; then 77454642e01fSmrg # We don't need to create a wrapper script. 77464642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 77474642e01fSmrg # Replace the output file specification. 77484642e01fSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77494642e01fSmrg # Delete the old output file. 77504642e01fSmrg $opt_dry_run || $RM $output 77514642e01fSmrg # Link the executable and exit 77524642e01fSmrg func_show_eval "$link_command" 'exit $?' 775305b261ecSmrg exit $EXIT_SUCCESS 77544642e01fSmrg fi 775505b261ecSmrg 77564642e01fSmrg if test "$hardcode_action" = relink; then 77574642e01fSmrg # Fast installation is not supported 77584642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 77594642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 77604642e01fSmrg 77614642e01fSmrg func_warning "this platform does not like uninstalled shared libraries" 77624642e01fSmrg func_warning "\`$output' will be relinked during installation" 77634642e01fSmrg else 77644642e01fSmrg if test "$fast_install" != no; then 77654642e01fSmrg link_command="$finalize_var$compile_command$finalize_rpath" 77664642e01fSmrg if test "$fast_install" = yes; then 77674642e01fSmrg relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77684642e01fSmrg else 77694642e01fSmrg # fast_install is set to needless 77704642e01fSmrg relink_command= 77714642e01fSmrg fi 777205b261ecSmrg else 77734642e01fSmrg link_command="$compile_var$compile_command$compile_rpath" 77744642e01fSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 777505b261ecSmrg fi 77764642e01fSmrg fi 777705b261ecSmrg 77784642e01fSmrg # Replace the output file specification. 77794642e01fSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 778005b261ecSmrg 77814642e01fSmrg # Delete the old output files. 77824642e01fSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 778305b261ecSmrg 77844642e01fSmrg func_show_eval "$link_command" 'exit $?' 778505b261ecSmrg 77864642e01fSmrg # Now create the wrapper script. 77874642e01fSmrg func_verbose "creating $output" 778805b261ecSmrg 77894642e01fSmrg # Quote the relink command for shipping. 77904642e01fSmrg if test -n "$relink_command"; then 77914642e01fSmrg # Preserve any variables that may affect compiler behavior 77924642e01fSmrg for var in $variables_saved_for_relink; do 77934642e01fSmrg if eval test -z \"\${$var+set}\"; then 77944642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77954642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 77964642e01fSmrg relink_command="$var=; export $var; $relink_command" 779705b261ecSmrg else 77984642e01fSmrg func_quote_for_eval "$var_value" 77994642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 780005b261ecSmrg fi 78014642e01fSmrg done 78024642e01fSmrg relink_command="(cd `pwd`; $relink_command)" 78034642e01fSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 78044642e01fSmrg fi 780505b261ecSmrg 78064642e01fSmrg # Quote $ECHO for shipping. 78074642e01fSmrg if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78084642e01fSmrg case $progpath in 78094642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78104642e01fSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 78114642e01fSmrg esac 78124642e01fSmrg qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78134642e01fSmrg else 78144642e01fSmrg qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78154642e01fSmrg fi 78164642e01fSmrg 78174642e01fSmrg # Only actually do things if not in dry run mode. 78184642e01fSmrg $opt_dry_run || { 78194642e01fSmrg # win32 will think the script is a binary if it has 78204642e01fSmrg # a .exe suffix, so we strip it off here. 78214642e01fSmrg case $output in 78224642e01fSmrg *.exe) func_stripname '' '.exe' "$output" 78234642e01fSmrg output=$func_stripname_result ;; 78244642e01fSmrg esac 78254642e01fSmrg # test for cygwin because mv fails w/o .exe extensions 78264642e01fSmrg case $host in 78274642e01fSmrg *cygwin*) 78284642e01fSmrg exeext=.exe 78294642e01fSmrg func_stripname '' '.exe' "$outputname" 78304642e01fSmrg outputname=$func_stripname_result ;; 78314642e01fSmrg *) exeext= ;; 783205b261ecSmrg esac 78334642e01fSmrg case $host in 78344642e01fSmrg *cygwin* | *mingw* ) 78354642e01fSmrg func_dirname_and_basename "$output" "" "." 78364642e01fSmrg output_name=$func_basename_result 78374642e01fSmrg output_path=$func_dirname_result 78384642e01fSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 78394642e01fSmrg cwrapper="$output_path/$output_name.exe" 78404642e01fSmrg $RM $cwrappersource $cwrapper 78414642e01fSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78424642e01fSmrg 78434642e01fSmrg func_emit_cwrapperexe_src > $cwrappersource 78444642e01fSmrg 78454642e01fSmrg # The wrapper executable is built using the $host compiler, 78464642e01fSmrg # because it contains $host paths and files. If cross- 78474642e01fSmrg # compiling, it, like the target executable, must be 78484642e01fSmrg # executed on the $host or under an emulation environment. 78494642e01fSmrg $opt_dry_run || { 78504642e01fSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78514642e01fSmrg $STRIP $cwrapper 78524642e01fSmrg } 785305b261ecSmrg 78544642e01fSmrg # Now, create the wrapper script for func_source use: 78554642e01fSmrg func_ltwrapper_scriptname $cwrapper 78564642e01fSmrg $RM $func_ltwrapper_scriptname_result 78574642e01fSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78584642e01fSmrg $opt_dry_run || { 78594642e01fSmrg # note: this script will not be executed, so do not chmod. 78604642e01fSmrg if test "x$build" = "x$host" ; then 78614642e01fSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78624642e01fSmrg else 78634642e01fSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 78644642e01fSmrg fi 78654642e01fSmrg } 78664642e01fSmrg ;; 78674642e01fSmrg * ) 78684642e01fSmrg $RM $output 78694642e01fSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 787005b261ecSmrg 78714642e01fSmrg func_emit_wrapper no > $output 78724642e01fSmrg chmod +x $output 78734642e01fSmrg ;; 78744642e01fSmrg esac 78754642e01fSmrg } 78764642e01fSmrg exit $EXIT_SUCCESS 78774642e01fSmrg ;; 78784642e01fSmrg esac 787905b261ecSmrg 78804642e01fSmrg # See if we need to build an old-fashioned archive. 78814642e01fSmrg for oldlib in $oldlibs; do 788205b261ecSmrg 78834642e01fSmrg if test "$build_libtool_libs" = convenience; then 78844642e01fSmrg oldobjs="$libobjs_save $symfileobj" 78854642e01fSmrg addlibs="$convenience" 78864642e01fSmrg build_libtool_libs=no 78874642e01fSmrg else 78884642e01fSmrg if test "$build_libtool_libs" = module; then 78894642e01fSmrg oldobjs="$libobjs_save" 78904642e01fSmrg build_libtool_libs=no 78914642e01fSmrg else 78924642e01fSmrg oldobjs="$old_deplibs $non_pic_objects" 78934642e01fSmrg if test "$preload" = yes && test -f "$symfileobj"; then 78944642e01fSmrg oldobjs="$oldobjs $symfileobj" 78954642e01fSmrg fi 78964642e01fSmrg fi 78974642e01fSmrg addlibs="$old_convenience" 789805b261ecSmrg fi 789905b261ecSmrg 79004642e01fSmrg if test -n "$addlibs"; then 79014642e01fSmrg gentop="$output_objdir/${outputname}x" 79024642e01fSmrg generated="$generated $gentop" 790305b261ecSmrg 79044642e01fSmrg func_extract_archives $gentop $addlibs 79054642e01fSmrg oldobjs="$oldobjs $func_extract_archives_result" 79064642e01fSmrg fi 790705b261ecSmrg 79084642e01fSmrg # Do each command in the archive commands. 79094642e01fSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79104642e01fSmrg cmds=$old_archive_from_new_cmds 79114642e01fSmrg else 791205b261ecSmrg 79134642e01fSmrg # Add any objects from preloaded convenience libraries 79144642e01fSmrg if test -n "$dlprefiles"; then 79154642e01fSmrg gentop="$output_objdir/${outputname}x" 79164642e01fSmrg generated="$generated $gentop" 791705b261ecSmrg 79184642e01fSmrg func_extract_archives $gentop $dlprefiles 79194642e01fSmrg oldobjs="$oldobjs $func_extract_archives_result" 79204642e01fSmrg fi 792105b261ecSmrg 79224642e01fSmrg # POSIX demands no paths to be encoded in archives. We have 79234642e01fSmrg # to avoid creating archives with duplicate basenames if we 79244642e01fSmrg # might have to extract them afterwards, e.g., when creating a 79254642e01fSmrg # static archive out of a convenience library, or when linking 79264642e01fSmrg # the entirety of a libtool archive into another (currently 79274642e01fSmrg # not supported by libtool). 79284642e01fSmrg if (for obj in $oldobjs 79294642e01fSmrg do 79304642e01fSmrg func_basename "$obj" 79314642e01fSmrg $ECHO "$func_basename_result" 79324642e01fSmrg done | sort | sort -uc >/dev/null 2>&1); then 79334642e01fSmrg : 79344642e01fSmrg else 79354642e01fSmrg $ECHO "copying selected object files to avoid basename conflicts..." 79364642e01fSmrg gentop="$output_objdir/${outputname}x" 79374642e01fSmrg generated="$generated $gentop" 79384642e01fSmrg func_mkdir_p "$gentop" 79394642e01fSmrg save_oldobjs=$oldobjs 79404642e01fSmrg oldobjs= 79414642e01fSmrg counter=1 79424642e01fSmrg for obj in $save_oldobjs 79434642e01fSmrg do 79444642e01fSmrg func_basename "$obj" 79454642e01fSmrg objbase="$func_basename_result" 79464642e01fSmrg case " $oldobjs " in 79474642e01fSmrg " ") oldobjs=$obj ;; 79484642e01fSmrg *[\ /]"$objbase "*) 79494642e01fSmrg while :; do 79504642e01fSmrg # Make sure we don't pick an alternate name that also 79514642e01fSmrg # overlaps. 79524642e01fSmrg newobj=lt$counter-$objbase 79534642e01fSmrg func_arith $counter + 1 79544642e01fSmrg counter=$func_arith_result 79554642e01fSmrg case " $oldobjs " in 79564642e01fSmrg *[\ /]"$newobj "*) ;; 79574642e01fSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79584642e01fSmrg esac 79594642e01fSmrg done 79604642e01fSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79614642e01fSmrg oldobjs="$oldobjs $gentop/$newobj" 79624642e01fSmrg ;; 79634642e01fSmrg *) oldobjs="$oldobjs $obj" ;; 79644642e01fSmrg esac 796505b261ecSmrg done 796605b261ecSmrg fi 79674642e01fSmrg eval cmds=\"$old_archive_cmds\" 796805b261ecSmrg 79694642e01fSmrg func_len " $cmds" 79704642e01fSmrg len=$func_len_result 79714642e01fSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79724642e01fSmrg cmds=$old_archive_cmds 79734642e01fSmrg else 79744642e01fSmrg # the command line is too long to link in one step, link in parts 79754642e01fSmrg func_verbose "using piecewise archive linking..." 79764642e01fSmrg save_RANLIB=$RANLIB 79774642e01fSmrg RANLIB=: 79784642e01fSmrg objlist= 79794642e01fSmrg concat_cmds= 79804642e01fSmrg save_oldobjs=$oldobjs 79814642e01fSmrg oldobjs= 79824642e01fSmrg # Is there a better way of finding the last object in the list? 79834642e01fSmrg for obj in $save_oldobjs 79844642e01fSmrg do 79854642e01fSmrg last_oldobj=$obj 79864642e01fSmrg done 79874642e01fSmrg eval test_cmds=\"$old_archive_cmds\" 79884642e01fSmrg func_len " $test_cmds" 79894642e01fSmrg len0=$func_len_result 79904642e01fSmrg len=$len0 79914642e01fSmrg for obj in $save_oldobjs 79924642e01fSmrg do 79934642e01fSmrg func_len " $obj" 79944642e01fSmrg func_arith $len + $func_len_result 79954642e01fSmrg len=$func_arith_result 79964642e01fSmrg func_append objlist " $obj" 79974642e01fSmrg if test "$len" -lt "$max_cmd_len"; then 79984642e01fSmrg : 79994642e01fSmrg else 80004642e01fSmrg # the above command should be used before it gets too long 80014642e01fSmrg oldobjs=$objlist 80024642e01fSmrg if test "$obj" = "$last_oldobj" ; then 80034642e01fSmrg RANLIB=$save_RANLIB 80044642e01fSmrg fi 80054642e01fSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 80064642e01fSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80074642e01fSmrg objlist= 80084642e01fSmrg len=$len0 80094642e01fSmrg fi 80104642e01fSmrg done 80114642e01fSmrg RANLIB=$save_RANLIB 80124642e01fSmrg oldobjs=$objlist 80134642e01fSmrg if test "X$oldobjs" = "X" ; then 80144642e01fSmrg eval cmds=\"\$concat_cmds\" 80154642e01fSmrg else 80164642e01fSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80174642e01fSmrg fi 80184642e01fSmrg fi 80194642e01fSmrg fi 80204642e01fSmrg func_execute_cmds "$cmds" 'exit $?' 802105b261ecSmrg done 802205b261ecSmrg 80234642e01fSmrg test -n "$generated" && \ 80244642e01fSmrg func_show_eval "${RM}r$generated" 802505b261ecSmrg 80264642e01fSmrg # Now create the libtool archive. 80274642e01fSmrg case $output in 80284642e01fSmrg *.la) 80294642e01fSmrg old_library= 80304642e01fSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 80314642e01fSmrg func_verbose "creating $output" 803205b261ecSmrg 80334642e01fSmrg # Preserve any variables that may affect compiler behavior 80344642e01fSmrg for var in $variables_saved_for_relink; do 80354642e01fSmrg if eval test -z \"\${$var+set}\"; then 80364642e01fSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80374642e01fSmrg elif eval var_value=\$$var; test -z "$var_value"; then 80384642e01fSmrg relink_command="$var=; export $var; $relink_command" 803905b261ecSmrg else 80404642e01fSmrg func_quote_for_eval "$var_value" 80414642e01fSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 804205b261ecSmrg fi 80434642e01fSmrg done 80444642e01fSmrg # Quote the link command for shipping. 80454642e01fSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80464642e01fSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80474642e01fSmrg if test "$hardcode_automatic" = yes ; then 80484642e01fSmrg relink_command= 80494642e01fSmrg fi 805005b261ecSmrg 80514642e01fSmrg # Only create the output if not a dry run. 80524642e01fSmrg $opt_dry_run || { 80534642e01fSmrg for installed in no yes; do 80544642e01fSmrg if test "$installed" = yes; then 80554642e01fSmrg if test -z "$install_libdir"; then 80564642e01fSmrg break 80574642e01fSmrg fi 80584642e01fSmrg output="$output_objdir/$outputname"i 80594642e01fSmrg # Replace all uninstalled libtool libraries with the installed ones 80604642e01fSmrg newdependency_libs= 80614642e01fSmrg for deplib in $dependency_libs; do 80624642e01fSmrg case $deplib in 80634642e01fSmrg *.la) 80644642e01fSmrg func_basename "$deplib" 80654642e01fSmrg name="$func_basename_result" 80664642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80674642e01fSmrg test -z "$libdir" && \ 80684642e01fSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 80694642e01fSmrg newdependency_libs="$newdependency_libs $libdir/$name" 80704642e01fSmrg ;; 80714642e01fSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 80724642e01fSmrg esac 80734642e01fSmrg done 80744642e01fSmrg dependency_libs="$newdependency_libs" 80754642e01fSmrg newdlfiles= 80764642e01fSmrg 80774642e01fSmrg for lib in $dlfiles; do 80784642e01fSmrg case $lib in 80794642e01fSmrg *.la) 80804642e01fSmrg func_basename "$lib" 80814642e01fSmrg name="$func_basename_result" 80824642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80834642e01fSmrg test -z "$libdir" && \ 80844642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 80854642e01fSmrg newdlfiles="$newdlfiles $libdir/$name" 80864642e01fSmrg ;; 80874642e01fSmrg *) newdlfiles="$newdlfiles $lib" ;; 80884642e01fSmrg esac 80894642e01fSmrg done 80904642e01fSmrg dlfiles="$newdlfiles" 80914642e01fSmrg newdlprefiles= 80924642e01fSmrg for lib in $dlprefiles; do 80934642e01fSmrg case $lib in 80944642e01fSmrg *.la) 80954642e01fSmrg # Only pass preopened files to the pseudo-archive (for 80964642e01fSmrg # eventual linking with the app. that links it) if we 80974642e01fSmrg # didn't already link the preopened objects directly into 80984642e01fSmrg # the library: 80994642e01fSmrg func_basename "$lib" 81004642e01fSmrg name="$func_basename_result" 81014642e01fSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81024642e01fSmrg test -z "$libdir" && \ 81034642e01fSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 81044642e01fSmrg newdlprefiles="$newdlprefiles $libdir/$name" 81054642e01fSmrg ;; 81064642e01fSmrg esac 81074642e01fSmrg done 81084642e01fSmrg dlprefiles="$newdlprefiles" 81094642e01fSmrg else 81104642e01fSmrg newdlfiles= 81114642e01fSmrg for lib in $dlfiles; do 81124642e01fSmrg case $lib in 81134642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81144642e01fSmrg *) abs=`pwd`"/$lib" ;; 81154642e01fSmrg esac 81164642e01fSmrg newdlfiles="$newdlfiles $abs" 81174642e01fSmrg done 81184642e01fSmrg dlfiles="$newdlfiles" 81194642e01fSmrg newdlprefiles= 81204642e01fSmrg for lib in $dlprefiles; do 81214642e01fSmrg case $lib in 81224642e01fSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81234642e01fSmrg *) abs=`pwd`"/$lib" ;; 81244642e01fSmrg esac 81254642e01fSmrg newdlprefiles="$newdlprefiles $abs" 81264642e01fSmrg done 81274642e01fSmrg dlprefiles="$newdlprefiles" 81284642e01fSmrg fi 81294642e01fSmrg $RM $output 81304642e01fSmrg # place dlname in correct position for cygwin 81314642e01fSmrg tdlname=$dlname 81324642e01fSmrg case $host,$output,$installed,$module,$dlname in 81334642e01fSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81344642e01fSmrg esac 81354642e01fSmrg $ECHO > $output "\ 81364642e01fSmrg# $outputname - a libtool library file 81374642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81384642e01fSmrg# 81394642e01fSmrg# Please DO NOT delete this file! 81404642e01fSmrg# It is necessary for linking the library. 814105b261ecSmrg 81424642e01fSmrg# The name that we can dlopen(3). 81434642e01fSmrgdlname='$tdlname' 814405b261ecSmrg 81454642e01fSmrg# Names of this library. 81464642e01fSmrglibrary_names='$library_names' 814705b261ecSmrg 81484642e01fSmrg# The name of the static archive. 81494642e01fSmrgold_library='$old_library' 815005b261ecSmrg 81514642e01fSmrg# Linker flags that can not go in dependency_libs. 81524642e01fSmrginherited_linker_flags='$new_inherited_linker_flags' 815305b261ecSmrg 81544642e01fSmrg# Libraries that this one depends upon. 81554642e01fSmrgdependency_libs='$dependency_libs' 815605b261ecSmrg 81574642e01fSmrg# Names of additional weak libraries provided by this library 81584642e01fSmrgweak_library_names='$weak_libs' 815905b261ecSmrg 81604642e01fSmrg# Version information for $libname. 81614642e01fSmrgcurrent=$current 81624642e01fSmrgage=$age 81634642e01fSmrgrevision=$revision 816405b261ecSmrg 81654642e01fSmrg# Is this an already installed library? 81664642e01fSmrginstalled=$installed 816705b261ecSmrg 81684642e01fSmrg# Should we warn about portability when linking against -modules? 81694642e01fSmrgshouldnotlink=$module 817005b261ecSmrg 81714642e01fSmrg# Files to dlopen/dlpreopen 81724642e01fSmrgdlopen='$dlfiles' 81734642e01fSmrgdlpreopen='$dlprefiles' 817405b261ecSmrg 81754642e01fSmrg# Directory that this library needs to be installed in: 81764642e01fSmrglibdir='$install_libdir'" 81774642e01fSmrg if test "$installed" = no && test "$need_relink" = yes; then 81784642e01fSmrg $ECHO >> $output "\ 81794642e01fSmrgrelink_command=\"$relink_command\"" 81804642e01fSmrg fi 81814642e01fSmrg done 81824642e01fSmrg } 818305b261ecSmrg 81844642e01fSmrg # Do a symbolic link so that the libtool archive can be found in 81854642e01fSmrg # LD_LIBRARY_PATH before the program is installed. 81864642e01fSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81874642e01fSmrg ;; 81884642e01fSmrg esac 81894642e01fSmrg exit $EXIT_SUCCESS 81904642e01fSmrg} 819105b261ecSmrg 81924642e01fSmrg{ test "$mode" = link || test "$mode" = relink; } && 81934642e01fSmrg func_mode_link ${1+"$@"} 819405b261ecSmrg 819505b261ecSmrg 81964642e01fSmrg# func_mode_uninstall arg... 81974642e01fSmrgfunc_mode_uninstall () 81984642e01fSmrg{ 81994642e01fSmrg $opt_debug 82004642e01fSmrg RM="$nonopt" 820105b261ecSmrg files= 820205b261ecSmrg rmforce= 820305b261ecSmrg exit_status=0 820405b261ecSmrg 820505b261ecSmrg # This variable tells wrapper scripts just to set variables rather 820605b261ecSmrg # than running their programs. 820705b261ecSmrg libtool_install_magic="$magic" 820805b261ecSmrg 820905b261ecSmrg for arg 821005b261ecSmrg do 821105b261ecSmrg case $arg in 82124642e01fSmrg -f) RM="$RM $arg"; rmforce=yes ;; 82134642e01fSmrg -*) RM="$RM $arg" ;; 821405b261ecSmrg *) files="$files $arg" ;; 821505b261ecSmrg esac 821605b261ecSmrg done 821705b261ecSmrg 82184642e01fSmrg test -z "$RM" && \ 82194642e01fSmrg func_fatal_help "you must specify an RM program" 822005b261ecSmrg 822105b261ecSmrg rmdirs= 822205b261ecSmrg 822305b261ecSmrg origobjdir="$objdir" 822405b261ecSmrg for file in $files; do 82254642e01fSmrg func_dirname "$file" "" "." 82264642e01fSmrg dir="$func_dirname_result" 82274642e01fSmrg if test "X$dir" = X.; then 822805b261ecSmrg objdir="$origobjdir" 822905b261ecSmrg else 823005b261ecSmrg objdir="$dir/$origobjdir" 823105b261ecSmrg fi 82324642e01fSmrg func_basename "$file" 82334642e01fSmrg name="$func_basename_result" 823405b261ecSmrg test "$mode" = uninstall && objdir="$dir" 823505b261ecSmrg 823605b261ecSmrg # Remember objdir for removal later, being careful to avoid duplicates 823705b261ecSmrg if test "$mode" = clean; then 823805b261ecSmrg case " $rmdirs " in 823905b261ecSmrg *" $objdir "*) ;; 824005b261ecSmrg *) rmdirs="$rmdirs $objdir" ;; 824105b261ecSmrg esac 824205b261ecSmrg fi 824305b261ecSmrg 824405b261ecSmrg # Don't error if the file doesn't exist and rm -f was used. 82454642e01fSmrg if { test -L "$file"; } >/dev/null 2>&1 || 82464642e01fSmrg { test -h "$file"; } >/dev/null 2>&1 || 82474642e01fSmrg test -f "$file"; then 824805b261ecSmrg : 824905b261ecSmrg elif test -d "$file"; then 825005b261ecSmrg exit_status=1 825105b261ecSmrg continue 825205b261ecSmrg elif test "$rmforce" = yes; then 825305b261ecSmrg continue 825405b261ecSmrg fi 825505b261ecSmrg 825605b261ecSmrg rmfiles="$file" 825705b261ecSmrg 825805b261ecSmrg case $name in 825905b261ecSmrg *.la) 826005b261ecSmrg # Possibly a libtool archive, so verify it. 82614642e01fSmrg if func_lalib_p "$file"; then 82624642e01fSmrg func_source $dir/$name 826305b261ecSmrg 826405b261ecSmrg # Delete the libtool libraries and symlinks. 826505b261ecSmrg for n in $library_names; do 826605b261ecSmrg rmfiles="$rmfiles $objdir/$n" 826705b261ecSmrg done 826805b261ecSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 826905b261ecSmrg 827005b261ecSmrg case "$mode" in 827105b261ecSmrg clean) 827205b261ecSmrg case " $library_names " in 827305b261ecSmrg # " " in the beginning catches empty $dlname 827405b261ecSmrg *" $dlname "*) ;; 827505b261ecSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 827605b261ecSmrg esac 82774642e01fSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 827805b261ecSmrg ;; 827905b261ecSmrg uninstall) 828005b261ecSmrg if test -n "$library_names"; then 828105b261ecSmrg # Do each command in the postuninstall commands. 82824642e01fSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 828305b261ecSmrg fi 828405b261ecSmrg 828505b261ecSmrg if test -n "$old_library"; then 828605b261ecSmrg # Do each command in the old_postuninstall commands. 82874642e01fSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 828805b261ecSmrg fi 828905b261ecSmrg # FIXME: should reinstall the best remaining shared library. 829005b261ecSmrg ;; 829105b261ecSmrg esac 829205b261ecSmrg fi 829305b261ecSmrg ;; 829405b261ecSmrg 829505b261ecSmrg *.lo) 829605b261ecSmrg # Possibly a libtool object, so verify it. 82974642e01fSmrg if func_lalib_p "$file"; then 829805b261ecSmrg 829905b261ecSmrg # Read the .lo file 83004642e01fSmrg func_source $dir/$name 830105b261ecSmrg 830205b261ecSmrg # Add PIC object to the list of files to remove. 83034642e01fSmrg if test -n "$pic_object" && 83044642e01fSmrg test "$pic_object" != none; then 830505b261ecSmrg rmfiles="$rmfiles $dir/$pic_object" 830605b261ecSmrg fi 830705b261ecSmrg 830805b261ecSmrg # Add non-PIC object to the list of files to remove. 83094642e01fSmrg if test -n "$non_pic_object" && 83104642e01fSmrg test "$non_pic_object" != none; then 831105b261ecSmrg rmfiles="$rmfiles $dir/$non_pic_object" 831205b261ecSmrg fi 831305b261ecSmrg fi 831405b261ecSmrg ;; 831505b261ecSmrg 831605b261ecSmrg *) 831705b261ecSmrg if test "$mode" = clean ; then 831805b261ecSmrg noexename=$name 831905b261ecSmrg case $file in 832005b261ecSmrg *.exe) 83214642e01fSmrg func_stripname '' '.exe' "$file" 83224642e01fSmrg file=$func_stripname_result 83234642e01fSmrg func_stripname '' '.exe' "$name" 83244642e01fSmrg noexename=$func_stripname_result 832505b261ecSmrg # $file with .exe has already been added to rmfiles, 832605b261ecSmrg # add $file without .exe 832705b261ecSmrg rmfiles="$rmfiles $file" 832805b261ecSmrg ;; 832905b261ecSmrg esac 833005b261ecSmrg # Do a test to see if this is a libtool program. 83314642e01fSmrg if func_ltwrapper_p "$file"; then 83324642e01fSmrg if func_ltwrapper_executable_p "$file"; then 83334642e01fSmrg func_ltwrapper_scriptname "$file" 83344642e01fSmrg relink_command= 83354642e01fSmrg func_source $func_ltwrapper_scriptname_result 83364642e01fSmrg rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83374642e01fSmrg else 83384642e01fSmrg relink_command= 83394642e01fSmrg func_source $dir/$noexename 83404642e01fSmrg fi 834105b261ecSmrg 834205b261ecSmrg # note $name still contains .exe if it was in $file originally 834305b261ecSmrg # as does the version of $file that was added into $rmfiles 834405b261ecSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 834505b261ecSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 834605b261ecSmrg rmfiles="$rmfiles $objdir/lt-$name" 834705b261ecSmrg fi 834805b261ecSmrg if test "X$noexename" != "X$name" ; then 834905b261ecSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 835005b261ecSmrg fi 835105b261ecSmrg fi 835205b261ecSmrg fi 835305b261ecSmrg ;; 835405b261ecSmrg esac 83554642e01fSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 835605b261ecSmrg done 835705b261ecSmrg objdir="$origobjdir" 835805b261ecSmrg 835905b261ecSmrg # Try to remove the ${objdir}s in the directories where we deleted files 836005b261ecSmrg for dir in $rmdirs; do 836105b261ecSmrg if test -d "$dir"; then 83624642e01fSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 836305b261ecSmrg fi 836405b261ecSmrg done 836505b261ecSmrg 836605b261ecSmrg exit $exit_status 83674642e01fSmrg} 836805b261ecSmrg 83694642e01fSmrg{ test "$mode" = uninstall || test "$mode" = clean; } && 83704642e01fSmrg func_mode_uninstall ${1+"$@"} 837105b261ecSmrg 83724642e01fSmrgtest -z "$mode" && { 83734642e01fSmrg help="$generic_help" 83744642e01fSmrg func_fatal_help "you must specify a MODE" 83754642e01fSmrg} 83764642e01fSmrg 83774642e01fSmrgtest -z "$exec_cmd" && \ 83784642e01fSmrg func_fatal_help "invalid operation mode \`$mode'" 837905b261ecSmrg 838005b261ecSmrgif test -n "$exec_cmd"; then 83814642e01fSmrg eval exec "$exec_cmd" 838205b261ecSmrg exit $EXIT_FAILURE 838305b261ecSmrgfi 838405b261ecSmrg 83854642e01fSmrgexit $exit_status 838605b261ecSmrg 838705b261ecSmrg 838805b261ecSmrg# The TAGs below are defined such that we never get into a situation 838905b261ecSmrg# in which we disable both kinds of libraries. Given conflicting 839005b261ecSmrg# choices, we go for a static library, that is the most portable, 839105b261ecSmrg# since we can't tell whether shared libraries were disabled because 839205b261ecSmrg# the user asked for that or because the platform doesn't support 839305b261ecSmrg# them. This is particularly important on AIX, because we don't 839405b261ecSmrg# support having both static and shared libraries enabled at the same 839505b261ecSmrg# time on that platform, so we default to a shared-only configuration. 839605b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only 839705b261ecSmrg# configuration. But we'll never go from static-only to shared-only. 839805b261ecSmrg 839905b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 84004642e01fSmrgbuild_libtool_libs=no 84014642e01fSmrgbuild_old_libs=yes 840205b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 840305b261ecSmrg 840405b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 84054642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 840605b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static 840705b261ecSmrg 840805b261ecSmrg# Local Variables: 840905b261ecSmrg# mode:shell-script 841005b261ecSmrg# sh-indentation:2 841105b261ecSmrg# End: 84124642e01fSmrg# vi:sw=2 84134642e01fSmrg 8414