ltmain.sh revision 775e7de9
1775e7de9Smrg# Generated from ltmain.m4sh. 2775e7de9Smrg 3775e7de9Smrg# ltmain.sh (GNU libtool) 2.2.6 4775e7de9Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 5775e7de9Smrg 6775e7de9Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 7775e7de9Smrg# This is free software; see the source for copying conditions. There is NO 8775e7de9Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9775e7de9Smrg 10775e7de9Smrg# GNU Libtool is free software; you can redistribute it and/or modify 117a84e134Smrg# it under the terms of the GNU General Public License as published by 127a84e134Smrg# the Free Software Foundation; either version 2 of the License, or 137a84e134Smrg# (at your option) any later version. 147a84e134Smrg# 15775e7de9Smrg# As a special exception to the GNU General Public License, 16775e7de9Smrg# if you distribute this file as part of a program or library that 17775e7de9Smrg# is built using GNU Libtool, you may include this file under the 18775e7de9Smrg# same distribution terms that you use for the rest of that program. 19775e7de9Smrg# 20775e7de9Smrg# GNU Libtool is distributed in the hope that it will be useful, but 217a84e134Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 227a84e134Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 237a84e134Smrg# General Public License for more details. 247a84e134Smrg# 257a84e134Smrg# You should have received a copy of the GNU General Public License 26775e7de9Smrg# along with GNU Libtool; see the file COPYING. If not, a copy 27775e7de9Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28775e7de9Smrg# or obtained by writing to the Free Software Foundation, Inc., 29775e7de9Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30ab902922Smrg 31775e7de9Smrg# Usage: $progname [OPTION]... [MODE-ARG]... 32775e7de9Smrg# 33775e7de9Smrg# Provide generalized library-building support services. 34775e7de9Smrg# 35775e7de9Smrg# --config show all configuration variables 36775e7de9Smrg# --debug enable verbose shell tracing 37775e7de9Smrg# -n, --dry-run display commands without modifying any files 38775e7de9Smrg# --features display basic configuration information and exit 39775e7de9Smrg# --mode=MODE use operation mode MODE 40775e7de9Smrg# --preserve-dup-deps don't remove duplicate dependency libraries 41775e7de9Smrg# --quiet, --silent don't print informational messages 42775e7de9Smrg# --tag=TAG use configuration variables from tag TAG 43775e7de9Smrg# -v, --verbose print informational messages (default) 44775e7de9Smrg# --version print version information 45775e7de9Smrg# -h, --help print short or long help message 46775e7de9Smrg# 47775e7de9Smrg# MODE must be one of the following: 48775e7de9Smrg# 49775e7de9Smrg# clean remove files from the build directory 50775e7de9Smrg# compile compile a source file into a libtool object 51775e7de9Smrg# execute automatically set library path, then run a program 52775e7de9Smrg# finish complete the installation of libtool libraries 53775e7de9Smrg# install install libraries or executables 54775e7de9Smrg# link create a library or an executable 55775e7de9Smrg# uninstall remove libraries from an installed directory 56775e7de9Smrg# 57775e7de9Smrg# MODE-ARGS vary depending on the MODE. 58775e7de9Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 59775e7de9Smrg# 60775e7de9Smrg# When reporting a bug, please describe a test case to reproduce it and 61775e7de9Smrg# include the following information: 62775e7de9Smrg# 63775e7de9Smrg# host-triplet: $host 64775e7de9Smrg# shell: $SHELL 65775e7de9Smrg# compiler: $LTCC 66775e7de9Smrg# compiler flags: $LTCFLAGS 67775e7de9Smrg# linker: $LD (gnu? $with_gnu_ld) 68775e7de9Smrg# $progname: (GNU libtool) 2.2.6 69775e7de9Smrg# automake: $automake_version 70775e7de9Smrg# autoconf: $autoconf_version 71775e7de9Smrg# 72775e7de9Smrg# Report bugs to <bug-libtool@gnu.org>. 737a84e134Smrg 747a84e134SmrgPROGRAM=ltmain.sh 757a84e134SmrgPACKAGE=libtool 76775e7de9SmrgVERSION=2.2.6 77775e7de9SmrgTIMESTAMP="" 78775e7de9Smrgpackage_revision=1.3012 79ab902922Smrg 80775e7de9Smrg# Be Bourne compatible 81ab902922Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 82ab902922Smrg emulate sh 83ab902922Smrg NULLCMD=: 84ab902922Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 85ab902922Smrg # is contrary to our usage. Disable this feature. 86ab902922Smrg alias -g '${1+"$@"}'='"$@"' 877a84e134Smrg setopt NO_GLOB_SUBST 88ab902922Smrgelse 89ab902922Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 907a84e134Smrgfi 91ab902922SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 92ab902922SmrgDUALCASE=1; export DUALCASE # for MKS sh 937a84e134Smrg 94775e7de9Smrg# NLS nuisances: We save the old values to restore during execute mode. 957a84e134Smrg# Only set LANG and LC_ALL to C if already set. 967a84e134Smrg# These must not be set unconditionally because not all systems understand 977a84e134Smrg# e.g. LANG=C (notably SCO). 98775e7de9Smrglt_user_locale= 99775e7de9Smrglt_safe_locale= 100ab902922Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 101ab902922Smrgdo 102ab902922Smrg eval "if test \"\${$lt_var+set}\" = set; then 103775e7de9Smrg save_$lt_var=\$$lt_var 104775e7de9Smrg $lt_var=C 105ab902922Smrg export $lt_var 106775e7de9Smrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 107775e7de9Smrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 108ab902922Smrg fi" 109ab902922Smrgdone 110ab902922Smrg 111775e7de9Smrg$lt_unset CDPATH 112775e7de9Smrg 113775e7de9Smrg 114775e7de9Smrg 115775e7de9Smrg 116775e7de9Smrg 117775e7de9Smrg: ${CP="cp -f"} 118775e7de9Smrg: ${ECHO="echo"} 119775e7de9Smrg: ${EGREP="/bin/grep -E"} 120775e7de9Smrg: ${FGREP="/bin/grep -F"} 121775e7de9Smrg: ${GREP="/bin/grep"} 122775e7de9Smrg: ${LN_S="ln -s"} 123775e7de9Smrg: ${MAKE="make"} 124775e7de9Smrg: ${MKDIR="mkdir"} 125775e7de9Smrg: ${MV="mv -f"} 126775e7de9Smrg: ${RM="rm -f"} 127775e7de9Smrg: ${SED="/bin/sed"} 128775e7de9Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 129775e7de9Smrg: ${Xsed="$SED -e 1s/^X//"} 130775e7de9Smrg 131775e7de9Smrg# Global variables: 132775e7de9SmrgEXIT_SUCCESS=0 133775e7de9SmrgEXIT_FAILURE=1 134775e7de9SmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 135775e7de9SmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 136775e7de9Smrg 137775e7de9Smrgexit_status=$EXIT_SUCCESS 1387a84e134Smrg 1397a84e134Smrg# Make sure IFS has a sensible default 1407a84e134Smrglt_nl=' 1417a84e134Smrg' 1427a84e134SmrgIFS=" $lt_nl" 1437a84e134Smrg 144775e7de9Smrgdirname="s,/[^/]*$,," 145775e7de9Smrgbasename="s,^.*/,," 146775e7de9Smrg 147775e7de9Smrg# func_dirname_and_basename file append nondir_replacement 148775e7de9Smrg# perform func_basename and func_dirname in a single function 149775e7de9Smrg# call: 150775e7de9Smrg# dirname: Compute the dirname of FILE. If nonempty, 151775e7de9Smrg# add APPEND to the result, otherwise set result 152775e7de9Smrg# to NONDIR_REPLACEMENT. 153775e7de9Smrg# value returned in "$func_dirname_result" 154775e7de9Smrg# basename: Compute filename of FILE. 155775e7de9Smrg# value retuned in "$func_basename_result" 156775e7de9Smrg# Implementation must be kept synchronized with func_dirname 157775e7de9Smrg# and func_basename. For efficiency, we do not delegate to 158775e7de9Smrg# those functions but instead duplicate the functionality here. 159775e7de9Smrgfunc_dirname_and_basename () 160775e7de9Smrg{ 161775e7de9Smrg # Extract subdirectory from the argument. 162775e7de9Smrg func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 163775e7de9Smrg if test "X$func_dirname_result" = "X${1}"; then 164775e7de9Smrg func_dirname_result="${3}" 165775e7de9Smrg else 166775e7de9Smrg func_dirname_result="$func_dirname_result${2}" 167775e7de9Smrg fi 168775e7de9Smrg func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 169775e7de9Smrg} 1707a84e134Smrg 171775e7de9Smrg# Generated shell functions inserted here. 172775e7de9Smrg 173775e7de9Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 174775e7de9Smrg# is ksh but when the shell is invoked as "sh" and the current value of 175775e7de9Smrg# the _XPG environment variable is not equal to 1 (one), the special 176775e7de9Smrg# positional parameter $0, within a function call, is the name of the 177775e7de9Smrg# function. 178775e7de9Smrgprogpath="$0" 179775e7de9Smrg 180775e7de9Smrg# The name of this program: 181775e7de9Smrg# In the unlikely event $progname began with a '-', it would play havoc with 182775e7de9Smrg# func_echo (imagine progname=-n), so we prepend ./ in that case: 183775e7de9Smrgfunc_dirname_and_basename "$progpath" 184775e7de9Smrgprogname=$func_basename_result 185775e7de9Smrgcase $progname in 186775e7de9Smrg -*) progname=./$progname ;; 187775e7de9Smrgesac 188775e7de9Smrg 189775e7de9Smrg# Make sure we have an absolute path for reexecution: 190775e7de9Smrgcase $progpath in 191775e7de9Smrg [\\/]*|[A-Za-z]:\\*) ;; 192775e7de9Smrg *[\\/]*) 193775e7de9Smrg progdir=$func_dirname_result 194775e7de9Smrg progdir=`cd "$progdir" && pwd` 195775e7de9Smrg progpath="$progdir/$progname" 196775e7de9Smrg ;; 197775e7de9Smrg *) 198775e7de9Smrg save_IFS="$IFS" 199775e7de9Smrg IFS=: 200775e7de9Smrg for progdir in $PATH; do 201775e7de9Smrg IFS="$save_IFS" 202775e7de9Smrg test -x "$progdir/$progname" && break 203775e7de9Smrg done 204775e7de9Smrg IFS="$save_IFS" 205775e7de9Smrg test -n "$progdir" || progdir=`pwd` 206775e7de9Smrg progpath="$progdir/$progname" 207775e7de9Smrg ;; 208775e7de9Smrgesac 209775e7de9Smrg 210775e7de9Smrg# Sed substitution that helps us do robust quoting. It backslashifies 211775e7de9Smrg# metacharacters that are still active within double-quoted strings. 212775e7de9SmrgXsed="${SED}"' -e 1s/^X//' 213775e7de9Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 214775e7de9Smrg 215775e7de9Smrg# Same as above, but do not quote variable references. 216775e7de9Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 217775e7de9Smrg 218775e7de9Smrg# Re-`\' parameter expansions in output of double_quote_subst that were 219775e7de9Smrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 220775e7de9Smrg# in input to double_quote_subst, that '$' was protected from expansion. 221775e7de9Smrg# Since each input `\' is now two `\'s, look for any number of runs of 222775e7de9Smrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 223775e7de9Smrgbs='\\' 224775e7de9Smrgbs2='\\\\' 225775e7de9Smrgbs4='\\\\\\\\' 226775e7de9Smrgdollar='\$' 227775e7de9Smrgsed_double_backslash="\ 228775e7de9Smrg s/$bs4/&\\ 229775e7de9Smrg/g 230775e7de9Smrg s/^$bs2$dollar/$bs&/ 231775e7de9Smrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 232775e7de9Smrg s/\n//g" 233775e7de9Smrg 234775e7de9Smrg# Standard options: 235775e7de9Smrgopt_dry_run=false 236775e7de9Smrgopt_help=false 237775e7de9Smrgopt_quiet=false 238775e7de9Smrgopt_verbose=false 239775e7de9Smrgopt_warning=: 240775e7de9Smrg 241775e7de9Smrg# func_echo arg... 242775e7de9Smrg# Echo program name prefixed message, along with the current mode 243775e7de9Smrg# name if it has been set yet. 244775e7de9Smrgfunc_echo () 245775e7de9Smrg{ 246775e7de9Smrg $ECHO "$progname${mode+: }$mode: $*" 247775e7de9Smrg} 248775e7de9Smrg 249775e7de9Smrg# func_verbose arg... 250775e7de9Smrg# Echo program name prefixed message in verbose mode only. 251775e7de9Smrgfunc_verbose () 252775e7de9Smrg{ 253775e7de9Smrg $opt_verbose && func_echo ${1+"$@"} 254775e7de9Smrg 255775e7de9Smrg # A bug in bash halts the script if the last line of a function 256775e7de9Smrg # fails when set -e is in force, so we need another command to 257775e7de9Smrg # work around that: 258775e7de9Smrg : 259775e7de9Smrg} 260775e7de9Smrg 261775e7de9Smrg# func_error arg... 262775e7de9Smrg# Echo program name prefixed message to standard error. 263775e7de9Smrgfunc_error () 264775e7de9Smrg{ 265775e7de9Smrg $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 266775e7de9Smrg} 267775e7de9Smrg 268775e7de9Smrg# func_warning arg... 269775e7de9Smrg# Echo program name prefixed warning message to standard error. 270775e7de9Smrgfunc_warning () 271775e7de9Smrg{ 272775e7de9Smrg $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 273775e7de9Smrg 274775e7de9Smrg # bash bug again: 275775e7de9Smrg : 276775e7de9Smrg} 277775e7de9Smrg 278775e7de9Smrg# func_fatal_error arg... 279775e7de9Smrg# Echo program name prefixed message to standard error, and exit. 280775e7de9Smrgfunc_fatal_error () 281775e7de9Smrg{ 282775e7de9Smrg func_error ${1+"$@"} 283775e7de9Smrg exit $EXIT_FAILURE 284775e7de9Smrg} 285775e7de9Smrg 286775e7de9Smrg# func_fatal_help arg... 287775e7de9Smrg# Echo program name prefixed message to standard error, followed by 288775e7de9Smrg# a help hint, and exit. 289775e7de9Smrgfunc_fatal_help () 290775e7de9Smrg{ 291775e7de9Smrg func_error ${1+"$@"} 292775e7de9Smrg func_fatal_error "$help" 293775e7de9Smrg} 294775e7de9Smrghelp="Try \`$progname --help' for more information." ## default 295775e7de9Smrg 296775e7de9Smrg 297775e7de9Smrg# func_grep expression filename 298775e7de9Smrg# Check whether EXPRESSION matches any line of FILENAME, without output. 299775e7de9Smrgfunc_grep () 300775e7de9Smrg{ 301775e7de9Smrg $GREP "$1" "$2" >/dev/null 2>&1 302775e7de9Smrg} 303775e7de9Smrg 304775e7de9Smrg 305775e7de9Smrg# func_mkdir_p directory-path 306775e7de9Smrg# Make sure the entire path to DIRECTORY-PATH is available. 307775e7de9Smrgfunc_mkdir_p () 308775e7de9Smrg{ 309775e7de9Smrg my_directory_path="$1" 310775e7de9Smrg my_dir_list= 311775e7de9Smrg 312775e7de9Smrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 313775e7de9Smrg 314775e7de9Smrg # Protect directory names starting with `-' 315775e7de9Smrg case $my_directory_path in 316775e7de9Smrg -*) my_directory_path="./$my_directory_path" ;; 317775e7de9Smrg esac 318775e7de9Smrg 319775e7de9Smrg # While some portion of DIR does not yet exist... 320775e7de9Smrg while test ! -d "$my_directory_path"; do 321775e7de9Smrg # ...make a list in topmost first order. Use a colon delimited 322775e7de9Smrg # list incase some portion of path contains whitespace. 323775e7de9Smrg my_dir_list="$my_directory_path:$my_dir_list" 324775e7de9Smrg 325775e7de9Smrg # If the last portion added has no slash in it, the list is done 326775e7de9Smrg case $my_directory_path in */*) ;; *) break ;; esac 327775e7de9Smrg 328775e7de9Smrg # ...otherwise throw away the child directory and loop 329775e7de9Smrg my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 330775e7de9Smrg done 331775e7de9Smrg my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 332775e7de9Smrg 333775e7de9Smrg save_mkdir_p_IFS="$IFS"; IFS=':' 334775e7de9Smrg for my_dir in $my_dir_list; do 335775e7de9Smrg IFS="$save_mkdir_p_IFS" 336775e7de9Smrg # mkdir can fail with a `File exist' error if two processes 337775e7de9Smrg # try to create one of the directories concurrently. Don't 338775e7de9Smrg # stop in that case! 339775e7de9Smrg $MKDIR "$my_dir" 2>/dev/null || : 340775e7de9Smrg done 341775e7de9Smrg IFS="$save_mkdir_p_IFS" 342775e7de9Smrg 343775e7de9Smrg # Bail out if we (or some other process) failed to create a directory. 344775e7de9Smrg test -d "$my_directory_path" || \ 345775e7de9Smrg func_fatal_error "Failed to create \`$1'" 346775e7de9Smrg fi 347775e7de9Smrg} 3487a84e134Smrg 3497a84e134Smrg 3507a84e134Smrg# func_mktempdir [string] 3517a84e134Smrg# Make a temporary directory that won't clash with other running 3527a84e134Smrg# libtool processes, and avoids race conditions if possible. If 3537a84e134Smrg# given, STRING is the basename for that directory. 3547a84e134Smrgfunc_mktempdir () 3557a84e134Smrg{ 3567a84e134Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 3577a84e134Smrg 358775e7de9Smrg if test "$opt_dry_run" = ":"; then 3597a84e134Smrg # Return a directory name, but don't create it in dry-run mode 3607a84e134Smrg my_tmpdir="${my_template}-$$" 3617a84e134Smrg else 3627a84e134Smrg 3637a84e134Smrg # If mktemp works, use that first and foremost 3647a84e134Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 3657a84e134Smrg 3667a84e134Smrg if test ! -d "$my_tmpdir"; then 367775e7de9Smrg # Failing that, at least try and use $RANDOM to avoid a race 368775e7de9Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 3697a84e134Smrg 370775e7de9Smrg save_mktempdir_umask=`umask` 371775e7de9Smrg umask 0077 372775e7de9Smrg $MKDIR "$my_tmpdir" 373775e7de9Smrg umask $save_mktempdir_umask 3747a84e134Smrg fi 3757a84e134Smrg 3767a84e134Smrg # If we're not in dry-run mode, bomb out on failure 377775e7de9Smrg test -d "$my_tmpdir" || \ 378775e7de9Smrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 3797a84e134Smrg fi 3807a84e134Smrg 381775e7de9Smrg $ECHO "X$my_tmpdir" | $Xsed 3827a84e134Smrg} 3837a84e134Smrg 3847a84e134Smrg 385775e7de9Smrg# func_quote_for_eval arg 386775e7de9Smrg# Aesthetically quote ARG to be evaled later. 387775e7de9Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 388775e7de9Smrg# is double-quoted, suitable for a subsequent eval, whereas 389775e7de9Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 390775e7de9Smrg# which are still active within double quotes backslashified. 391775e7de9Smrgfunc_quote_for_eval () 3927a84e134Smrg{ 393775e7de9Smrg case $1 in 394775e7de9Smrg *[\\\`\"\$]*) 395775e7de9Smrg func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 396775e7de9Smrg *) 397775e7de9Smrg func_quote_for_eval_unquoted_result="$1" ;; 398775e7de9Smrg esac 399775e7de9Smrg 400775e7de9Smrg case $func_quote_for_eval_unquoted_result in 401775e7de9Smrg # Double-quote args containing shell metacharacters to delay 402775e7de9Smrg # word splitting, command substitution and and variable 403775e7de9Smrg # expansion for a subsequent eval. 404775e7de9Smrg # Many Bourne shells cannot handle close brackets correctly 405775e7de9Smrg # in scan sets, so we specify it separately. 406775e7de9Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 407775e7de9Smrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 408775e7de9Smrg ;; 409775e7de9Smrg *) 410775e7de9Smrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 4117a84e134Smrg esac 4127a84e134Smrg} 4137a84e134Smrg 4147a84e134Smrg 415775e7de9Smrg# func_quote_for_expand arg 416775e7de9Smrg# Aesthetically quote ARG to be evaled later; same as above, 417775e7de9Smrg# but do not quote variable references. 418775e7de9Smrgfunc_quote_for_expand () 4197a84e134Smrg{ 420775e7de9Smrg case $1 in 421775e7de9Smrg *[\\\`\"]*) 422775e7de9Smrg my_arg=`$ECHO "X$1" | $Xsed \ 423775e7de9Smrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 4247a84e134Smrg *) 425775e7de9Smrg my_arg="$1" ;; 426775e7de9Smrg esac 427775e7de9Smrg 428775e7de9Smrg case $my_arg in 429775e7de9Smrg # Double-quote args containing shell metacharacters to delay 430775e7de9Smrg # word splitting and command substitution for a subsequent eval. 431775e7de9Smrg # Many Bourne shells cannot handle close brackets correctly 432775e7de9Smrg # in scan sets, so we specify it separately. 433775e7de9Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 434775e7de9Smrg my_arg="\"$my_arg\"" 435775e7de9Smrg ;; 436775e7de9Smrg esac 437775e7de9Smrg 438775e7de9Smrg func_quote_for_expand_result="$my_arg" 4397a84e134Smrg} 4407a84e134Smrg 4417a84e134Smrg 442775e7de9Smrg# func_show_eval cmd [fail_exp] 443775e7de9Smrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 444775e7de9Smrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 445775e7de9Smrg# is given, then evaluate it. 446775e7de9Smrgfunc_show_eval () 4477a84e134Smrg{ 448775e7de9Smrg my_cmd="$1" 449775e7de9Smrg my_fail_exp="${2-:}" 4507a84e134Smrg 451775e7de9Smrg ${opt_silent-false} || { 452775e7de9Smrg func_quote_for_expand "$my_cmd" 453775e7de9Smrg eval "func_echo $func_quote_for_expand_result" 454775e7de9Smrg } 455775e7de9Smrg 456775e7de9Smrg if ${opt_dry_run-false}; then :; else 457775e7de9Smrg eval "$my_cmd" 458775e7de9Smrg my_status=$? 459775e7de9Smrg if test "$my_status" -eq 0; then :; else 460775e7de9Smrg eval "(exit $my_status); $my_fail_exp" 461775e7de9Smrg fi 4627a84e134Smrg fi 4637a84e134Smrg} 4647a84e134Smrg 465775e7de9Smrg 466775e7de9Smrg# func_show_eval_locale cmd [fail_exp] 467775e7de9Smrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 468775e7de9Smrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 469775e7de9Smrg# is given, then evaluate it. Use the saved locale for evaluation. 470775e7de9Smrgfunc_show_eval_locale () 4717a84e134Smrg{ 472775e7de9Smrg my_cmd="$1" 473775e7de9Smrg my_fail_exp="${2-:}" 474775e7de9Smrg 475775e7de9Smrg ${opt_silent-false} || { 476775e7de9Smrg func_quote_for_expand "$my_cmd" 477775e7de9Smrg eval "func_echo $func_quote_for_expand_result" 478775e7de9Smrg } 479775e7de9Smrg 480775e7de9Smrg if ${opt_dry_run-false}; then :; else 481775e7de9Smrg eval "$lt_user_locale 482775e7de9Smrg $my_cmd" 483775e7de9Smrg my_status=$? 484775e7de9Smrg eval "$lt_safe_locale" 485775e7de9Smrg if test "$my_status" -eq 0; then :; else 486775e7de9Smrg eval "(exit $my_status); $my_fail_exp" 487775e7de9Smrg fi 4887a84e134Smrg fi 489775e7de9Smrg} 4907a84e134Smrg 4917a84e134Smrg 492775e7de9Smrg 493775e7de9Smrg 494775e7de9Smrg 495775e7de9Smrg# func_version 496775e7de9Smrg# Echo version message to standard output and exit. 497775e7de9Smrgfunc_version () 498775e7de9Smrg{ 499775e7de9Smrg $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 500775e7de9Smrg s/^# // 501775e7de9Smrg s/^# *$// 502775e7de9Smrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 503775e7de9Smrg p 504775e7de9Smrg }' < "$progpath" 505775e7de9Smrg exit $? 5067a84e134Smrg} 5077a84e134Smrg 508775e7de9Smrg# func_usage 509775e7de9Smrg# Echo short help message to standard output and exit. 510775e7de9Smrgfunc_usage () 511775e7de9Smrg{ 512775e7de9Smrg $SED -n '/^# Usage:/,/# -h/ { 513775e7de9Smrg s/^# // 514775e7de9Smrg s/^# *$// 515775e7de9Smrg s/\$progname/'$progname'/ 516775e7de9Smrg p 517775e7de9Smrg }' < "$progpath" 518775e7de9Smrg $ECHO 519775e7de9Smrg $ECHO "run \`$progname --help | more' for full usage" 520775e7de9Smrg exit $? 521775e7de9Smrg} 5227a84e134Smrg 523775e7de9Smrg# func_help 524775e7de9Smrg# Echo long help message to standard output and exit. 525775e7de9Smrgfunc_help () 526775e7de9Smrg{ 527775e7de9Smrg $SED -n '/^# Usage:/,/# Report bugs to/ { 528775e7de9Smrg s/^# // 529775e7de9Smrg s/^# *$// 530775e7de9Smrg s*\$progname*'$progname'* 531775e7de9Smrg s*\$host*'"$host"'* 532775e7de9Smrg s*\$SHELL*'"$SHELL"'* 533775e7de9Smrg s*\$LTCC*'"$LTCC"'* 534775e7de9Smrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 535775e7de9Smrg s*\$LD*'"$LD"'* 536775e7de9Smrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 537775e7de9Smrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 538775e7de9Smrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 539775e7de9Smrg p 540775e7de9Smrg }' < "$progpath" 541775e7de9Smrg exit $? 542775e7de9Smrg} 5437a84e134Smrg 544775e7de9Smrg# func_missing_arg argname 545775e7de9Smrg# Echo program name prefixed message to standard error and set global 546775e7de9Smrg# exit_cmd. 547775e7de9Smrgfunc_missing_arg () 548775e7de9Smrg{ 549775e7de9Smrg func_error "missing argument for $1" 550775e7de9Smrg exit_cmd=exit 551775e7de9Smrg} 552775e7de9Smrg 553775e7de9Smrgexit_cmd=: 554775e7de9Smrg 555775e7de9Smrg 556775e7de9Smrg 557775e7de9Smrg 558775e7de9Smrg 559775e7de9Smrg# Check that we have a working $ECHO. 560775e7de9Smrgif test "X$1" = X--no-reexec; then 561775e7de9Smrg # Discard the --no-reexec flag, and continue. 5627a84e134Smrg shift 563775e7de9Smrgelif test "X$1" = X--fallback-echo; then 564775e7de9Smrg # Avoid inline document here, it may be left over 565775e7de9Smrg : 566775e7de9Smrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 567775e7de9Smrg # Yippee, $ECHO works! 568775e7de9Smrg : 569775e7de9Smrgelse 570775e7de9Smrg # Restart under the correct shell, and then maybe $ECHO will work. 571775e7de9Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 572775e7de9Smrgfi 5737a84e134Smrg 574775e7de9Smrgif test "X$1" = X--fallback-echo; then 575775e7de9Smrg # used as fallback echo 576775e7de9Smrg shift 577775e7de9Smrg cat <<EOF 578775e7de9Smrg$* 579775e7de9SmrgEOF 580775e7de9Smrg exit $EXIT_SUCCESS 581775e7de9Smrgfi 5827a84e134Smrg 583775e7de9Smrgmagic="%%%MAGIC variable%%%" 584775e7de9Smrgmagic_exe="%%%MAGIC EXE variable%%%" 5857a84e134Smrg 586775e7de9Smrg# Global variables. 587775e7de9Smrg# $mode is unset 588775e7de9Smrgnonopt= 589775e7de9Smrgexecute_dlfiles= 590775e7de9Smrgpreserve_args= 591775e7de9Smrglo2o="s/\\.lo\$/.${objext}/" 592775e7de9Smrgo2lo="s/\\.${objext}\$/.lo/" 593775e7de9Smrgextracted_archives= 594775e7de9Smrgextracted_serial=0 5957a84e134Smrg 596775e7de9Smrgopt_dry_run=false 597775e7de9Smrgopt_duplicate_deps=false 598775e7de9Smrgopt_silent=false 599775e7de9Smrgopt_debug=: 6007a84e134Smrg 601775e7de9Smrg# If this variable is set in any of the actions, the command in it 602775e7de9Smrg# will be execed at the end. This prevents here-documents from being 603775e7de9Smrg# left over by shells. 604775e7de9Smrgexec_cmd= 605775e7de9Smrg 606775e7de9Smrg# func_fatal_configuration arg... 607775e7de9Smrg# Echo program name prefixed message to standard error, followed by 608775e7de9Smrg# a configuration failure hint, and exit. 609775e7de9Smrgfunc_fatal_configuration () 610775e7de9Smrg{ 611775e7de9Smrg func_error ${1+"$@"} 612775e7de9Smrg func_error "See the $PACKAGE documentation for more information." 613775e7de9Smrg func_fatal_error "Fatal configuration error." 614775e7de9Smrg} 6157a84e134Smrg 616ab902922Smrg 617775e7de9Smrg# func_config 618775e7de9Smrg# Display the configuration for all the tags in this script. 619775e7de9Smrgfunc_config () 620775e7de9Smrg{ 621775e7de9Smrg re_begincf='^# ### BEGIN LIBTOOL' 622775e7de9Smrg re_endcf='^# ### END LIBTOOL' 623775e7de9Smrg 624775e7de9Smrg # Default configuration. 625775e7de9Smrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 6267a84e134Smrg 6277a84e134Smrg # Now print the configurations for the tags. 6287a84e134Smrg for tagname in $taglist; do 629775e7de9Smrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 6307a84e134Smrg done 6317a84e134Smrg 632775e7de9Smrg exit $? 633775e7de9Smrg} 6347a84e134Smrg 635775e7de9Smrg# func_features 636775e7de9Smrg# Display the features supported by this script. 637775e7de9Smrgfunc_features () 638775e7de9Smrg{ 639775e7de9Smrg $ECHO "host: $host" 6407a84e134Smrg if test "$build_libtool_libs" = yes; then 641775e7de9Smrg $ECHO "enable shared libraries" 6427a84e134Smrg else 643775e7de9Smrg $ECHO "disable shared libraries" 6447a84e134Smrg fi 6457a84e134Smrg if test "$build_old_libs" = yes; then 646775e7de9Smrg $ECHO "enable static libraries" 6477a84e134Smrg else 648775e7de9Smrg $ECHO "disable static libraries" 6497a84e134Smrg fi 650775e7de9Smrg 6517a84e134Smrg exit $? 652775e7de9Smrg} 6537a84e134Smrg 654775e7de9Smrg# func_enable_tag tagname 655775e7de9Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or 656775e7de9Smrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 657775e7de9Smrg# variable here. 658775e7de9Smrgfunc_enable_tag () 659775e7de9Smrg{ 660775e7de9Smrg # Global variable: 661775e7de9Smrg tagname="$1" 6627a84e134Smrg 663775e7de9Smrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 664775e7de9Smrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 665775e7de9Smrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 6667a84e134Smrg 667775e7de9Smrg # Validate tagname. 668775e7de9Smrg case $tagname in 669775e7de9Smrg *[!-_A-Za-z0-9,/]*) 670775e7de9Smrg func_fatal_error "invalid tag name: $tagname" 671775e7de9Smrg ;; 672775e7de9Smrg esac 6737a84e134Smrg 674775e7de9Smrg # Don't test for the "default" C tag, as we know it's 675775e7de9Smrg # there but not specially marked. 676775e7de9Smrg case $tagname in 677775e7de9Smrg CC) ;; 678775e7de9Smrg *) 679775e7de9Smrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 680775e7de9Smrg taglist="$taglist $tagname" 681775e7de9Smrg 682775e7de9Smrg # Evaluate the configuration. Be careful to quote the path 683775e7de9Smrg # and the sed script, to avoid splitting on whitespace, but 684775e7de9Smrg # also don't use non-portable quotes within backquotes within 685775e7de9Smrg # quotes we have to do it in 2 steps: 686775e7de9Smrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 687775e7de9Smrg eval "$extractedcf" 688775e7de9Smrg else 689775e7de9Smrg func_error "ignoring unknown tag $tagname" 690775e7de9Smrg fi 691775e7de9Smrg ;; 692775e7de9Smrg esac 693775e7de9Smrg} 694775e7de9Smrg 695775e7de9Smrg# Parse options once, thoroughly. This comes as soon as possible in 696775e7de9Smrg# the script to make things like `libtool --version' happen quickly. 697775e7de9Smrg{ 6987a84e134Smrg 699775e7de9Smrg # Shorthand for --mode=foo, only valid as the first argument 700775e7de9Smrg case $1 in 701775e7de9Smrg clean|clea|cle|cl) 702775e7de9Smrg shift; set dummy --mode clean ${1+"$@"}; shift 7037a84e134Smrg ;; 704775e7de9Smrg compile|compil|compi|comp|com|co|c) 705775e7de9Smrg shift; set dummy --mode compile ${1+"$@"}; shift 7067a84e134Smrg ;; 707775e7de9Smrg execute|execut|execu|exec|exe|ex|e) 708775e7de9Smrg shift; set dummy --mode execute ${1+"$@"}; shift 7097a84e134Smrg ;; 710775e7de9Smrg finish|finis|fini|fin|fi|f) 711775e7de9Smrg shift; set dummy --mode finish ${1+"$@"}; shift 7127a84e134Smrg ;; 713775e7de9Smrg install|instal|insta|inst|ins|in|i) 714775e7de9Smrg shift; set dummy --mode install ${1+"$@"}; shift 715775e7de9Smrg ;; 716775e7de9Smrg link|lin|li|l) 717775e7de9Smrg shift; set dummy --mode link ${1+"$@"}; shift 718775e7de9Smrg ;; 719775e7de9Smrg uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 720775e7de9Smrg shift; set dummy --mode uninstall ${1+"$@"}; shift 7217a84e134Smrg ;; 7227a84e134Smrg esac 7237a84e134Smrg 724775e7de9Smrg # Parse non-mode specific arguments: 725775e7de9Smrg while test "$#" -gt 0; do 726775e7de9Smrg opt="$1" 727775e7de9Smrg shift 7287a84e134Smrg 729775e7de9Smrg case $opt in 730775e7de9Smrg --config) func_config ;; 7317a84e134Smrg 732775e7de9Smrg --debug) preserve_args="$preserve_args $opt" 733775e7de9Smrg func_echo "enabling shell trace mode" 734775e7de9Smrg opt_debug='set -x' 735775e7de9Smrg $opt_debug 736775e7de9Smrg ;; 737775e7de9Smrg 738775e7de9Smrg -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 739775e7de9Smrg execute_dlfiles="$execute_dlfiles $1" 740775e7de9Smrg shift 741775e7de9Smrg ;; 7427a84e134Smrg 743775e7de9Smrg --dry-run | -n) opt_dry_run=: ;; 744775e7de9Smrg --features) func_features ;; 745775e7de9Smrg --finish) mode="finish" ;; 746775e7de9Smrg 747775e7de9Smrg --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 748775e7de9Smrg case $1 in 749775e7de9Smrg # Valid mode arguments: 750775e7de9Smrg clean) ;; 751775e7de9Smrg compile) ;; 752775e7de9Smrg execute) ;; 753775e7de9Smrg finish) ;; 754775e7de9Smrg install) ;; 755775e7de9Smrg link) ;; 756775e7de9Smrg relink) ;; 757775e7de9Smrg uninstall) ;; 758775e7de9Smrg 759775e7de9Smrg # Catch anything else as an error 760775e7de9Smrg *) func_error "invalid argument for $opt" 761775e7de9Smrg exit_cmd=exit 762775e7de9Smrg break 763775e7de9Smrg ;; 764775e7de9Smrg esac 765775e7de9Smrg 766775e7de9Smrg mode="$1" 767775e7de9Smrg shift 768775e7de9Smrg ;; 7697a84e134Smrg 770775e7de9Smrg --preserve-dup-deps) 771775e7de9Smrg opt_duplicate_deps=: ;; 772775e7de9Smrg 773775e7de9Smrg --quiet|--silent) preserve_args="$preserve_args $opt" 774775e7de9Smrg opt_silent=: 775775e7de9Smrg ;; 776775e7de9Smrg 777775e7de9Smrg --verbose| -v) preserve_args="$preserve_args $opt" 778775e7de9Smrg opt_silent=false 779775e7de9Smrg ;; 780775e7de9Smrg 781775e7de9Smrg --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 782775e7de9Smrg preserve_args="$preserve_args $opt $1" 783775e7de9Smrg func_enable_tag "$1" # tagname is set here 784775e7de9Smrg shift 785775e7de9Smrg ;; 786775e7de9Smrg 787775e7de9Smrg # Separate optargs to long options: 788775e7de9Smrg -dlopen=*|--mode=*|--tag=*) 789775e7de9Smrg func_opt_split "$opt" 790775e7de9Smrg set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 791775e7de9Smrg shift 792775e7de9Smrg ;; 793775e7de9Smrg 794775e7de9Smrg -\?|-h) func_usage ;; 795775e7de9Smrg --help) opt_help=: ;; 796775e7de9Smrg --version) func_version ;; 797775e7de9Smrg 798775e7de9Smrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 799775e7de9Smrg 800775e7de9Smrg *) nonopt="$opt" 801775e7de9Smrg break 802775e7de9Smrg ;; 803775e7de9Smrg esac 804775e7de9Smrg done 805775e7de9Smrg 806775e7de9Smrg 807775e7de9Smrg case $host in 808775e7de9Smrg *cygwin* | *mingw* | *pw32* | *cegcc*) 809775e7de9Smrg # don't eliminate duplications in $postdeps and $predeps 810775e7de9Smrg opt_duplicate_compiler_generated_deps=: 8117a84e134Smrg ;; 8127a84e134Smrg *) 813775e7de9Smrg opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 814775e7de9Smrg ;; 815775e7de9Smrg esac 8167a84e134Smrg 817775e7de9Smrg # Having warned about all mis-specified options, bail out if 818775e7de9Smrg # anything was wrong. 819775e7de9Smrg $exit_cmd $EXIT_FAILURE 820775e7de9Smrg} 821775e7de9Smrg 822775e7de9Smrg# func_check_version_match 823775e7de9Smrg# Ensure that we are using m4 macros, and libtool script from the same 824775e7de9Smrg# release of libtool. 825775e7de9Smrgfunc_check_version_match () 826775e7de9Smrg{ 827775e7de9Smrg if test "$package_revision" != "$macro_revision"; then 828775e7de9Smrg if test "$VERSION" != "$macro_version"; then 829775e7de9Smrg if test -z "$macro_version"; then 830775e7de9Smrg cat >&2 <<_LT_EOF 831775e7de9Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 832775e7de9Smrg$progname: definition of this LT_INIT comes from an older release. 833775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 834775e7de9Smrg$progname: and run autoconf again. 835775e7de9Smrg_LT_EOF 836775e7de9Smrg else 837775e7de9Smrg cat >&2 <<_LT_EOF 838775e7de9Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 839775e7de9Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 840775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 841775e7de9Smrg$progname: and run autoconf again. 842775e7de9Smrg_LT_EOF 8437a84e134Smrg fi 844775e7de9Smrg else 845775e7de9Smrg cat >&2 <<_LT_EOF 846775e7de9Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 847775e7de9Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 848775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 849775e7de9Smrg$progname: of $PACKAGE $VERSION and run autoconf again. 850775e7de9Smrg_LT_EOF 851775e7de9Smrg fi 852775e7de9Smrg 853775e7de9Smrg exit $EXIT_MISMATCH 8547a84e134Smrg fi 855775e7de9Smrg} 856775e7de9Smrg 857775e7de9Smrg 858775e7de9Smrg## ----------- ## 859775e7de9Smrg## Main. ## 860775e7de9Smrg## ----------- ## 861775e7de9Smrg 862775e7de9Smrg$opt_help || { 863775e7de9Smrg # Sanity checks first: 864775e7de9Smrg func_check_version_match 865775e7de9Smrg 866775e7de9Smrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 867775e7de9Smrg func_fatal_configuration "not configured to build any kind of library" 868775e7de9Smrg fi 869775e7de9Smrg 870775e7de9Smrg test -z "$mode" && func_fatal_error "error: you must specify a MODE." 871775e7de9Smrg 872775e7de9Smrg 873775e7de9Smrg # Darwin sucks 874775e7de9Smrg eval std_shrext=\"$shrext_cmds\" 875775e7de9Smrg 8767a84e134Smrg 8777a84e134Smrg # Only execute mode is allowed to have -dlopen flags. 8787a84e134Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 879775e7de9Smrg func_error "unrecognized option \`-dlopen'" 880775e7de9Smrg $ECHO "$help" 1>&2 8817a84e134Smrg exit $EXIT_FAILURE 8827a84e134Smrg fi 8837a84e134Smrg 8847a84e134Smrg # Change the help message to a mode-specific one. 8857a84e134Smrg generic_help="$help" 886775e7de9Smrg help="Try \`$progname --help --mode=$mode' for more information." 887775e7de9Smrg} 8887a84e134Smrg 8897a84e134Smrg 890775e7de9Smrg# func_lalib_p file 891775e7de9Smrg# True iff FILE is a libtool `.la' library or `.lo' object file. 892775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out 893775e7de9Smrg# determined imposters. 894775e7de9Smrgfunc_lalib_p () 895775e7de9Smrg{ 896775e7de9Smrg test -f "$1" && 897775e7de9Smrg $SED -e 4q "$1" 2>/dev/null \ 898775e7de9Smrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 899775e7de9Smrg} 9007a84e134Smrg 901775e7de9Smrg# func_lalib_unsafe_p file 902775e7de9Smrg# True iff FILE is a libtool `.la' library or `.lo' object file. 903775e7de9Smrg# This function implements the same check as func_lalib_p without 904775e7de9Smrg# resorting to external programs. To this end, it redirects stdin and 905775e7de9Smrg# closes it afterwards, without saving the original file descriptor. 906775e7de9Smrg# As a safety measure, use it only where a negative result would be 907775e7de9Smrg# fatal anyway. Works if `file' does not exist. 908775e7de9Smrgfunc_lalib_unsafe_p () 909775e7de9Smrg{ 910775e7de9Smrg lalib_p=no 911775e7de9Smrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 912775e7de9Smrg for lalib_p_l in 1 2 3 4 913775e7de9Smrg do 914775e7de9Smrg read lalib_p_line 915775e7de9Smrg case "$lalib_p_line" in 916775e7de9Smrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 917775e7de9Smrg esac 918775e7de9Smrg done 919775e7de9Smrg exec 0<&5 5<&- 920775e7de9Smrg fi 921775e7de9Smrg test "$lalib_p" = yes 922775e7de9Smrg} 9237a84e134Smrg 924775e7de9Smrg# func_ltwrapper_script_p file 925775e7de9Smrg# True iff FILE is a libtool wrapper script 926775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out 927775e7de9Smrg# determined imposters. 928775e7de9Smrgfunc_ltwrapper_script_p () 929775e7de9Smrg{ 930775e7de9Smrg func_lalib_p "$1" 931775e7de9Smrg} 9327a84e134Smrg 933775e7de9Smrg# func_ltwrapper_executable_p file 934775e7de9Smrg# True iff FILE is a libtool wrapper executable 935775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out 936775e7de9Smrg# determined imposters. 937775e7de9Smrgfunc_ltwrapper_executable_p () 938775e7de9Smrg{ 939775e7de9Smrg func_ltwrapper_exec_suffix= 940775e7de9Smrg case $1 in 941775e7de9Smrg *.exe) ;; 942775e7de9Smrg *) func_ltwrapper_exec_suffix=.exe ;; 943775e7de9Smrg esac 944775e7de9Smrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 945775e7de9Smrg} 946775e7de9Smrg 947775e7de9Smrg# func_ltwrapper_scriptname file 948775e7de9Smrg# Assumes file is an ltwrapper_executable 949775e7de9Smrg# uses $file to determine the appropriate filename for a 950775e7de9Smrg# temporary ltwrapper_script. 951775e7de9Smrgfunc_ltwrapper_scriptname () 952775e7de9Smrg{ 953775e7de9Smrg func_ltwrapper_scriptname_result="" 954775e7de9Smrg if func_ltwrapper_executable_p "$1"; then 955775e7de9Smrg func_dirname_and_basename "$1" "" "." 956775e7de9Smrg func_stripname '' '.exe' "$func_basename_result" 957775e7de9Smrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 958775e7de9Smrg fi 959775e7de9Smrg} 960775e7de9Smrg 961775e7de9Smrg# func_ltwrapper_p file 962775e7de9Smrg# True iff FILE is a libtool wrapper script or wrapper executable 963775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out 964775e7de9Smrg# determined imposters. 965775e7de9Smrgfunc_ltwrapper_p () 966775e7de9Smrg{ 967775e7de9Smrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 968775e7de9Smrg} 969775e7de9Smrg 970775e7de9Smrg 971775e7de9Smrg# func_execute_cmds commands fail_cmd 972775e7de9Smrg# Execute tilde-delimited COMMANDS. 973775e7de9Smrg# If FAIL_CMD is given, eval that upon failure. 974775e7de9Smrg# FAIL_CMD may read-access the current command in variable CMD! 975775e7de9Smrgfunc_execute_cmds () 976775e7de9Smrg{ 977775e7de9Smrg $opt_debug 978775e7de9Smrg save_ifs=$IFS; IFS='~' 979775e7de9Smrg for cmd in $1; do 980775e7de9Smrg IFS=$save_ifs 981775e7de9Smrg eval cmd=\"$cmd\" 982775e7de9Smrg func_show_eval "$cmd" "${2-:}" 983775e7de9Smrg done 984775e7de9Smrg IFS=$save_ifs 985775e7de9Smrg} 986775e7de9Smrg 987775e7de9Smrg 988775e7de9Smrg# func_source file 989775e7de9Smrg# Source FILE, adding directory component if necessary. 990775e7de9Smrg# Note that it is not necessary on cygwin/mingw to append a dot to 991775e7de9Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 992775e7de9Smrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 993775e7de9Smrg# `FILE.' does not work on cygwin managed mounts. 994775e7de9Smrgfunc_source () 995775e7de9Smrg{ 996775e7de9Smrg $opt_debug 997775e7de9Smrg case $1 in 998775e7de9Smrg */* | *\\*) . "$1" ;; 999775e7de9Smrg *) . "./$1" ;; 1000775e7de9Smrg esac 1001775e7de9Smrg} 1002775e7de9Smrg 1003775e7de9Smrg 1004775e7de9Smrg# func_infer_tag arg 1005775e7de9Smrg# Infer tagged configuration to use if any are available and 1006775e7de9Smrg# if one wasn't chosen via the "--tag" command line option. 1007775e7de9Smrg# Only attempt this if the compiler in the base compile 1008775e7de9Smrg# command doesn't match the default compiler. 1009775e7de9Smrg# arg is usually of the form 'gcc ...' 1010775e7de9Smrgfunc_infer_tag () 1011775e7de9Smrg{ 1012775e7de9Smrg $opt_debug 1013775e7de9Smrg if test -n "$available_tags" && test -z "$tagname"; then 1014775e7de9Smrg CC_quoted= 1015775e7de9Smrg for arg in $CC; do 1016775e7de9Smrg func_quote_for_eval "$arg" 1017775e7de9Smrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 1018775e7de9Smrg done 1019775e7de9Smrg case $@ in 1020775e7de9Smrg # Blanks in the command may have been stripped by the calling shell, 1021775e7de9Smrg # but not from the CC environment variable when configure was run. 1022775e7de9Smrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 1023775e7de9Smrg # Blanks at the start of $base_compile will cause this to fail 1024775e7de9Smrg # if we don't check for them as well. 1025775e7de9Smrg *) 1026775e7de9Smrg for z in $available_tags; do 1027775e7de9Smrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1028775e7de9Smrg # Evaluate the configuration. 1029775e7de9Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1030775e7de9Smrg CC_quoted= 1031775e7de9Smrg for arg in $CC; do 1032775e7de9Smrg # Double-quote args containing other shell metacharacters. 1033775e7de9Smrg func_quote_for_eval "$arg" 1034775e7de9Smrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 1035775e7de9Smrg done 1036775e7de9Smrg case "$@ " in 1037775e7de9Smrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 1038775e7de9Smrg # The compiler in the base compile command matches 1039775e7de9Smrg # the one in the tagged configuration. 1040775e7de9Smrg # Assume this is the tagged configuration we want. 1041775e7de9Smrg tagname=$z 1042775e7de9Smrg break 1043775e7de9Smrg ;; 1044775e7de9Smrg esac 1045775e7de9Smrg fi 1046775e7de9Smrg done 1047775e7de9Smrg # If $tagname still isn't set, then no tagged configuration 1048775e7de9Smrg # was found and let the user know that the "--tag" command 1049775e7de9Smrg # line option must be used. 1050775e7de9Smrg if test -z "$tagname"; then 1051775e7de9Smrg func_echo "unable to infer tagged configuration" 1052775e7de9Smrg func_fatal_error "specify a tag with \`--tag'" 1053775e7de9Smrg# else 1054775e7de9Smrg# func_verbose "using $tagname tagged configuration" 1055775e7de9Smrg fi 1056775e7de9Smrg ;; 1057775e7de9Smrg esac 1058775e7de9Smrg fi 1059775e7de9Smrg} 1060775e7de9Smrg 1061775e7de9Smrg 1062775e7de9Smrg 1063775e7de9Smrg# func_write_libtool_object output_name pic_name nonpic_name 1064775e7de9Smrg# Create a libtool object file (analogous to a ".la" file), 1065775e7de9Smrg# but don't create it if we're doing a dry run. 1066775e7de9Smrgfunc_write_libtool_object () 1067775e7de9Smrg{ 1068775e7de9Smrg write_libobj=${1} 1069775e7de9Smrg if test "$build_libtool_libs" = yes; then 1070775e7de9Smrg write_lobj=\'${2}\' 1071775e7de9Smrg else 1072775e7de9Smrg write_lobj=none 1073775e7de9Smrg fi 1074775e7de9Smrg 1075775e7de9Smrg if test "$build_old_libs" = yes; then 1076775e7de9Smrg write_oldobj=\'${3}\' 1077775e7de9Smrg else 1078775e7de9Smrg write_oldobj=none 1079775e7de9Smrg fi 1080775e7de9Smrg 1081775e7de9Smrg $opt_dry_run || { 1082775e7de9Smrg cat >${write_libobj}T <<EOF 1083775e7de9Smrg# $write_libobj - a libtool object file 1084775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1085775e7de9Smrg# 1086775e7de9Smrg# Please DO NOT delete this file! 1087775e7de9Smrg# It is necessary for linking the library. 1088775e7de9Smrg 1089775e7de9Smrg# Name of the PIC object. 1090775e7de9Smrgpic_object=$write_lobj 1091775e7de9Smrg 1092775e7de9Smrg# Name of the non-PIC object 1093775e7de9Smrgnon_pic_object=$write_oldobj 1094775e7de9Smrg 1095775e7de9SmrgEOF 1096775e7de9Smrg $MV "${write_libobj}T" "${write_libobj}" 1097775e7de9Smrg } 1098775e7de9Smrg} 1099775e7de9Smrg 1100775e7de9Smrg# func_mode_compile arg... 1101775e7de9Smrgfunc_mode_compile () 1102775e7de9Smrg{ 1103775e7de9Smrg $opt_debug 1104775e7de9Smrg # Get the compilation command and the source file. 1105775e7de9Smrg base_compile= 1106775e7de9Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1107775e7de9Smrg suppress_opt=yes 1108775e7de9Smrg suppress_output= 1109775e7de9Smrg arg_mode=normal 1110775e7de9Smrg libobj= 1111775e7de9Smrg later= 1112775e7de9Smrg pie_flag= 1113775e7de9Smrg 1114775e7de9Smrg for arg 1115775e7de9Smrg do 1116775e7de9Smrg case $arg_mode in 1117775e7de9Smrg arg ) 1118775e7de9Smrg # do not "continue". Instead, add this to base_compile 1119775e7de9Smrg lastarg="$arg" 1120775e7de9Smrg arg_mode=normal 1121775e7de9Smrg ;; 1122775e7de9Smrg 1123775e7de9Smrg target ) 1124775e7de9Smrg libobj="$arg" 1125775e7de9Smrg arg_mode=normal 1126775e7de9Smrg continue 1127775e7de9Smrg ;; 1128775e7de9Smrg 1129775e7de9Smrg normal ) 1130775e7de9Smrg # Accept any command-line options. 1131775e7de9Smrg case $arg in 1132775e7de9Smrg -o) 1133775e7de9Smrg test -n "$libobj" && \ 1134775e7de9Smrg func_fatal_error "you cannot specify \`-o' more than once" 1135775e7de9Smrg arg_mode=target 1136775e7de9Smrg continue 1137775e7de9Smrg ;; 1138775e7de9Smrg 1139775e7de9Smrg -pie | -fpie | -fPIE) 1140775e7de9Smrg pie_flag="$pie_flag $arg" 1141775e7de9Smrg continue 1142775e7de9Smrg ;; 1143775e7de9Smrg 1144775e7de9Smrg -shared | -static | -prefer-pic | -prefer-non-pic) 1145775e7de9Smrg later="$later $arg" 1146775e7de9Smrg continue 1147775e7de9Smrg ;; 11487a84e134Smrg 11497a84e134Smrg -no-suppress) 11507a84e134Smrg suppress_opt=no 11517a84e134Smrg continue 11527a84e134Smrg ;; 11537a84e134Smrg 11547a84e134Smrg -Xcompiler) 11557a84e134Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 11567a84e134Smrg continue # The current "srcfile" will either be retained or 11577a84e134Smrg ;; # replaced later. I would guess that would be a bug. 11587a84e134Smrg 11597a84e134Smrg -Wc,*) 1160775e7de9Smrg func_stripname '-Wc,' '' "$arg" 1161775e7de9Smrg args=$func_stripname_result 11627a84e134Smrg lastarg= 11637a84e134Smrg save_ifs="$IFS"; IFS=',' 1164775e7de9Smrg for arg in $args; do 11657a84e134Smrg IFS="$save_ifs" 1166775e7de9Smrg func_quote_for_eval "$arg" 1167775e7de9Smrg lastarg="$lastarg $func_quote_for_eval_result" 11687a84e134Smrg done 11697a84e134Smrg IFS="$save_ifs" 1170775e7de9Smrg func_stripname ' ' '' "$lastarg" 1171775e7de9Smrg lastarg=$func_stripname_result 11727a84e134Smrg 11737a84e134Smrg # Add the arguments to base_compile. 11747a84e134Smrg base_compile="$base_compile $lastarg" 11757a84e134Smrg continue 11767a84e134Smrg ;; 11777a84e134Smrg 1178775e7de9Smrg *) 11797a84e134Smrg # Accept the current argument as the source file. 11807a84e134Smrg # The previous "srcfile" becomes the current argument. 11817a84e134Smrg # 11827a84e134Smrg lastarg="$srcfile" 11837a84e134Smrg srcfile="$arg" 11847a84e134Smrg ;; 11857a84e134Smrg esac # case $arg 11867a84e134Smrg ;; 11877a84e134Smrg esac # case $arg_mode 11887a84e134Smrg 11897a84e134Smrg # Aesthetically quote the previous argument. 1190775e7de9Smrg func_quote_for_eval "$lastarg" 1191775e7de9Smrg base_compile="$base_compile $func_quote_for_eval_result" 11927a84e134Smrg done # for arg 11937a84e134Smrg 11947a84e134Smrg case $arg_mode in 11957a84e134Smrg arg) 1196775e7de9Smrg func_fatal_error "you must specify an argument for -Xcompile" 11977a84e134Smrg ;; 11987a84e134Smrg target) 1199775e7de9Smrg func_fatal_error "you must specify a target with \`-o'" 12007a84e134Smrg ;; 12017a84e134Smrg *) 12027a84e134Smrg # Get the name of the library object. 1203775e7de9Smrg test -z "$libobj" && { 1204775e7de9Smrg func_basename "$srcfile" 1205775e7de9Smrg libobj="$func_basename_result" 1206775e7de9Smrg } 12077a84e134Smrg ;; 12087a84e134Smrg esac 12097a84e134Smrg 12107a84e134Smrg # Recognize several different file suffixes. 12117a84e134Smrg # If the user specifies -o file.o, it is replaced with file.lo 12127a84e134Smrg case $libobj in 1213775e7de9Smrg *.[cCFSifmso] | \ 1214775e7de9Smrg *.ada | *.adb | *.ads | *.asm | \ 1215775e7de9Smrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 1216775e7de9Smrg *.[fF][09]? | *.for | *.java | *.obj | *.sx) 1217775e7de9Smrg func_xform "$libobj" 1218775e7de9Smrg libobj=$func_xform_result 1219775e7de9Smrg ;; 12207a84e134Smrg esac 12217a84e134Smrg 12227a84e134Smrg case $libobj in 1223775e7de9Smrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 12247a84e134Smrg *) 1225775e7de9Smrg func_fatal_error "cannot determine name of library object from \`$libobj'" 12267a84e134Smrg ;; 12277a84e134Smrg esac 12287a84e134Smrg 12297a84e134Smrg func_infer_tag $base_compile 12307a84e134Smrg 12317a84e134Smrg for arg in $later; do 12327a84e134Smrg case $arg in 1233775e7de9Smrg -shared) 1234775e7de9Smrg test "$build_libtool_libs" != yes && \ 1235775e7de9Smrg func_fatal_configuration "can not build a shared library" 1236775e7de9Smrg build_old_libs=no 1237775e7de9Smrg continue 1238775e7de9Smrg ;; 1239775e7de9Smrg 12407a84e134Smrg -static) 1241775e7de9Smrg build_libtool_libs=no 12427a84e134Smrg build_old_libs=yes 12437a84e134Smrg continue 12447a84e134Smrg ;; 12457a84e134Smrg 12467a84e134Smrg -prefer-pic) 12477a84e134Smrg pic_mode=yes 12487a84e134Smrg continue 12497a84e134Smrg ;; 12507a84e134Smrg 12517a84e134Smrg -prefer-non-pic) 12527a84e134Smrg pic_mode=no 12537a84e134Smrg continue 12547a84e134Smrg ;; 12557a84e134Smrg esac 12567a84e134Smrg done 12577a84e134Smrg 1258775e7de9Smrg func_quote_for_eval "$libobj" 1259775e7de9Smrg test "X$libobj" != "X$func_quote_for_eval_result" \ 1260775e7de9Smrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 1261775e7de9Smrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 1262775e7de9Smrg func_dirname_and_basename "$obj" "/" "" 1263775e7de9Smrg objname="$func_basename_result" 1264775e7de9Smrg xdir="$func_dirname_result" 12657a84e134Smrg lobj=${xdir}$objdir/$objname 12667a84e134Smrg 1267775e7de9Smrg test -z "$base_compile" && \ 1268775e7de9Smrg func_fatal_help "you must specify a compilation command" 12697a84e134Smrg 12707a84e134Smrg # Delete any leftover library objects. 12717a84e134Smrg if test "$build_old_libs" = yes; then 12727a84e134Smrg removelist="$obj $lobj $libobj ${libobj}T" 12737a84e134Smrg else 12747a84e134Smrg removelist="$lobj $libobj ${libobj}T" 12757a84e134Smrg fi 12767a84e134Smrg 12777a84e134Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 12787a84e134Smrg case $host_os in 1279775e7de9Smrg cygwin* | mingw* | pw32* | os2* | cegcc*) 12807a84e134Smrg pic_mode=default 12817a84e134Smrg ;; 12827a84e134Smrg esac 12837a84e134Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 12847a84e134Smrg # non-PIC code in shared libraries is not supported 12857a84e134Smrg pic_mode=default 12867a84e134Smrg fi 12877a84e134Smrg 12887a84e134Smrg # Calculate the filename of the output object if compiler does 12897a84e134Smrg # not support -o with -c 12907a84e134Smrg if test "$compiler_c_o" = no; then 1291775e7de9Smrg output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 12927a84e134Smrg lockfile="$output_obj.lock" 12937a84e134Smrg else 12947a84e134Smrg output_obj= 12957a84e134Smrg need_locks=no 12967a84e134Smrg lockfile= 12977a84e134Smrg fi 12987a84e134Smrg 12997a84e134Smrg # Lock this critical section if it is needed 13007a84e134Smrg # We use this script file to make the link, it avoids creating a new file 13017a84e134Smrg if test "$need_locks" = yes; then 1302775e7de9Smrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 1303775e7de9Smrg func_echo "Waiting for $lockfile to be removed" 13047a84e134Smrg sleep 2 13057a84e134Smrg done 13067a84e134Smrg elif test "$need_locks" = warn; then 13077a84e134Smrg if test -f "$lockfile"; then 1308775e7de9Smrg $ECHO "\ 13097a84e134Smrg*** ERROR, $lockfile exists and contains: 13107a84e134Smrg`cat $lockfile 2>/dev/null` 13117a84e134Smrg 13127a84e134SmrgThis indicates that another process is trying to use the same 13137a84e134Smrgtemporary object file, and libtool could not work around it because 13147a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 13157a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 13167a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 13177a84e134Smrgcompiler." 13187a84e134Smrg 1319775e7de9Smrg $opt_dry_run || $RM $removelist 13207a84e134Smrg exit $EXIT_FAILURE 13217a84e134Smrg fi 1322775e7de9Smrg removelist="$removelist $output_obj" 1323775e7de9Smrg $ECHO "$srcfile" > "$lockfile" 13247a84e134Smrg fi 13257a84e134Smrg 1326775e7de9Smrg $opt_dry_run || $RM $removelist 1327775e7de9Smrg removelist="$removelist $lockfile" 1328775e7de9Smrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 1329775e7de9Smrg 13307a84e134Smrg if test -n "$fix_srcfile_path"; then 13317a84e134Smrg eval srcfile=\"$fix_srcfile_path\" 13327a84e134Smrg fi 1333775e7de9Smrg func_quote_for_eval "$srcfile" 1334775e7de9Smrg qsrcfile=$func_quote_for_eval_result 13357a84e134Smrg 13367a84e134Smrg # Only build a PIC object if we are building libtool libraries. 13377a84e134Smrg if test "$build_libtool_libs" = yes; then 13387a84e134Smrg # Without this assignment, base_compile gets emptied. 13397a84e134Smrg fbsd_hideous_sh_bug=$base_compile 13407a84e134Smrg 13417a84e134Smrg if test "$pic_mode" != no; then 13427a84e134Smrg command="$base_compile $qsrcfile $pic_flag" 13437a84e134Smrg else 13447a84e134Smrg # Don't build PIC code 13457a84e134Smrg command="$base_compile $qsrcfile" 13467a84e134Smrg fi 13477a84e134Smrg 1348775e7de9Smrg func_mkdir_p "$xdir$objdir" 13497a84e134Smrg 13507a84e134Smrg if test -z "$output_obj"; then 13517a84e134Smrg # Place PIC objects in $objdir 13527a84e134Smrg command="$command -o $lobj" 13537a84e134Smrg fi 13547a84e134Smrg 1355775e7de9Smrg func_show_eval_locale "$command" \ 1356775e7de9Smrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 13577a84e134Smrg 13587a84e134Smrg if test "$need_locks" = warn && 13597a84e134Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1360775e7de9Smrg $ECHO "\ 13617a84e134Smrg*** ERROR, $lockfile contains: 13627a84e134Smrg`cat $lockfile 2>/dev/null` 13637a84e134Smrg 13647a84e134Smrgbut it should contain: 13657a84e134Smrg$srcfile 13667a84e134Smrg 13677a84e134SmrgThis indicates that another process is trying to use the same 13687a84e134Smrgtemporary object file, and libtool could not work around it because 13697a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 13707a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 13717a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 13727a84e134Smrgcompiler." 13737a84e134Smrg 1374775e7de9Smrg $opt_dry_run || $RM $removelist 13757a84e134Smrg exit $EXIT_FAILURE 13767a84e134Smrg fi 13777a84e134Smrg 13787a84e134Smrg # Just move the object if needed, then go on to compile the next one 13797a84e134Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 1380775e7de9Smrg func_show_eval '$MV "$output_obj" "$lobj"' \ 1381775e7de9Smrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 13827a84e134Smrg fi 13837a84e134Smrg 13847a84e134Smrg # Allow error messages only from the first compilation. 13857a84e134Smrg if test "$suppress_opt" = yes; then 1386775e7de9Smrg suppress_output=' >/dev/null 2>&1' 13877a84e134Smrg fi 13887a84e134Smrg fi 13897a84e134Smrg 13907a84e134Smrg # Only build a position-dependent object if we build old libraries. 13917a84e134Smrg if test "$build_old_libs" = yes; then 13927a84e134Smrg if test "$pic_mode" != yes; then 13937a84e134Smrg # Don't build PIC code 1394775e7de9Smrg command="$base_compile $qsrcfile$pie_flag" 13957a84e134Smrg else 13967a84e134Smrg command="$base_compile $qsrcfile $pic_flag" 13977a84e134Smrg fi 13987a84e134Smrg if test "$compiler_c_o" = yes; then 13997a84e134Smrg command="$command -o $obj" 14007a84e134Smrg fi 14017a84e134Smrg 14027a84e134Smrg # Suppress compiler output if we already did a PIC compilation. 14037a84e134Smrg command="$command$suppress_output" 1404775e7de9Smrg func_show_eval_locale "$command" \ 1405775e7de9Smrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 14067a84e134Smrg 14077a84e134Smrg if test "$need_locks" = warn && 14087a84e134Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1409775e7de9Smrg $ECHO "\ 14107a84e134Smrg*** ERROR, $lockfile contains: 14117a84e134Smrg`cat $lockfile 2>/dev/null` 14127a84e134Smrg 14137a84e134Smrgbut it should contain: 14147a84e134Smrg$srcfile 14157a84e134Smrg 14167a84e134SmrgThis indicates that another process is trying to use the same 14177a84e134Smrgtemporary object file, and libtool could not work around it because 14187a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 14197a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 14207a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 14217a84e134Smrgcompiler." 14227a84e134Smrg 1423775e7de9Smrg $opt_dry_run || $RM $removelist 14247a84e134Smrg exit $EXIT_FAILURE 14257a84e134Smrg fi 14267a84e134Smrg 14277a84e134Smrg # Just move the object if needed 14287a84e134Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1429775e7de9Smrg func_show_eval '$MV "$output_obj" "$obj"' \ 1430775e7de9Smrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 14317a84e134Smrg fi 14327a84e134Smrg fi 14337a84e134Smrg 1434775e7de9Smrg $opt_dry_run || { 1435775e7de9Smrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 14367a84e134Smrg 1437775e7de9Smrg # Unlock the critical section if it was locked 1438775e7de9Smrg if test "$need_locks" != no; then 1439775e7de9Smrg removelist=$lockfile 1440775e7de9Smrg $RM "$lockfile" 1441775e7de9Smrg fi 1442775e7de9Smrg } 14437a84e134Smrg 14447a84e134Smrg exit $EXIT_SUCCESS 1445775e7de9Smrg} 14467a84e134Smrg 1447775e7de9Smrg$opt_help || { 1448775e7de9Smrgtest "$mode" = compile && func_mode_compile ${1+"$@"} 1449775e7de9Smrg} 14507a84e134Smrg 1451775e7de9Smrgfunc_mode_help () 1452775e7de9Smrg{ 1453775e7de9Smrg # We need to display help for each of the modes. 1454775e7de9Smrg case $mode in 1455775e7de9Smrg "") 1456775e7de9Smrg # Generic help is extracted from the usage comments 1457775e7de9Smrg # at the start of this file. 1458775e7de9Smrg func_help 1459775e7de9Smrg ;; 14607a84e134Smrg 1461775e7de9Smrg clean) 1462775e7de9Smrg $ECHO \ 1463775e7de9Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 14647a84e134Smrg 1465775e7de9SmrgRemove files from the build directory. 14667a84e134Smrg 1467775e7de9SmrgRM is the name of the program to use to delete files associated with each FILE 1468775e7de9Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1469775e7de9Smrgto RM. 14707a84e134Smrg 1471775e7de9SmrgIf FILE is a libtool library, object or program, all the files associated 1472775e7de9Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 1473775e7de9Smrg ;; 14747a84e134Smrg 1475775e7de9Smrg compile) 1476775e7de9Smrg $ECHO \ 1477775e7de9Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 14787a84e134Smrg 1479775e7de9SmrgCompile a source file into a libtool library object. 14807a84e134Smrg 1481775e7de9SmrgThis mode accepts the following additional options: 14827a84e134Smrg 1483775e7de9Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 1484775e7de9Smrg -no-suppress do not suppress compiler output for multiple passes 1485775e7de9Smrg -prefer-pic try to building PIC objects only 1486775e7de9Smrg -prefer-non-pic try to building non-PIC objects only 1487775e7de9Smrg -shared do not build a \`.o' file suitable for static linking 1488775e7de9Smrg -static only build a \`.o' file suitable for static linking 14897a84e134Smrg 1490775e7de9SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 1491775e7de9Smrgfrom the given SOURCEFILE. 14927a84e134Smrg 1493775e7de9SmrgThe output file name is determined by removing the directory component from 1494775e7de9SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 1495775e7de9Smrglibrary object suffix, \`.lo'." 1496775e7de9Smrg ;; 14977a84e134Smrg 1498775e7de9Smrg execute) 1499775e7de9Smrg $ECHO \ 1500775e7de9Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 15017a84e134Smrg 1502775e7de9SmrgAutomatically set library path, then run a program. 15037a84e134Smrg 1504775e7de9SmrgThis mode accepts the following additional options: 15057a84e134Smrg 1506775e7de9Smrg -dlopen FILE add the directory containing FILE to the library path 15077a84e134Smrg 1508775e7de9SmrgThis mode sets the library path environment variable according to \`-dlopen' 1509775e7de9Smrgflags. 15107a84e134Smrg 1511775e7de9SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 1512775e7de9Smrginto their corresponding uninstalled binary, and any of their required library 1513775e7de9Smrgdirectories are added to the library path. 15147a84e134Smrg 1515775e7de9SmrgThen, COMMAND is executed, with ARGS as arguments." 1516775e7de9Smrg ;; 15177a84e134Smrg 1518775e7de9Smrg finish) 1519775e7de9Smrg $ECHO \ 1520775e7de9Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 15217a84e134Smrg 1522775e7de9SmrgComplete the installation of libtool libraries. 15237a84e134Smrg 1524775e7de9SmrgEach LIBDIR is a directory that contains libtool libraries. 15257a84e134Smrg 1526775e7de9SmrgThe commands that this mode executes may require superuser privileges. Use 1527775e7de9Smrgthe \`--dry-run' option if you just want to see what would be executed." 1528775e7de9Smrg ;; 15297a84e134Smrg 1530775e7de9Smrg install) 1531775e7de9Smrg $ECHO \ 1532775e7de9Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 15337a84e134Smrg 1534775e7de9SmrgInstall executables or libraries. 15357a84e134Smrg 1536775e7de9SmrgINSTALL-COMMAND is the installation command. The first component should be 1537775e7de9Smrgeither the \`install' or \`cp' program. 15387a84e134Smrg 1539775e7de9SmrgThe following components of INSTALL-COMMAND are treated specially: 15407a84e134Smrg 1541775e7de9Smrg -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 15427a84e134Smrg 1543775e7de9SmrgThe rest of the components are interpreted as arguments to that command (only 1544775e7de9SmrgBSD-compatible install options are recognized)." 1545775e7de9Smrg ;; 15467a84e134Smrg 1547775e7de9Smrg link) 1548775e7de9Smrg $ECHO \ 1549775e7de9Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 15507a84e134Smrg 1551775e7de9SmrgLink object files or libraries together to form another library, or to 1552775e7de9Smrgcreate an executable program. 15537a84e134Smrg 1554775e7de9SmrgLINK-COMMAND is a command using the C compiler that you would use to create 1555775e7de9Smrga program from several object files. 15567a84e134Smrg 1557775e7de9SmrgThe following components of LINK-COMMAND are treated specially: 15587a84e134Smrg 1559775e7de9Smrg -all-static do not do any dynamic linking at all 1560775e7de9Smrg -avoid-version do not add a version suffix if possible 1561775e7de9Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 1562775e7de9Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 1563775e7de9Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1564775e7de9Smrg -export-symbols SYMFILE 1565775e7de9Smrg try to export only the symbols listed in SYMFILE 1566775e7de9Smrg -export-symbols-regex REGEX 1567775e7de9Smrg try to export only the symbols matching REGEX 1568775e7de9Smrg -LLIBDIR search LIBDIR for required installed libraries 1569775e7de9Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 1570775e7de9Smrg -module build a library that can dlopened 1571775e7de9Smrg -no-fast-install disable the fast-install mode 1572775e7de9Smrg -no-install link a not-installable executable 1573775e7de9Smrg -no-undefined declare that a library does not refer to external symbols 1574775e7de9Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 1575775e7de9Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 1576775e7de9Smrg -precious-files-regex REGEX 1577775e7de9Smrg don't remove output files matching REGEX 1578775e7de9Smrg -release RELEASE specify package release information 1579775e7de9Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 1580775e7de9Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 1581775e7de9Smrg -shared only do dynamic linking of libtool libraries 1582775e7de9Smrg -shrext SUFFIX override the standard shared library file extension 1583775e7de9Smrg -static do not do any dynamic linking of uninstalled libtool libraries 1584775e7de9Smrg -static-libtool-libs 1585775e7de9Smrg do not do any dynamic linking of libtool libraries 1586775e7de9Smrg -version-info CURRENT[:REVISION[:AGE]] 1587775e7de9Smrg specify library version info [each variable defaults to 0] 1588775e7de9Smrg -weak LIBNAME declare that the target provides the LIBNAME interface 15897a84e134Smrg 1590775e7de9SmrgAll other options (arguments beginning with \`-') are ignored. 15917a84e134Smrg 1592775e7de9SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 1593775e7de9Smrgtreated as uninstalled libtool libraries, other files are standard or library 1594775e7de9Smrgobject files. 1595ab902922Smrg 1596775e7de9SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 1597775e7de9Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 1598775e7de9Smrgrequired, except when creating a convenience library. 15997a84e134Smrg 1600775e7de9SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 1601775e7de9Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 16027a84e134Smrg 1603775e7de9SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 1604775e7de9Smrgis created, otherwise an executable program is created." 16057a84e134Smrg ;; 16067a84e134Smrg 1607775e7de9Smrg uninstall) 1608775e7de9Smrg $ECHO \ 1609775e7de9Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 16107a84e134Smrg 1611775e7de9SmrgRemove libraries from an installation directory. 16127a84e134Smrg 1613775e7de9SmrgRM is the name of the program to use to delete files associated with each FILE 1614775e7de9Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1615775e7de9Smrgto RM. 16167a84e134Smrg 1617775e7de9SmrgIf FILE is a libtool library, all the files associated with it are deleted. 1618775e7de9SmrgOtherwise, only FILE itself is deleted using RM." 1619775e7de9Smrg ;; 16207a84e134Smrg 1621775e7de9Smrg *) 1622775e7de9Smrg func_fatal_help "invalid operation mode \`$mode'" 1623775e7de9Smrg ;; 1624775e7de9Smrg esac 16257a84e134Smrg 1626775e7de9Smrg $ECHO 1627775e7de9Smrg $ECHO "Try \`$progname --help' for more information about other modes." 16287a84e134Smrg 1629775e7de9Smrg exit $? 1630775e7de9Smrg} 16317a84e134Smrg 1632775e7de9Smrg # Now that we've collected a possible --mode arg, show help if necessary 1633775e7de9Smrg $opt_help && func_mode_help 16347a84e134Smrg 16357a84e134Smrg 1636775e7de9Smrg# func_mode_execute arg... 1637775e7de9Smrgfunc_mode_execute () 1638775e7de9Smrg{ 1639775e7de9Smrg $opt_debug 1640775e7de9Smrg # The first argument is the command name. 1641775e7de9Smrg cmd="$nonopt" 1642775e7de9Smrg test -z "$cmd" && \ 1643775e7de9Smrg func_fatal_help "you must specify a COMMAND" 16447a84e134Smrg 1645775e7de9Smrg # Handle -dlopen flags immediately. 1646775e7de9Smrg for file in $execute_dlfiles; do 1647775e7de9Smrg test -f "$file" \ 1648775e7de9Smrg || func_fatal_help "\`$file' is not a file" 16497a84e134Smrg 1650775e7de9Smrg dir= 1651775e7de9Smrg case $file in 1652775e7de9Smrg *.la) 1653775e7de9Smrg # Check to see that this really is a libtool archive. 1654775e7de9Smrg func_lalib_unsafe_p "$file" \ 1655775e7de9Smrg || func_fatal_help "\`$lib' is not a valid libtool archive" 16567a84e134Smrg 1657775e7de9Smrg # Read the libtool library. 1658775e7de9Smrg dlname= 1659775e7de9Smrg library_names= 1660775e7de9Smrg func_source "$file" 16617a84e134Smrg 1662775e7de9Smrg # Skip this library if it cannot be dlopened. 1663775e7de9Smrg if test -z "$dlname"; then 1664775e7de9Smrg # Warn if it was a shared library. 1665775e7de9Smrg test -n "$library_names" && \ 1666775e7de9Smrg func_warning "\`$file' was not linked with \`-export-dynamic'" 1667775e7de9Smrg continue 1668775e7de9Smrg fi 16697a84e134Smrg 1670775e7de9Smrg func_dirname "$file" "" "." 1671775e7de9Smrg dir="$func_dirname_result" 16727a84e134Smrg 1673775e7de9Smrg if test -f "$dir/$objdir/$dlname"; then 1674775e7de9Smrg dir="$dir/$objdir" 1675775e7de9Smrg else 1676775e7de9Smrg if test ! -f "$dir/$dlname"; then 1677775e7de9Smrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1678775e7de9Smrg fi 1679775e7de9Smrg fi 16807a84e134Smrg ;; 16817a84e134Smrg 1682775e7de9Smrg *.lo) 1683775e7de9Smrg # Just add the directory containing the .lo file. 1684775e7de9Smrg func_dirname "$file" "" "." 1685775e7de9Smrg dir="$func_dirname_result" 16867a84e134Smrg ;; 16877a84e134Smrg 1688775e7de9Smrg *) 1689775e7de9Smrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 16907a84e134Smrg continue 16917a84e134Smrg ;; 1692775e7de9Smrg esac 16937a84e134Smrg 1694775e7de9Smrg # Get the absolute pathname. 1695775e7de9Smrg absdir=`cd "$dir" && pwd` 1696775e7de9Smrg test -n "$absdir" && dir="$absdir" 16977a84e134Smrg 1698775e7de9Smrg # Now add the directory to shlibpath_var. 1699775e7de9Smrg if eval "test -z \"\$$shlibpath_var\""; then 1700775e7de9Smrg eval "$shlibpath_var=\"\$dir\"" 1701775e7de9Smrg else 1702775e7de9Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 1703775e7de9Smrg fi 1704775e7de9Smrg done 17057a84e134Smrg 1706775e7de9Smrg # This variable tells wrapper scripts just to set shlibpath_var 1707775e7de9Smrg # rather than running their programs. 1708775e7de9Smrg libtool_execute_magic="$magic" 17097a84e134Smrg 1710775e7de9Smrg # Check if any of the arguments is a wrapper script. 1711775e7de9Smrg args= 1712775e7de9Smrg for file 1713775e7de9Smrg do 1714775e7de9Smrg case $file in 1715775e7de9Smrg -*) ;; 1716775e7de9Smrg *) 1717775e7de9Smrg # Do a test to see if this is really a libtool program. 1718775e7de9Smrg if func_ltwrapper_script_p "$file"; then 1719775e7de9Smrg func_source "$file" 1720775e7de9Smrg # Transform arg to wrapped name. 1721775e7de9Smrg file="$progdir/$program" 1722775e7de9Smrg elif func_ltwrapper_executable_p "$file"; then 1723775e7de9Smrg func_ltwrapper_scriptname "$file" 1724775e7de9Smrg func_source "$func_ltwrapper_scriptname_result" 1725775e7de9Smrg # Transform arg to wrapped name. 1726775e7de9Smrg file="$progdir/$program" 1727775e7de9Smrg fi 1728775e7de9Smrg ;; 1729775e7de9Smrg esac 1730775e7de9Smrg # Quote arguments (to preserve shell metacharacters). 1731775e7de9Smrg func_quote_for_eval "$file" 1732775e7de9Smrg args="$args $func_quote_for_eval_result" 1733775e7de9Smrg done 17347a84e134Smrg 1735775e7de9Smrg if test "X$opt_dry_run" = Xfalse; then 1736775e7de9Smrg if test -n "$shlibpath_var"; then 1737775e7de9Smrg # Export the shlibpath_var. 1738775e7de9Smrg eval "export $shlibpath_var" 1739775e7de9Smrg fi 17407a84e134Smrg 1741775e7de9Smrg # Restore saved environment variables 1742775e7de9Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1743775e7de9Smrg do 1744775e7de9Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 1745775e7de9Smrg $lt_var=\$save_$lt_var; export $lt_var 17467a84e134Smrg else 1747775e7de9Smrg $lt_unset $lt_var 1748775e7de9Smrg fi" 1749775e7de9Smrg done 17507a84e134Smrg 1751775e7de9Smrg # Now prepare to actually exec the command. 1752775e7de9Smrg exec_cmd="\$cmd$args" 1753775e7de9Smrg else 1754775e7de9Smrg # Display what would be done. 1755775e7de9Smrg if test -n "$shlibpath_var"; then 1756775e7de9Smrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 1757775e7de9Smrg $ECHO "export $shlibpath_var" 1758775e7de9Smrg fi 1759775e7de9Smrg $ECHO "$cmd$args" 1760775e7de9Smrg exit $EXIT_SUCCESS 1761775e7de9Smrg fi 1762775e7de9Smrg} 17637a84e134Smrg 1764775e7de9Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"} 17657a84e134Smrg 17667a84e134Smrg 1767775e7de9Smrg# func_mode_finish arg... 1768775e7de9Smrgfunc_mode_finish () 1769775e7de9Smrg{ 1770775e7de9Smrg $opt_debug 1771775e7de9Smrg libdirs="$nonopt" 1772775e7de9Smrg admincmds= 17737a84e134Smrg 1774775e7de9Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1775775e7de9Smrg for dir 1776775e7de9Smrg do 1777775e7de9Smrg libdirs="$libdirs $dir" 1778775e7de9Smrg done 17797a84e134Smrg 1780775e7de9Smrg for libdir in $libdirs; do 1781775e7de9Smrg if test -n "$finish_cmds"; then 1782775e7de9Smrg # Do each command in the finish commands. 1783775e7de9Smrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 1784775e7de9Smrg'"$cmd"'"' 17857a84e134Smrg fi 1786775e7de9Smrg if test -n "$finish_eval"; then 1787775e7de9Smrg # Do the single finish_eval. 1788775e7de9Smrg eval cmds=\"$finish_eval\" 1789775e7de9Smrg $opt_dry_run || eval "$cmds" || admincmds="$admincmds 1790775e7de9Smrg $cmds" 1791775e7de9Smrg fi 1792775e7de9Smrg done 1793775e7de9Smrg fi 17947a84e134Smrg 1795775e7de9Smrg # Exit here if they wanted silent mode. 1796775e7de9Smrg $opt_silent && exit $EXIT_SUCCESS 17977a84e134Smrg 1798775e7de9Smrg $ECHO "X----------------------------------------------------------------------" | $Xsed 1799775e7de9Smrg $ECHO "Libraries have been installed in:" 1800775e7de9Smrg for libdir in $libdirs; do 1801775e7de9Smrg $ECHO " $libdir" 1802775e7de9Smrg done 1803775e7de9Smrg $ECHO 1804775e7de9Smrg $ECHO "If you ever happen to want to link against installed libraries" 1805775e7de9Smrg $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 1806775e7de9Smrg $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 1807775e7de9Smrg $ECHO "flag during linking and do at least one of the following:" 1808775e7de9Smrg if test -n "$shlibpath_var"; then 1809775e7de9Smrg $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 1810775e7de9Smrg $ECHO " during execution" 1811775e7de9Smrg fi 1812775e7de9Smrg if test -n "$runpath_var"; then 1813775e7de9Smrg $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 1814775e7de9Smrg $ECHO " during linking" 1815775e7de9Smrg fi 1816775e7de9Smrg if test -n "$hardcode_libdir_flag_spec"; then 1817775e7de9Smrg libdir=LIBDIR 1818775e7de9Smrg eval flag=\"$hardcode_libdir_flag_spec\" 18197a84e134Smrg 1820775e7de9Smrg $ECHO " - use the \`$flag' linker flag" 1821775e7de9Smrg fi 1822775e7de9Smrg if test -n "$admincmds"; then 1823775e7de9Smrg $ECHO " - have your system administrator run these commands:$admincmds" 1824775e7de9Smrg fi 1825775e7de9Smrg if test -f /etc/ld.so.conf; then 1826775e7de9Smrg $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 1827775e7de9Smrg fi 1828775e7de9Smrg $ECHO 1829775e7de9Smrg 1830775e7de9Smrg $ECHO "See any operating system documentation about shared libraries for" 1831775e7de9Smrg case $host in 1832775e7de9Smrg solaris2.[6789]|solaris2.1[0-9]) 1833775e7de9Smrg $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 1834775e7de9Smrg $ECHO "pages." 18357a84e134Smrg ;; 1836775e7de9Smrg *) 1837775e7de9Smrg $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 1838775e7de9Smrg ;; 1839775e7de9Smrg esac 1840775e7de9Smrg $ECHO "X----------------------------------------------------------------------" | $Xsed 1841775e7de9Smrg exit $EXIT_SUCCESS 1842775e7de9Smrg} 18437a84e134Smrg 1844775e7de9Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"} 18457a84e134Smrg 1846ab902922Smrg 1847775e7de9Smrg# func_mode_install arg... 1848775e7de9Smrgfunc_mode_install () 1849775e7de9Smrg{ 1850775e7de9Smrg $opt_debug 1851775e7de9Smrg # There may be an optional sh(1) argument at the beginning of 1852775e7de9Smrg # install_prog (especially on Windows NT). 1853775e7de9Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 1854775e7de9Smrg # Allow the use of GNU shtool's install command. 1855775e7de9Smrg $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 1856775e7de9Smrg # Aesthetically quote it. 1857775e7de9Smrg func_quote_for_eval "$nonopt" 1858775e7de9Smrg install_prog="$func_quote_for_eval_result " 1859775e7de9Smrg arg=$1 1860775e7de9Smrg shift 1861775e7de9Smrg else 1862775e7de9Smrg install_prog= 1863775e7de9Smrg arg=$nonopt 18647a84e134Smrg fi 18657a84e134Smrg 1866775e7de9Smrg # The real first argument should be the name of the installation program. 1867775e7de9Smrg # Aesthetically quote it. 1868775e7de9Smrg func_quote_for_eval "$arg" 1869775e7de9Smrg install_prog="$install_prog$func_quote_for_eval_result" 18707a84e134Smrg 1871775e7de9Smrg # We need to accept at least all the BSD install flags. 1872775e7de9Smrg dest= 1873775e7de9Smrg files= 1874775e7de9Smrg opts= 1875775e7de9Smrg prev= 1876775e7de9Smrg install_type= 1877775e7de9Smrg isdir=no 1878775e7de9Smrg stripme= 1879775e7de9Smrg for arg 1880775e7de9Smrg do 1881775e7de9Smrg if test -n "$dest"; then 1882775e7de9Smrg files="$files $dest" 1883775e7de9Smrg dest=$arg 1884775e7de9Smrg continue 1885775e7de9Smrg fi 18867a84e134Smrg 1887775e7de9Smrg case $arg in 1888775e7de9Smrg -d) isdir=yes ;; 1889775e7de9Smrg -f) 1890775e7de9Smrg case " $install_prog " in 1891775e7de9Smrg *[\\\ /]cp\ *) ;; 1892775e7de9Smrg *) prev=$arg ;; 1893775e7de9Smrg esac 1894775e7de9Smrg ;; 1895775e7de9Smrg -g | -m | -o) 1896775e7de9Smrg prev=$arg 1897775e7de9Smrg ;; 1898775e7de9Smrg -s) 1899775e7de9Smrg stripme=" -s" 1900775e7de9Smrg continue 1901775e7de9Smrg ;; 1902775e7de9Smrg -*) 1903775e7de9Smrg ;; 1904775e7de9Smrg *) 1905775e7de9Smrg # If the previous option needed an argument, then skip it. 1906775e7de9Smrg if test -n "$prev"; then 1907775e7de9Smrg prev= 1908775e7de9Smrg else 1909775e7de9Smrg dest=$arg 1910775e7de9Smrg continue 1911775e7de9Smrg fi 1912775e7de9Smrg ;; 1913775e7de9Smrg esac 19147a84e134Smrg 1915775e7de9Smrg # Aesthetically quote the argument. 1916775e7de9Smrg func_quote_for_eval "$arg" 1917775e7de9Smrg install_prog="$install_prog $func_quote_for_eval_result" 1918775e7de9Smrg done 1919775e7de9Smrg 1920775e7de9Smrg test -z "$install_prog" && \ 1921775e7de9Smrg func_fatal_help "you must specify an install program" 1922775e7de9Smrg 1923775e7de9Smrg test -n "$prev" && \ 1924775e7de9Smrg func_fatal_help "the \`$prev' option requires an argument" 1925775e7de9Smrg 1926775e7de9Smrg if test -z "$files"; then 1927775e7de9Smrg if test -z "$dest"; then 1928775e7de9Smrg func_fatal_help "no file or destination specified" 1929775e7de9Smrg else 1930775e7de9Smrg func_fatal_help "you must specify a destination" 19317a84e134Smrg fi 19327a84e134Smrg fi 19337a84e134Smrg 1934775e7de9Smrg # Strip any trailing slash from the destination. 1935775e7de9Smrg func_stripname '' '/' "$dest" 1936775e7de9Smrg dest=$func_stripname_result 19377a84e134Smrg 1938775e7de9Smrg # Check to see that the destination is a directory. 1939775e7de9Smrg test -d "$dest" && isdir=yes 1940775e7de9Smrg if test "$isdir" = yes; then 1941775e7de9Smrg destdir="$dest" 1942775e7de9Smrg destname= 1943775e7de9Smrg else 1944775e7de9Smrg func_dirname_and_basename "$dest" "" "." 1945775e7de9Smrg destdir="$func_dirname_result" 1946775e7de9Smrg destname="$func_basename_result" 1947775e7de9Smrg 1948775e7de9Smrg # Not a directory, so check to see that there is only one file specified. 1949775e7de9Smrg set dummy $files; shift 1950775e7de9Smrg test "$#" -gt 1 && \ 1951775e7de9Smrg func_fatal_help "\`$dest' is not a directory" 1952775e7de9Smrg fi 1953775e7de9Smrg case $destdir in 1954775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 19557a84e134Smrg *) 1956775e7de9Smrg for file in $files; do 1957775e7de9Smrg case $file in 1958775e7de9Smrg *.lo) ;; 1959775e7de9Smrg *) 1960775e7de9Smrg func_fatal_help "\`$destdir' must be an absolute directory name" 1961775e7de9Smrg ;; 1962775e7de9Smrg esac 1963775e7de9Smrg done 19647a84e134Smrg ;; 19657a84e134Smrg esac 19667a84e134Smrg 1967775e7de9Smrg # This variable tells wrapper scripts just to set variables rather 1968775e7de9Smrg # than running their programs. 1969775e7de9Smrg libtool_install_magic="$magic" 19707a84e134Smrg 1971775e7de9Smrg staticlibs= 1972775e7de9Smrg future_libdirs= 1973775e7de9Smrg current_libdirs= 1974775e7de9Smrg for file in $files; do 19757a84e134Smrg 1976775e7de9Smrg # Do each installation. 1977775e7de9Smrg case $file in 1978775e7de9Smrg *.$libext) 1979775e7de9Smrg # Do the static libraries later. 1980775e7de9Smrg staticlibs="$staticlibs $file" 1981775e7de9Smrg ;; 1982775e7de9Smrg 1983775e7de9Smrg *.la) 1984775e7de9Smrg # Check to see that this really is a libtool archive. 1985775e7de9Smrg func_lalib_unsafe_p "$file" \ 1986775e7de9Smrg || func_fatal_help "\`$file' is not a valid libtool archive" 1987775e7de9Smrg 1988775e7de9Smrg library_names= 1989775e7de9Smrg old_library= 1990775e7de9Smrg relink_command= 1991775e7de9Smrg func_source "$file" 1992775e7de9Smrg 1993775e7de9Smrg # Add the libdir to current_libdirs if it is the destination. 1994775e7de9Smrg if test "X$destdir" = "X$libdir"; then 1995775e7de9Smrg case "$current_libdirs " in 1996775e7de9Smrg *" $libdir "*) ;; 1997775e7de9Smrg *) current_libdirs="$current_libdirs $libdir" ;; 19987a84e134Smrg esac 1999775e7de9Smrg else 2000775e7de9Smrg # Note the libdir as a future libdir. 2001775e7de9Smrg case "$future_libdirs " in 2002775e7de9Smrg *" $libdir "*) ;; 2003775e7de9Smrg *) future_libdirs="$future_libdirs $libdir" ;; 2004775e7de9Smrg esac 2005775e7de9Smrg fi 20067a84e134Smrg 2007775e7de9Smrg func_dirname "$file" "/" "" 2008775e7de9Smrg dir="$func_dirname_result" 2009775e7de9Smrg dir="$dir$objdir" 2010775e7de9Smrg 2011775e7de9Smrg if test -n "$relink_command"; then 2012775e7de9Smrg # Determine the prefix the user has applied to our future dir. 2013775e7de9Smrg inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 2014775e7de9Smrg 2015775e7de9Smrg # Don't allow the user to place us outside of our expected 2016775e7de9Smrg # location b/c this prevents finding dependent libraries that 2017775e7de9Smrg # are installed to the same prefix. 2018775e7de9Smrg # At present, this check doesn't affect windows .dll's that 2019775e7de9Smrg # are installed into $libdir/../bin (currently, that works fine) 2020775e7de9Smrg # but it's something to keep an eye on. 2021775e7de9Smrg test "$inst_prefix_dir" = "$destdir" && \ 2022775e7de9Smrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2023775e7de9Smrg 2024775e7de9Smrg if test -n "$inst_prefix_dir"; then 2025775e7de9Smrg # Stick the inst_prefix_dir data into the link command. 2026775e7de9Smrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2027775e7de9Smrg else 2028775e7de9Smrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 2029775e7de9Smrg fi 2030775e7de9Smrg 2031775e7de9Smrg func_warning "relinking \`$file'" 2032775e7de9Smrg func_show_eval "$relink_command" \ 2033775e7de9Smrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2034775e7de9Smrg fi 2035775e7de9Smrg 2036775e7de9Smrg # See the names of the shared library. 2037775e7de9Smrg set dummy $library_names; shift 2038775e7de9Smrg if test -n "$1"; then 2039775e7de9Smrg realname="$1" 2040775e7de9Smrg shift 2041775e7de9Smrg 2042775e7de9Smrg srcname="$realname" 2043775e7de9Smrg test -n "$relink_command" && srcname="$realname"T 2044775e7de9Smrg 2045775e7de9Smrg # Install the shared library and build the symlinks. 2046775e7de9Smrg func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 2047775e7de9Smrg 'exit $?' 2048775e7de9Smrg tstripme="$stripme" 2049775e7de9Smrg case $host_os in 2050775e7de9Smrg cygwin* | mingw* | pw32* | cegcc*) 2051775e7de9Smrg case $realname in 2052775e7de9Smrg *.dll.a) 2053775e7de9Smrg tstripme="" 2054775e7de9Smrg ;; 2055775e7de9Smrg esac 20567a84e134Smrg ;; 20577a84e134Smrg esac 2058775e7de9Smrg if test -n "$tstripme" && test -n "$striplib"; then 2059775e7de9Smrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 2060ab902922Smrg fi 2061775e7de9Smrg 2062775e7de9Smrg if test "$#" -gt 0; then 2063775e7de9Smrg # Delete the old symlinks, and create new ones. 2064775e7de9Smrg # Try `ln -sf' first, because the `ln' binary might depend on 2065775e7de9Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 2066775e7de9Smrg # so we also need to try rm && ln -s. 2067775e7de9Smrg for linkname 2068775e7de9Smrg do 2069775e7de9Smrg test "$linkname" != "$realname" \ 2070775e7de9Smrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 20717a84e134Smrg done 20727a84e134Smrg fi 20737a84e134Smrg 2074775e7de9Smrg # Do each command in the postinstall commands. 2075775e7de9Smrg lib="$destdir/$realname" 2076775e7de9Smrg func_execute_cmds "$postinstall_cmds" 'exit $?' 20777a84e134Smrg fi 20787a84e134Smrg 2079775e7de9Smrg # Install the pseudo-library for information purposes. 2080775e7de9Smrg func_basename "$file" 2081775e7de9Smrg name="$func_basename_result" 2082775e7de9Smrg instname="$dir/$name"i 2083775e7de9Smrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 20847a84e134Smrg 2085775e7de9Smrg # Maybe install the static library, too. 2086775e7de9Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 2087775e7de9Smrg ;; 20887a84e134Smrg 2089775e7de9Smrg *.lo) 2090775e7de9Smrg # Install (i.e. copy) a libtool object. 20917a84e134Smrg 2092775e7de9Smrg # Figure out destination file name, if it wasn't already specified. 2093775e7de9Smrg if test -n "$destname"; then 2094775e7de9Smrg destfile="$destdir/$destname" 2095775e7de9Smrg else 2096775e7de9Smrg func_basename "$file" 2097775e7de9Smrg destfile="$func_basename_result" 2098775e7de9Smrg destfile="$destdir/$destfile" 2099775e7de9Smrg fi 2100775e7de9Smrg 2101775e7de9Smrg # Deduce the name of the destination old-style object file. 2102775e7de9Smrg case $destfile in 2103775e7de9Smrg *.lo) 2104775e7de9Smrg func_lo2o "$destfile" 2105775e7de9Smrg staticdest=$func_lo2o_result 2106775e7de9Smrg ;; 2107775e7de9Smrg *.$objext) 2108775e7de9Smrg staticdest="$destfile" 2109775e7de9Smrg destfile= 2110775e7de9Smrg ;; 2111775e7de9Smrg *) 2112775e7de9Smrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 2113775e7de9Smrg ;; 21147a84e134Smrg esac 21157a84e134Smrg 2116775e7de9Smrg # Install the libtool object if requested. 2117775e7de9Smrg test -n "$destfile" && \ 2118775e7de9Smrg func_show_eval "$install_prog $file $destfile" 'exit $?' 2119775e7de9Smrg 2120775e7de9Smrg # Install the old object if enabled. 2121775e7de9Smrg if test "$build_old_libs" = yes; then 2122775e7de9Smrg # Deduce the name of the old-style object file. 2123775e7de9Smrg func_lo2o "$file" 2124775e7de9Smrg staticobj=$func_lo2o_result 2125775e7de9Smrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 21267a84e134Smrg fi 2127775e7de9Smrg exit $EXIT_SUCCESS 2128775e7de9Smrg ;; 21297a84e134Smrg 2130775e7de9Smrg *) 2131775e7de9Smrg # Figure out destination file name, if it wasn't already specified. 2132775e7de9Smrg if test -n "$destname"; then 2133775e7de9Smrg destfile="$destdir/$destname" 2134775e7de9Smrg else 2135775e7de9Smrg func_basename "$file" 2136775e7de9Smrg destfile="$func_basename_result" 2137775e7de9Smrg destfile="$destdir/$destfile" 2138775e7de9Smrg fi 21397a84e134Smrg 2140775e7de9Smrg # If the file is missing, and there is a .exe on the end, strip it 2141775e7de9Smrg # because it is most likely a libtool script we actually want to 2142775e7de9Smrg # install 2143775e7de9Smrg stripped_ext="" 2144775e7de9Smrg case $file in 2145775e7de9Smrg *.exe) 2146775e7de9Smrg if test ! -f "$file"; then 2147775e7de9Smrg func_stripname '' '.exe' "$file" 2148775e7de9Smrg file=$func_stripname_result 2149775e7de9Smrg stripped_ext=".exe" 2150775e7de9Smrg fi 2151775e7de9Smrg ;; 2152775e7de9Smrg esac 21537a84e134Smrg 2154775e7de9Smrg # Do a test to see if this is really a libtool program. 2155775e7de9Smrg case $host in 2156775e7de9Smrg *cygwin* | *mingw*) 2157775e7de9Smrg if func_ltwrapper_executable_p "$file"; then 2158775e7de9Smrg func_ltwrapper_scriptname "$file" 2159775e7de9Smrg wrapper=$func_ltwrapper_scriptname_result 2160775e7de9Smrg else 2161775e7de9Smrg func_stripname '' '.exe' "$file" 2162775e7de9Smrg wrapper=$func_stripname_result 2163775e7de9Smrg fi 2164775e7de9Smrg ;; 2165775e7de9Smrg *) 2166775e7de9Smrg wrapper=$file 2167775e7de9Smrg ;; 2168775e7de9Smrg esac 2169775e7de9Smrg if func_ltwrapper_script_p "$wrapper"; then 2170775e7de9Smrg notinst_deplibs= 2171775e7de9Smrg relink_command= 21727a84e134Smrg 2173775e7de9Smrg func_source "$wrapper" 2174775e7de9Smrg 2175775e7de9Smrg # Check the variables that should have been set. 2176775e7de9Smrg test -z "$generated_by_libtool_version" && \ 2177775e7de9Smrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 2178775e7de9Smrg 2179775e7de9Smrg finalize=yes 2180775e7de9Smrg for lib in $notinst_deplibs; do 2181775e7de9Smrg # Check to see that each library is installed. 2182775e7de9Smrg libdir= 2183775e7de9Smrg if test -f "$lib"; then 2184775e7de9Smrg func_source "$lib" 2185775e7de9Smrg fi 2186775e7de9Smrg libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 2187775e7de9Smrg if test -n "$libdir" && test ! -f "$libfile"; then 2188775e7de9Smrg func_warning "\`$lib' has not been installed in \`$libdir'" 2189775e7de9Smrg finalize=no 2190775e7de9Smrg fi 2191775e7de9Smrg done 2192775e7de9Smrg 2193775e7de9Smrg relink_command= 2194775e7de9Smrg func_source "$wrapper" 2195775e7de9Smrg 2196775e7de9Smrg outputname= 2197775e7de9Smrg if test "$fast_install" = no && test -n "$relink_command"; then 2198775e7de9Smrg $opt_dry_run || { 2199775e7de9Smrg if test "$finalize" = yes; then 2200775e7de9Smrg tmpdir=`func_mktempdir` 2201775e7de9Smrg func_basename "$file$stripped_ext" 2202775e7de9Smrg file="$func_basename_result" 2203775e7de9Smrg outputname="$tmpdir/$file" 2204775e7de9Smrg # Replace the output file specification. 2205775e7de9Smrg relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 2206775e7de9Smrg 2207775e7de9Smrg $opt_silent || { 2208775e7de9Smrg func_quote_for_expand "$relink_command" 2209775e7de9Smrg eval "func_echo $func_quote_for_expand_result" 2210775e7de9Smrg } 2211775e7de9Smrg if eval "$relink_command"; then : 2212775e7de9Smrg else 2213775e7de9Smrg func_error "error: relink \`$file' with the above command before installing it" 2214775e7de9Smrg $opt_dry_run || ${RM}r "$tmpdir" 2215775e7de9Smrg continue 2216775e7de9Smrg fi 2217775e7de9Smrg file="$outputname" 2218775e7de9Smrg else 2219775e7de9Smrg func_warning "cannot relink \`$file'" 2220775e7de9Smrg fi 2221775e7de9Smrg } 22227a84e134Smrg else 2223775e7de9Smrg # Install the binary that we compiled earlier. 2224775e7de9Smrg file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 22257a84e134Smrg fi 2226775e7de9Smrg fi 22277a84e134Smrg 2228775e7de9Smrg # remove .exe since cygwin /usr/bin/install will append another 2229775e7de9Smrg # one anyway 2230775e7de9Smrg case $install_prog,$host in 2231775e7de9Smrg */usr/bin/install*,*cygwin*) 2232775e7de9Smrg case $file:$destfile in 2233775e7de9Smrg *.exe:*.exe) 2234775e7de9Smrg # this is ok 2235775e7de9Smrg ;; 2236775e7de9Smrg *.exe:*) 2237775e7de9Smrg destfile=$destfile.exe 2238775e7de9Smrg ;; 2239775e7de9Smrg *:*.exe) 2240775e7de9Smrg func_stripname '' '.exe' "$destfile" 2241775e7de9Smrg destfile=$func_stripname_result 2242775e7de9Smrg ;; 2243775e7de9Smrg esac 22447a84e134Smrg ;; 22457a84e134Smrg esac 2246775e7de9Smrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 2247775e7de9Smrg $opt_dry_run || if test -n "$outputname"; then 2248775e7de9Smrg ${RM}r "$tmpdir" 2249775e7de9Smrg fi 2250775e7de9Smrg ;; 2251775e7de9Smrg esac 2252775e7de9Smrg done 22537a84e134Smrg 2254775e7de9Smrg for file in $staticlibs; do 2255775e7de9Smrg func_basename "$file" 2256775e7de9Smrg name="$func_basename_result" 2257775e7de9Smrg 2258775e7de9Smrg # Set up the ranlib parameters. 2259775e7de9Smrg oldlib="$destdir/$name" 2260775e7de9Smrg 2261775e7de9Smrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2262775e7de9Smrg 2263775e7de9Smrg if test -n "$stripme" && test -n "$old_striplib"; then 2264775e7de9Smrg func_show_eval "$old_striplib $oldlib" 'exit $?' 2265775e7de9Smrg fi 2266775e7de9Smrg 2267775e7de9Smrg # Do each command in the postinstall commands. 2268775e7de9Smrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 2269775e7de9Smrg done 2270775e7de9Smrg 2271775e7de9Smrg test -n "$future_libdirs" && \ 2272775e7de9Smrg func_warning "remember to run \`$progname --finish$future_libdirs'" 2273775e7de9Smrg 2274775e7de9Smrg if test -n "$current_libdirs"; then 2275775e7de9Smrg # Maybe just do a dry run. 2276775e7de9Smrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 2277775e7de9Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 2278775e7de9Smrg else 2279775e7de9Smrg exit $EXIT_SUCCESS 2280775e7de9Smrg fi 2281775e7de9Smrg} 2282775e7de9Smrg 2283775e7de9Smrgtest "$mode" = install && func_mode_install ${1+"$@"} 2284775e7de9Smrg 2285775e7de9Smrg 2286775e7de9Smrg# func_generate_dlsyms outputname originator pic_p 2287775e7de9Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with 2288775e7de9Smrg# a dlpreopen symbol table. 2289775e7de9Smrgfunc_generate_dlsyms () 2290775e7de9Smrg{ 2291775e7de9Smrg $opt_debug 2292775e7de9Smrg my_outputname="$1" 2293775e7de9Smrg my_originator="$2" 2294775e7de9Smrg my_pic_p="${3-no}" 2295775e7de9Smrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 2296775e7de9Smrg my_dlsyms= 2297775e7de9Smrg 2298775e7de9Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2299775e7de9Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 2300775e7de9Smrg my_dlsyms="${my_outputname}S.c" 2301775e7de9Smrg else 2302775e7de9Smrg func_error "not configured to extract global symbols from dlpreopened files" 2303775e7de9Smrg fi 2304775e7de9Smrg fi 2305775e7de9Smrg 2306775e7de9Smrg if test -n "$my_dlsyms"; then 2307775e7de9Smrg case $my_dlsyms in 2308775e7de9Smrg "") ;; 2309775e7de9Smrg *.c) 2310775e7de9Smrg # Discover the nlist of each of the dlfiles. 2311775e7de9Smrg nlist="$output_objdir/${my_outputname}.nm" 2312775e7de9Smrg 2313775e7de9Smrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 2314775e7de9Smrg 2315775e7de9Smrg # Parse the name list into a source file. 2316775e7de9Smrg func_verbose "creating $output_objdir/$my_dlsyms" 2317775e7de9Smrg 2318775e7de9Smrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 2319775e7de9Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 2320775e7de9Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 2321775e7de9Smrg 2322775e7de9Smrg#ifdef __cplusplus 2323775e7de9Smrgextern \"C\" { 2324775e7de9Smrg#endif 2325775e7de9Smrg 2326775e7de9Smrg/* External symbol declarations for the compiler. */\ 2327775e7de9Smrg" 2328775e7de9Smrg 2329775e7de9Smrg if test "$dlself" = yes; then 2330775e7de9Smrg func_verbose "generating symbol list for \`$output'" 2331775e7de9Smrg 2332775e7de9Smrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 2333775e7de9Smrg 2334775e7de9Smrg # Add our own program objects to the symbol list. 2335775e7de9Smrg progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2336775e7de9Smrg for progfile in $progfiles; do 2337775e7de9Smrg func_verbose "extracting global C symbols from \`$progfile'" 2338775e7de9Smrg $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 2339775e7de9Smrg done 2340775e7de9Smrg 2341775e7de9Smrg if test -n "$exclude_expsyms"; then 2342775e7de9Smrg $opt_dry_run || { 2343775e7de9Smrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2344775e7de9Smrg eval '$MV "$nlist"T "$nlist"' 2345775e7de9Smrg } 23467a84e134Smrg fi 2347775e7de9Smrg 2348775e7de9Smrg if test -n "$export_symbols_regex"; then 2349775e7de9Smrg $opt_dry_run || { 2350775e7de9Smrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2351775e7de9Smrg eval '$MV "$nlist"T "$nlist"' 2352775e7de9Smrg } 2353775e7de9Smrg fi 2354775e7de9Smrg 2355775e7de9Smrg # Prepare the list of exported symbols 2356775e7de9Smrg if test -z "$export_symbols"; then 2357775e7de9Smrg export_symbols="$output_objdir/$outputname.exp" 2358775e7de9Smrg $opt_dry_run || { 2359775e7de9Smrg $RM $export_symbols 2360775e7de9Smrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2361775e7de9Smrg case $host in 2362775e7de9Smrg *cygwin* | *mingw* | *cegcc* ) 2363775e7de9Smrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2364775e7de9Smrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 2365775e7de9Smrg ;; 2366775e7de9Smrg esac 2367775e7de9Smrg } 23687a84e134Smrg else 2369775e7de9Smrg $opt_dry_run || { 2370775e7de9Smrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 2371775e7de9Smrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 2372775e7de9Smrg eval '$MV "$nlist"T "$nlist"' 2373775e7de9Smrg case $host in 2374775e7de9Smrg *cygwin | *mingw* | *cegcc* ) 2375775e7de9Smrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2376775e7de9Smrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 2377775e7de9Smrg ;; 2378775e7de9Smrg esac 2379775e7de9Smrg } 23807a84e134Smrg fi 2381775e7de9Smrg fi 23827a84e134Smrg 2383775e7de9Smrg for dlprefile in $dlprefiles; do 2384775e7de9Smrg func_verbose "extracting global C symbols from \`$dlprefile'" 2385775e7de9Smrg func_basename "$dlprefile" 2386775e7de9Smrg name="$func_basename_result" 2387775e7de9Smrg $opt_dry_run || { 2388775e7de9Smrg eval '$ECHO ": $name " >> "$nlist"' 2389775e7de9Smrg eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 2390775e7de9Smrg } 2391775e7de9Smrg done 2392775e7de9Smrg 2393775e7de9Smrg $opt_dry_run || { 2394775e7de9Smrg # Make sure we have at least an empty file. 2395775e7de9Smrg test -f "$nlist" || : > "$nlist" 2396775e7de9Smrg 2397775e7de9Smrg if test -n "$exclude_expsyms"; then 2398775e7de9Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2399775e7de9Smrg $MV "$nlist"T "$nlist" 24007a84e134Smrg fi 2401775e7de9Smrg 2402775e7de9Smrg # Try sorting and uniquifying the output. 2403775e7de9Smrg if $GREP -v "^: " < "$nlist" | 2404775e7de9Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 2405775e7de9Smrg sort -k 3 2406775e7de9Smrg else 2407775e7de9Smrg sort +2 2408775e7de9Smrg fi | 2409775e7de9Smrg uniq > "$nlist"S; then 2410775e7de9Smrg : 24117a84e134Smrg else 2412775e7de9Smrg $GREP -v "^: " < "$nlist" > "$nlist"S 24137a84e134Smrg fi 24147a84e134Smrg 2415775e7de9Smrg if test -f "$nlist"S; then 2416775e7de9Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 24177a84e134Smrg else 2418775e7de9Smrg $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 24197a84e134Smrg fi 24207a84e134Smrg 2421775e7de9Smrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24227a84e134Smrg 2423775e7de9Smrg/* The mapping between symbol names and symbols. */ 2424775e7de9Smrgtypedef struct { 2425775e7de9Smrg const char *name; 2426775e7de9Smrg void *address; 2427775e7de9Smrg} lt_dlsymlist; 2428775e7de9Smrg" 2429775e7de9Smrg case $host in 2430775e7de9Smrg *cygwin* | *mingw* | *cegcc* ) 2431775e7de9Smrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 2432775e7de9Smrg/* DATA imports from DLLs on WIN32 con't be const, because 2433775e7de9Smrg runtime relocations are performed -- see ld's documentation 2434775e7de9Smrg on pseudo-relocs. */" 2435775e7de9Smrg lt_dlsym_const= ;; 2436775e7de9Smrg *osf5*) 2437775e7de9Smrg echo >> "$output_objdir/$my_dlsyms" "\ 2438775e7de9Smrg/* This system does not cope well with relocations in const data */" 2439775e7de9Smrg lt_dlsym_const= ;; 2440775e7de9Smrg *) 2441775e7de9Smrg lt_dlsym_const=const ;; 2442775e7de9Smrg esac 24437a84e134Smrg 2444775e7de9Smrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 2445775e7de9Smrgextern $lt_dlsym_const lt_dlsymlist 2446775e7de9Smrglt_${my_prefix}_LTX_preloaded_symbols[]; 2447775e7de9Smrg$lt_dlsym_const lt_dlsymlist 2448775e7de9Smrglt_${my_prefix}_LTX_preloaded_symbols[] = 2449775e7de9Smrg{\ 2450775e7de9Smrg { \"$my_originator\", (void *) 0 }," 24517a84e134Smrg 2452775e7de9Smrg case $need_lib_prefix in 2453775e7de9Smrg no) 2454775e7de9Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 2455775e7de9Smrg ;; 2456775e7de9Smrg *) 2457775e7de9Smrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 2458775e7de9Smrg ;; 2459775e7de9Smrg esac 2460775e7de9Smrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 2461775e7de9Smrg {0, (void *) 0} 2462775e7de9Smrg}; 24637a84e134Smrg 2464775e7de9Smrg/* This works around a problem in FreeBSD linker */ 2465775e7de9Smrg#ifdef FREEBSD_WORKAROUND 2466775e7de9Smrgstatic const void *lt_preloaded_setup() { 2467775e7de9Smrg return lt_${my_prefix}_LTX_preloaded_symbols; 2468775e7de9Smrg} 2469775e7de9Smrg#endif 2470775e7de9Smrg 2471775e7de9Smrg#ifdef __cplusplus 2472775e7de9Smrg} 2473775e7de9Smrg#endif\ 2474775e7de9Smrg" 2475775e7de9Smrg } # !$opt_dry_run 2476775e7de9Smrg 2477775e7de9Smrg pic_flag_for_symtable= 2478775e7de9Smrg case "$compile_command " in 2479775e7de9Smrg *" -static "*) ;; 2480775e7de9Smrg *) 2481775e7de9Smrg case $host in 2482775e7de9Smrg # compiling the symbol table file with pic_flag works around 2483775e7de9Smrg # a FreeBSD bug that causes programs to crash when -lm is 2484775e7de9Smrg # linked before any other PIC object. But we must not use 2485775e7de9Smrg # pic_flag when linking with -static. The problem exists in 2486775e7de9Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2487775e7de9Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2488775e7de9Smrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 2489775e7de9Smrg *-*-hpux*) 2490775e7de9Smrg pic_flag_for_symtable=" $pic_flag" ;; 2491775e7de9Smrg *) 2492775e7de9Smrg if test "X$my_pic_p" != Xno; then 2493775e7de9Smrg pic_flag_for_symtable=" $pic_flag" 24947a84e134Smrg fi 2495775e7de9Smrg ;; 2496775e7de9Smrg esac 2497775e7de9Smrg ;; 2498775e7de9Smrg esac 2499775e7de9Smrg symtab_cflags= 2500775e7de9Smrg for arg in $LTCFLAGS; do 2501775e7de9Smrg case $arg in 2502775e7de9Smrg -pie | -fpie | -fPIE) ;; 2503775e7de9Smrg *) symtab_cflags="$symtab_cflags $arg" ;; 2504775e7de9Smrg esac 2505775e7de9Smrg done 25067a84e134Smrg 2507775e7de9Smrg # Now compile the dynamic symbol file. 2508775e7de9Smrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 25097a84e134Smrg 2510775e7de9Smrg # Clean up the generated files. 2511775e7de9Smrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 25127a84e134Smrg 2513775e7de9Smrg # Transform the symbol file into the correct name. 2514775e7de9Smrg symfileobj="$output_objdir/${my_outputname}S.$objext" 2515775e7de9Smrg case $host in 2516775e7de9Smrg *cygwin* | *mingw* | *cegcc* ) 2517775e7de9Smrg if test -f "$output_objdir/$my_outputname.def"; then 2518775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2519775e7de9Smrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2520775e7de9Smrg else 2521775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2522775e7de9Smrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25237a84e134Smrg fi 2524775e7de9Smrg ;; 2525775e7de9Smrg *) 2526775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2527775e7de9Smrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2528775e7de9Smrg ;; 2529775e7de9Smrg esac 2530775e7de9Smrg ;; 2531775e7de9Smrg *) 2532775e7de9Smrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 2533775e7de9Smrg ;; 2534775e7de9Smrg esac 2535775e7de9Smrg else 2536775e7de9Smrg # We keep going just in case the user didn't refer to 2537775e7de9Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2538775e7de9Smrg # really was required. 25397a84e134Smrg 2540775e7de9Smrg # Nullify the symbol file. 2541775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2542775e7de9Smrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2543775e7de9Smrg fi 2544775e7de9Smrg} 25457a84e134Smrg 2546775e7de9Smrg# func_win32_libid arg 2547775e7de9Smrg# return the library type of file 'arg' 2548775e7de9Smrg# 2549775e7de9Smrg# Need a lot of goo to handle *both* DLLs and import libs 2550775e7de9Smrg# Has to be a shell function in order to 'eat' the argument 2551775e7de9Smrg# that is supplied when $file_magic_command is called. 2552775e7de9Smrgfunc_win32_libid () 2553775e7de9Smrg{ 2554775e7de9Smrg $opt_debug 2555775e7de9Smrg win32_libid_type="unknown" 2556775e7de9Smrg win32_fileres=`file -L $1 2>/dev/null` 2557775e7de9Smrg case $win32_fileres in 2558775e7de9Smrg *ar\ archive\ import\ library*) # definitely import 2559775e7de9Smrg win32_libid_type="x86 archive import" 2560775e7de9Smrg ;; 2561775e7de9Smrg *ar\ archive*) # could be an import, or static 2562775e7de9Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 2563775e7de9Smrg $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 2564775e7de9Smrg win32_nmres=`eval $NM -f posix -A $1 | 2565775e7de9Smrg $SED -n -e ' 2566775e7de9Smrg 1,100{ 2567775e7de9Smrg / I /{ 2568775e7de9Smrg s,.*,import, 2569775e7de9Smrg p 2570775e7de9Smrg q 2571775e7de9Smrg } 2572775e7de9Smrg }'` 2573775e7de9Smrg case $win32_nmres in 2574775e7de9Smrg import*) win32_libid_type="x86 archive import";; 2575775e7de9Smrg *) win32_libid_type="x86 archive static";; 2576775e7de9Smrg esac 2577775e7de9Smrg fi 2578775e7de9Smrg ;; 2579775e7de9Smrg *DLL*) 2580775e7de9Smrg win32_libid_type="x86 DLL" 2581775e7de9Smrg ;; 2582775e7de9Smrg *executable*) # but shell scripts are "executable" too... 2583775e7de9Smrg case $win32_fileres in 2584775e7de9Smrg *MS\ Windows\ PE\ Intel*) 2585775e7de9Smrg win32_libid_type="x86 DLL" 2586775e7de9Smrg ;; 2587775e7de9Smrg esac 2588775e7de9Smrg ;; 2589775e7de9Smrg esac 2590775e7de9Smrg $ECHO "$win32_libid_type" 2591775e7de9Smrg} 25927a84e134Smrg 25937a84e134Smrg 25947a84e134Smrg 2595775e7de9Smrg# func_extract_an_archive dir oldlib 2596775e7de9Smrgfunc_extract_an_archive () 2597775e7de9Smrg{ 2598775e7de9Smrg $opt_debug 2599775e7de9Smrg f_ex_an_ar_dir="$1"; shift 2600775e7de9Smrg f_ex_an_ar_oldlib="$1" 2601775e7de9Smrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 2602775e7de9Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2603775e7de9Smrg : 2604775e7de9Smrg else 2605775e7de9Smrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 2606775e7de9Smrg fi 2607775e7de9Smrg} 26087a84e134Smrg 26097a84e134Smrg 2610775e7de9Smrg# func_extract_archives gentop oldlib ... 2611775e7de9Smrgfunc_extract_archives () 2612775e7de9Smrg{ 2613775e7de9Smrg $opt_debug 2614775e7de9Smrg my_gentop="$1"; shift 2615775e7de9Smrg my_oldlibs=${1+"$@"} 2616775e7de9Smrg my_oldobjs="" 2617775e7de9Smrg my_xlib="" 2618775e7de9Smrg my_xabs="" 2619775e7de9Smrg my_xdir="" 26207a84e134Smrg 2621775e7de9Smrg for my_xlib in $my_oldlibs; do 2622775e7de9Smrg # Extract the objects. 2623775e7de9Smrg case $my_xlib in 2624775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 2625775e7de9Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 2626775e7de9Smrg esac 2627775e7de9Smrg func_basename "$my_xlib" 2628775e7de9Smrg my_xlib="$func_basename_result" 2629775e7de9Smrg my_xlib_u=$my_xlib 2630775e7de9Smrg while :; do 2631775e7de9Smrg case " $extracted_archives " in 2632775e7de9Smrg *" $my_xlib_u "*) 2633775e7de9Smrg func_arith $extracted_serial + 1 2634775e7de9Smrg extracted_serial=$func_arith_result 2635775e7de9Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 2636775e7de9Smrg *) break ;; 2637775e7de9Smrg esac 2638775e7de9Smrg done 2639775e7de9Smrg extracted_archives="$extracted_archives $my_xlib_u" 2640775e7de9Smrg my_xdir="$my_gentop/$my_xlib_u" 26417a84e134Smrg 2642775e7de9Smrg func_mkdir_p "$my_xdir" 26437a84e134Smrg 2644775e7de9Smrg case $host in 2645775e7de9Smrg *-darwin*) 2646775e7de9Smrg func_verbose "Extracting $my_xabs" 2647775e7de9Smrg # Do not bother doing anything if just a dry run 2648775e7de9Smrg $opt_dry_run || { 2649775e7de9Smrg darwin_orig_dir=`pwd` 2650775e7de9Smrg cd $my_xdir || exit $? 2651775e7de9Smrg darwin_archive=$my_xabs 2652775e7de9Smrg darwin_curdir=`pwd` 2653775e7de9Smrg darwin_base_archive=`basename "$darwin_archive"` 2654775e7de9Smrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 2655775e7de9Smrg if test -n "$darwin_arches"; then 2656775e7de9Smrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 2657775e7de9Smrg darwin_arch= 2658775e7de9Smrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 2659775e7de9Smrg for darwin_arch in $darwin_arches ; do 2660775e7de9Smrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2661775e7de9Smrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 2662775e7de9Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2663775e7de9Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 2664775e7de9Smrg cd "$darwin_curdir" 2665775e7de9Smrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 2666775e7de9Smrg done # $darwin_arches 2667775e7de9Smrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 2668775e7de9Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 2669775e7de9Smrg darwin_file= 2670775e7de9Smrg darwin_files= 2671775e7de9Smrg for darwin_file in $darwin_filelist; do 2672775e7de9Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 2673775e7de9Smrg $LIPO -create -output "$darwin_file" $darwin_files 2674775e7de9Smrg done # $darwin_filelist 2675775e7de9Smrg $RM -rf unfat-$$ 2676775e7de9Smrg cd "$darwin_orig_dir" 26777a84e134Smrg else 2678775e7de9Smrg cd $darwin_orig_dir 2679775e7de9Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 2680775e7de9Smrg fi # $darwin_arches 2681775e7de9Smrg } # !$opt_dry_run 2682775e7de9Smrg ;; 2683775e7de9Smrg *) 2684775e7de9Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 2685775e7de9Smrg ;; 2686775e7de9Smrg esac 2687775e7de9Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 2688775e7de9Smrg done 26897a84e134Smrg 2690775e7de9Smrg func_extract_archives_result="$my_oldobjs" 2691775e7de9Smrg} 26927a84e134Smrg 26937a84e134Smrg 26947a84e134Smrg 2695775e7de9Smrg# func_emit_wrapper_part1 [arg=no] 2696775e7de9Smrg# 2697775e7de9Smrg# Emit the first part of a libtool wrapper script on stdout. 2698775e7de9Smrg# For more information, see the description associated with 2699775e7de9Smrg# func_emit_wrapper(), below. 2700775e7de9Smrgfunc_emit_wrapper_part1 () 2701775e7de9Smrg{ 2702775e7de9Smrg func_emit_wrapper_part1_arg1=no 2703775e7de9Smrg if test -n "$1" ; then 2704775e7de9Smrg func_emit_wrapper_part1_arg1=$1 27057a84e134Smrg fi 27067a84e134Smrg 2707775e7de9Smrg $ECHO "\ 2708775e7de9Smrg#! $SHELL 27097a84e134Smrg 2710775e7de9Smrg# $output - temporary wrapper script for $objdir/$outputname 2711775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 2712775e7de9Smrg# 2713775e7de9Smrg# The $output program cannot be directly executed until all the libtool 2714775e7de9Smrg# libraries that it depends on are installed. 2715775e7de9Smrg# 2716775e7de9Smrg# This wrapper script should never be moved out of the build directory. 2717775e7de9Smrg# If it is, it will not operate correctly. 27187a84e134Smrg 2719775e7de9Smrg# Sed substitution that helps us do robust quoting. It backslashifies 2720775e7de9Smrg# metacharacters that are still active within double-quoted strings. 2721775e7de9SmrgXsed='${SED} -e 1s/^X//' 2722775e7de9Smrgsed_quote_subst='$sed_quote_subst' 27237a84e134Smrg 2724775e7de9Smrg# Be Bourne compatible 2725775e7de9Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 2726775e7de9Smrg emulate sh 2727775e7de9Smrg NULLCMD=: 2728775e7de9Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 2729775e7de9Smrg # is contrary to our usage. Disable this feature. 2730775e7de9Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 2731775e7de9Smrg setopt NO_GLOB_SUBST 2732775e7de9Smrgelse 2733775e7de9Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 2734775e7de9Smrgfi 2735775e7de9SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 2736775e7de9SmrgDUALCASE=1; export DUALCASE # for MKS sh 27377a84e134Smrg 2738775e7de9Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 2739775e7de9Smrg# if CDPATH is set. 2740775e7de9Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 27417a84e134Smrg 2742775e7de9Smrgrelink_command=\"$relink_command\" 27437a84e134Smrg 2744775e7de9Smrg# This environment variable determines our operation mode. 2745775e7de9Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 2746775e7de9Smrg # install mode needs the following variables: 2747775e7de9Smrg generated_by_libtool_version='$macro_version' 2748775e7de9Smrg notinst_deplibs='$notinst_deplibs' 2749775e7de9Smrgelse 2750775e7de9Smrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 2751775e7de9Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 2752775e7de9Smrg ECHO=\"$qecho\" 2753775e7de9Smrg file=\"\$0\" 2754775e7de9Smrg # Make sure echo works. 2755775e7de9Smrg if test \"X\$1\" = X--no-reexec; then 2756775e7de9Smrg # Discard the --no-reexec flag, and continue. 2757775e7de9Smrg shift 2758775e7de9Smrg elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 2759775e7de9Smrg # Yippee, \$ECHO works! 2760775e7de9Smrg : 2761775e7de9Smrg else 2762775e7de9Smrg # Restart under the correct shell, and then maybe \$ECHO will work. 2763775e7de9Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2764775e7de9Smrg fi 2765775e7de9Smrg fi\ 2766775e7de9Smrg" 2767775e7de9Smrg $ECHO "\ 27687a84e134Smrg 2769775e7de9Smrg # Find the directory that this script lives in. 2770775e7de9Smrg thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2771775e7de9Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 27727a84e134Smrg 2773775e7de9Smrg # Follow symbolic links until we get to the real thisdir. 2774775e7de9Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 2775775e7de9Smrg while test -n \"\$file\"; do 2776775e7de9Smrg destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 27777a84e134Smrg 2778775e7de9Smrg # If there was a directory component, then change thisdir. 2779775e7de9Smrg if test \"x\$destdir\" != \"x\$file\"; then 2780775e7de9Smrg case \"\$destdir\" in 2781775e7de9Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 2782775e7de9Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 27837a84e134Smrg esac 2784775e7de9Smrg fi 27857a84e134Smrg 2786775e7de9Smrg file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2787775e7de9Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 2788775e7de9Smrg done 2789775e7de9Smrg" 2790775e7de9Smrg} 2791775e7de9Smrg# end: func_emit_wrapper_part1 2792775e7de9Smrg 2793775e7de9Smrg# func_emit_wrapper_part2 [arg=no] 2794775e7de9Smrg# 2795775e7de9Smrg# Emit the second part of a libtool wrapper script on stdout. 2796775e7de9Smrg# For more information, see the description associated with 2797775e7de9Smrg# func_emit_wrapper(), below. 2798775e7de9Smrgfunc_emit_wrapper_part2 () 2799775e7de9Smrg{ 2800775e7de9Smrg func_emit_wrapper_part2_arg1=no 2801775e7de9Smrg if test -n "$1" ; then 2802775e7de9Smrg func_emit_wrapper_part2_arg1=$1 28037a84e134Smrg fi 28047a84e134Smrg 2805775e7de9Smrg $ECHO "\ 28067a84e134Smrg 2807775e7de9Smrg # Usually 'no', except on cygwin/mingw when embedded into 2808775e7de9Smrg # the cwrapper. 2809775e7de9Smrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 2810775e7de9Smrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 2811775e7de9Smrg # special case for '.' 2812775e7de9Smrg if test \"\$thisdir\" = \".\"; then 2813775e7de9Smrg thisdir=\`pwd\` 2814775e7de9Smrg fi 2815775e7de9Smrg # remove .libs from thisdir 2816775e7de9Smrg case \"\$thisdir\" in 2817775e7de9Smrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 2818775e7de9Smrg $objdir ) thisdir=. ;; 2819775e7de9Smrg esac 2820775e7de9Smrg fi 2821775e7de9Smrg 2822775e7de9Smrg # Try to get the absolute directory name. 2823775e7de9Smrg absdir=\`cd \"\$thisdir\" && pwd\` 2824775e7de9Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 2825775e7de9Smrg" 2826775e7de9Smrg 2827775e7de9Smrg if test "$fast_install" = yes; then 2828775e7de9Smrg $ECHO "\ 2829775e7de9Smrg program=lt-'$outputname'$exeext 2830775e7de9Smrg progdir=\"\$thisdir/$objdir\" 2831775e7de9Smrg 2832775e7de9Smrg if test ! -f \"\$progdir/\$program\" || 2833775e7de9Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 2834775e7de9Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2835775e7de9Smrg 2836775e7de9Smrg file=\"\$\$-\$program\" 2837775e7de9Smrg 2838775e7de9Smrg if test ! -d \"\$progdir\"; then 2839775e7de9Smrg $MKDIR \"\$progdir\" 2840775e7de9Smrg else 2841775e7de9Smrg $RM \"\$progdir/\$file\" 2842775e7de9Smrg fi" 2843775e7de9Smrg 2844775e7de9Smrg $ECHO "\ 2845775e7de9Smrg 2846775e7de9Smrg # relink executable if necessary 2847775e7de9Smrg if test -n \"\$relink_command\"; then 2848775e7de9Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 2849775e7de9Smrg else 2850775e7de9Smrg $ECHO \"\$relink_command_output\" >&2 2851775e7de9Smrg $RM \"\$progdir/\$file\" 2852775e7de9Smrg exit 1 28537a84e134Smrg fi 2854775e7de9Smrg fi 28557a84e134Smrg 2856775e7de9Smrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2857775e7de9Smrg { $RM \"\$progdir/\$program\"; 2858775e7de9Smrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2859775e7de9Smrg $RM \"\$progdir/\$file\" 2860775e7de9Smrg fi" 2861775e7de9Smrg else 2862775e7de9Smrg $ECHO "\ 2863775e7de9Smrg program='$outputname' 2864775e7de9Smrg progdir=\"\$thisdir/$objdir\" 2865775e7de9Smrg" 28667a84e134Smrg fi 28677a84e134Smrg 2868775e7de9Smrg $ECHO "\ 28697a84e134Smrg 2870775e7de9Smrg if test -f \"\$progdir/\$program\"; then" 28717a84e134Smrg 2872775e7de9Smrg # Export our shlibpath_var if we have one. 2873775e7de9Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2874775e7de9Smrg $ECHO "\ 2875775e7de9Smrg # Add our own library path to $shlibpath_var 2876775e7de9Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28777a84e134Smrg 2878775e7de9Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 2879775e7de9Smrg # The second colon is a workaround for a bug in BeOS R4 sed 2880775e7de9Smrg $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2881775e7de9Smrg 2882775e7de9Smrg export $shlibpath_var 2883775e7de9Smrg" 28847a84e134Smrg fi 28857a84e134Smrg 2886775e7de9Smrg # fixup the dll searchpath if we need to. 2887775e7de9Smrg if test -n "$dllsearchpath"; then 2888775e7de9Smrg $ECHO "\ 2889775e7de9Smrg # Add the dll search path components to the executable PATH 2890775e7de9Smrg PATH=$dllsearchpath:\$PATH 2891775e7de9Smrg" 2892775e7de9Smrg fi 28937a84e134Smrg 2894775e7de9Smrg $ECHO "\ 2895775e7de9Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 2896775e7de9Smrg # Run the actual program with our arguments. 2897775e7de9Smrg" 2898775e7de9Smrg case $host in 2899775e7de9Smrg # Backslashes separate directories on plain windows 2900775e7de9Smrg *-*-mingw | *-*-os2* | *-cegcc*) 2901775e7de9Smrg $ECHO "\ 2902775e7de9Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 2903775e7de9Smrg" 29047a84e134Smrg ;; 29057a84e134Smrg 29067a84e134Smrg *) 2907775e7de9Smrg $ECHO "\ 2908775e7de9Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 2909775e7de9Smrg" 29107a84e134Smrg ;; 29117a84e134Smrg esac 2912775e7de9Smrg $ECHO "\ 2913775e7de9Smrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 2914775e7de9Smrg exit 1 2915775e7de9Smrg fi 2916775e7de9Smrg else 2917775e7de9Smrg # The program doesn't exist. 2918775e7de9Smrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 2919775e7de9Smrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 2920775e7de9Smrg $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 2921775e7de9Smrg exit 1 2922775e7de9Smrg fi 2923775e7de9Smrgfi\ 2924775e7de9Smrg" 2925775e7de9Smrg} 2926775e7de9Smrg# end: func_emit_wrapper_part2 29277a84e134Smrg 29287a84e134Smrg 2929775e7de9Smrg# func_emit_wrapper [arg=no] 2930775e7de9Smrg# 2931775e7de9Smrg# Emit a libtool wrapper script on stdout. 2932775e7de9Smrg# Don't directly open a file because we may want to 2933775e7de9Smrg# incorporate the script contents within a cygwin/mingw 2934775e7de9Smrg# wrapper executable. Must ONLY be called from within 2935775e7de9Smrg# func_mode_link because it depends on a number of variables 2936775e7de9Smrg# set therein. 2937775e7de9Smrg# 2938775e7de9Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 2939775e7de9Smrg# variable will take. If 'yes', then the emitted script 2940775e7de9Smrg# will assume that the directory in which it is stored is 2941775e7de9Smrg# the $objdir directory. This is a cygwin/mingw-specific 2942775e7de9Smrg# behavior. 2943775e7de9Smrgfunc_emit_wrapper () 2944775e7de9Smrg{ 2945775e7de9Smrg func_emit_wrapper_arg1=no 2946775e7de9Smrg if test -n "$1" ; then 2947775e7de9Smrg func_emit_wrapper_arg1=$1 29487a84e134Smrg fi 29497a84e134Smrg 2950775e7de9Smrg # split this up so that func_emit_cwrapperexe_src 2951775e7de9Smrg # can call each part independently. 2952775e7de9Smrg func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 2953775e7de9Smrg func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 2954775e7de9Smrg} 29557a84e134Smrg 29567a84e134Smrg 2957775e7de9Smrg# func_to_host_path arg 2958775e7de9Smrg# 2959775e7de9Smrg# Convert paths to host format when used with build tools. 2960775e7de9Smrg# Intended for use with "native" mingw (where libtool itself 2961775e7de9Smrg# is running under the msys shell), or in the following cross- 2962775e7de9Smrg# build environments: 2963775e7de9Smrg# $build $host 2964775e7de9Smrg# mingw (msys) mingw [e.g. native] 2965775e7de9Smrg# cygwin mingw 2966775e7de9Smrg# *nix + wine mingw 2967775e7de9Smrg# where wine is equipped with the `winepath' executable. 2968775e7de9Smrg# In the native mingw case, the (msys) shell automatically 2969775e7de9Smrg# converts paths for any non-msys applications it launches, 2970775e7de9Smrg# but that facility isn't available from inside the cwrapper. 2971775e7de9Smrg# Similar accommodations are necessary for $host mingw and 2972775e7de9Smrg# $build cygwin. Calling this function does no harm for other 2973775e7de9Smrg# $host/$build combinations not listed above. 2974775e7de9Smrg# 2975775e7de9Smrg# ARG is the path (on $build) that should be converted to 2976775e7de9Smrg# the proper representation for $host. The result is stored 2977775e7de9Smrg# in $func_to_host_path_result. 2978775e7de9Smrgfunc_to_host_path () 2979775e7de9Smrg{ 2980775e7de9Smrg func_to_host_path_result="$1" 2981775e7de9Smrg if test -n "$1" ; then 2982775e7de9Smrg case $host in 2983775e7de9Smrg *mingw* ) 2984775e7de9Smrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 2985775e7de9Smrg case $build in 2986775e7de9Smrg *mingw* ) # actually, msys 2987775e7de9Smrg # awkward: cmd appends spaces to result 2988775e7de9Smrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 2989775e7de9Smrg func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 2990775e7de9Smrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 2991775e7de9Smrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 2992775e7de9Smrg $SED -e "$lt_sed_naive_backslashify"` 2993775e7de9Smrg ;; 2994775e7de9Smrg *cygwin* ) 2995775e7de9Smrg func_to_host_path_tmp1=`cygpath -w "$1"` 2996775e7de9Smrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 2997775e7de9Smrg $SED -e "$lt_sed_naive_backslashify"` 2998775e7de9Smrg ;; 2999775e7de9Smrg * ) 3000775e7de9Smrg # Unfortunately, winepath does not exit with a non-zero 3001775e7de9Smrg # error code, so we are forced to check the contents of 3002775e7de9Smrg # stdout. On the other hand, if the command is not 3003775e7de9Smrg # found, the shell will set an exit code of 127 and print 3004775e7de9Smrg # *an error message* to stdout. So we must check for both 3005775e7de9Smrg # error code of zero AND non-empty stdout, which explains 3006775e7de9Smrg # the odd construction: 3007775e7de9Smrg func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 3008775e7de9Smrg if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 3009775e7de9Smrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 3010775e7de9Smrg $SED -e "$lt_sed_naive_backslashify"` 3011775e7de9Smrg else 3012775e7de9Smrg # Allow warning below. 3013775e7de9Smrg func_to_host_path_result="" 3014775e7de9Smrg fi 3015775e7de9Smrg ;; 3016775e7de9Smrg esac 3017775e7de9Smrg if test -z "$func_to_host_path_result" ; then 3018775e7de9Smrg func_error "Could not determine host path corresponding to" 3019775e7de9Smrg func_error " '$1'" 3020775e7de9Smrg func_error "Continuing, but uninstalled executables may not work." 3021775e7de9Smrg # Fallback: 3022775e7de9Smrg func_to_host_path_result="$1" 3023775e7de9Smrg fi 3024775e7de9Smrg ;; 3025775e7de9Smrg esac 3026775e7de9Smrg fi 3027775e7de9Smrg} 3028775e7de9Smrg# end: func_to_host_path 30297a84e134Smrg 3030775e7de9Smrg# func_to_host_pathlist arg 3031775e7de9Smrg# 3032775e7de9Smrg# Convert pathlists to host format when used with build tools. 3033775e7de9Smrg# See func_to_host_path(), above. This function supports the 3034775e7de9Smrg# following $build/$host combinations (but does no harm for 3035775e7de9Smrg# combinations not listed here): 3036775e7de9Smrg# $build $host 3037775e7de9Smrg# mingw (msys) mingw [e.g. native] 3038775e7de9Smrg# cygwin mingw 3039775e7de9Smrg# *nix + wine mingw 3040775e7de9Smrg# 3041775e7de9Smrg# Path separators are also converted from $build format to 3042775e7de9Smrg# $host format. If ARG begins or ends with a path separator 3043775e7de9Smrg# character, it is preserved (but converted to $host format) 3044775e7de9Smrg# on output. 3045775e7de9Smrg# 3046775e7de9Smrg# ARG is a pathlist (on $build) that should be converted to 3047775e7de9Smrg# the proper representation on $host. The result is stored 3048775e7de9Smrg# in $func_to_host_pathlist_result. 3049775e7de9Smrgfunc_to_host_pathlist () 3050775e7de9Smrg{ 3051775e7de9Smrg func_to_host_pathlist_result="$1" 3052775e7de9Smrg if test -n "$1" ; then 3053775e7de9Smrg case $host in 3054775e7de9Smrg *mingw* ) 3055775e7de9Smrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3056775e7de9Smrg # Remove leading and trailing path separator characters from 3057775e7de9Smrg # ARG. msys behavior is inconsistent here, cygpath turns them 3058775e7de9Smrg # into '.;' and ';.', and winepath ignores them completely. 3059775e7de9Smrg func_to_host_pathlist_tmp2="$1" 3060775e7de9Smrg # Once set for this call, this variable should not be 3061775e7de9Smrg # reassigned. It is used in tha fallback case. 3062775e7de9Smrg func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 3063775e7de9Smrg $SED -e 's|^:*||' -e 's|:*$||'` 3064775e7de9Smrg case $build in 3065775e7de9Smrg *mingw* ) # Actually, msys. 3066775e7de9Smrg # Awkward: cmd appends spaces to result. 3067775e7de9Smrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 3068775e7de9Smrg func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 3069775e7de9Smrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 3070775e7de9Smrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 3071775e7de9Smrg $SED -e "$lt_sed_naive_backslashify"` 3072775e7de9Smrg ;; 3073775e7de9Smrg *cygwin* ) 3074775e7de9Smrg func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 3075775e7de9Smrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 3076775e7de9Smrg $SED -e "$lt_sed_naive_backslashify"` 3077775e7de9Smrg ;; 3078775e7de9Smrg * ) 3079775e7de9Smrg # unfortunately, winepath doesn't convert pathlists 3080775e7de9Smrg func_to_host_pathlist_result="" 3081775e7de9Smrg func_to_host_pathlist_oldIFS=$IFS 3082775e7de9Smrg IFS=: 3083775e7de9Smrg for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 3084775e7de9Smrg IFS=$func_to_host_pathlist_oldIFS 3085775e7de9Smrg if test -n "$func_to_host_pathlist_f" ; then 3086775e7de9Smrg func_to_host_path "$func_to_host_pathlist_f" 3087775e7de9Smrg if test -n "$func_to_host_path_result" ; then 3088775e7de9Smrg if test -z "$func_to_host_pathlist_result" ; then 3089775e7de9Smrg func_to_host_pathlist_result="$func_to_host_path_result" 3090775e7de9Smrg else 3091775e7de9Smrg func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 3092775e7de9Smrg fi 3093775e7de9Smrg fi 3094775e7de9Smrg fi 3095775e7de9Smrg IFS=: 3096775e7de9Smrg done 3097775e7de9Smrg IFS=$func_to_host_pathlist_oldIFS 3098775e7de9Smrg ;; 3099775e7de9Smrg esac 3100775e7de9Smrg if test -z "$func_to_host_pathlist_result" ; then 3101775e7de9Smrg func_error "Could not determine the host path(s) corresponding to" 3102775e7de9Smrg func_error " '$1'" 3103775e7de9Smrg func_error "Continuing, but uninstalled executables may not work." 3104775e7de9Smrg # Fallback. This may break if $1 contains DOS-style drive 3105775e7de9Smrg # specifications. The fix is not to complicate the expression 3106775e7de9Smrg # below, but for the user to provide a working wine installation 3107775e7de9Smrg # with winepath so that path translation in the cross-to-mingw 3108775e7de9Smrg # case works properly. 3109775e7de9Smrg lt_replace_pathsep_nix_to_dos="s|:|;|g" 3110775e7de9Smrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 3111775e7de9Smrg $SED -e "$lt_replace_pathsep_nix_to_dos"` 3112775e7de9Smrg fi 3113775e7de9Smrg # Now, add the leading and trailing path separators back 3114775e7de9Smrg case "$1" in 3115775e7de9Smrg :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 3116775e7de9Smrg ;; 3117775e7de9Smrg esac 3118775e7de9Smrg case "$1" in 3119775e7de9Smrg *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 3120775e7de9Smrg ;; 3121775e7de9Smrg esac 3122775e7de9Smrg ;; 3123775e7de9Smrg esac 3124775e7de9Smrg fi 3125775e7de9Smrg} 3126775e7de9Smrg# end: func_to_host_pathlist 31277a84e134Smrg 3128775e7de9Smrg# func_emit_cwrapperexe_src 3129775e7de9Smrg# emit the source code for a wrapper executable on stdout 3130775e7de9Smrg# Must ONLY be called from within func_mode_link because 3131775e7de9Smrg# it depends on a number of variable set therein. 3132775e7de9Smrgfunc_emit_cwrapperexe_src () 3133775e7de9Smrg{ 3134775e7de9Smrg cat <<EOF 31357a84e134Smrg 3136775e7de9Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 3137775e7de9Smrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31387a84e134Smrg 3139775e7de9Smrg The $output program cannot be directly executed until all the libtool 3140775e7de9Smrg libraries that it depends on are installed. 31417a84e134Smrg 3142775e7de9Smrg This wrapper executable should never be moved out of the build directory. 3143775e7de9Smrg If it is, it will not operate correctly. 31447a84e134Smrg 3145775e7de9Smrg Currently, it simply execs the wrapper *script* "$SHELL $output", 3146775e7de9Smrg but could eventually absorb all of the scripts functionality and 3147775e7de9Smrg exec $objdir/$outputname directly. 3148775e7de9Smrg*/ 3149775e7de9SmrgEOF 3150775e7de9Smrg cat <<"EOF" 3151775e7de9Smrg#include <stdio.h> 3152775e7de9Smrg#include <stdlib.h> 3153775e7de9Smrg#ifdef _MSC_VER 3154775e7de9Smrg# include <direct.h> 3155775e7de9Smrg# include <process.h> 3156775e7de9Smrg# include <io.h> 3157775e7de9Smrg# define setmode _setmode 3158775e7de9Smrg#else 3159775e7de9Smrg# include <unistd.h> 3160775e7de9Smrg# include <stdint.h> 3161775e7de9Smrg# ifdef __CYGWIN__ 3162775e7de9Smrg# include <io.h> 3163775e7de9Smrg# define HAVE_SETENV 3164775e7de9Smrg# ifdef __STRICT_ANSI__ 3165775e7de9Smrgchar *realpath (const char *, char *); 3166775e7de9Smrgint putenv (char *); 3167775e7de9Smrgint setenv (const char *, const char *, int); 3168775e7de9Smrg# endif 3169775e7de9Smrg# endif 3170775e7de9Smrg#endif 3171775e7de9Smrg#include <malloc.h> 3172775e7de9Smrg#include <stdarg.h> 3173775e7de9Smrg#include <assert.h> 3174775e7de9Smrg#include <string.h> 3175775e7de9Smrg#include <ctype.h> 3176775e7de9Smrg#include <errno.h> 3177775e7de9Smrg#include <fcntl.h> 3178775e7de9Smrg#include <sys/stat.h> 31797a84e134Smrg 3180775e7de9Smrg#if defined(PATH_MAX) 3181775e7de9Smrg# define LT_PATHMAX PATH_MAX 3182775e7de9Smrg#elif defined(MAXPATHLEN) 3183775e7de9Smrg# define LT_PATHMAX MAXPATHLEN 3184775e7de9Smrg#else 3185775e7de9Smrg# define LT_PATHMAX 1024 3186775e7de9Smrg#endif 31877a84e134Smrg 3188775e7de9Smrg#ifndef S_IXOTH 3189775e7de9Smrg# define S_IXOTH 0 3190775e7de9Smrg#endif 3191775e7de9Smrg#ifndef S_IXGRP 3192775e7de9Smrg# define S_IXGRP 0 3193775e7de9Smrg#endif 31947a84e134Smrg 3195775e7de9Smrg#ifdef _MSC_VER 3196775e7de9Smrg# define S_IXUSR _S_IEXEC 3197775e7de9Smrg# define stat _stat 3198775e7de9Smrg# ifndef _INTPTR_T_DEFINED 3199775e7de9Smrg# define intptr_t int 3200775e7de9Smrg# endif 3201775e7de9Smrg#endif 32027a84e134Smrg 3203775e7de9Smrg#ifndef DIR_SEPARATOR 3204775e7de9Smrg# define DIR_SEPARATOR '/' 3205775e7de9Smrg# define PATH_SEPARATOR ':' 3206775e7de9Smrg#endif 32077a84e134Smrg 3208775e7de9Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 3209775e7de9Smrg defined (__OS2__) 3210775e7de9Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 3211775e7de9Smrg# define FOPEN_WB "wb" 3212775e7de9Smrg# ifndef DIR_SEPARATOR_2 3213775e7de9Smrg# define DIR_SEPARATOR_2 '\\' 3214775e7de9Smrg# endif 3215775e7de9Smrg# ifndef PATH_SEPARATOR_2 3216775e7de9Smrg# define PATH_SEPARATOR_2 ';' 3217775e7de9Smrg# endif 3218775e7de9Smrg#endif 32197a84e134Smrg 3220775e7de9Smrg#ifndef DIR_SEPARATOR_2 3221775e7de9Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 3222775e7de9Smrg#else /* DIR_SEPARATOR_2 */ 3223775e7de9Smrg# define IS_DIR_SEPARATOR(ch) \ 3224775e7de9Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 3225775e7de9Smrg#endif /* DIR_SEPARATOR_2 */ 32267a84e134Smrg 3227775e7de9Smrg#ifndef PATH_SEPARATOR_2 3228775e7de9Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 3229775e7de9Smrg#else /* PATH_SEPARATOR_2 */ 3230775e7de9Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 3231775e7de9Smrg#endif /* PATH_SEPARATOR_2 */ 32327a84e134Smrg 3233775e7de9Smrg#ifdef __CYGWIN__ 3234775e7de9Smrg# define FOPEN_WB "wb" 3235775e7de9Smrg#endif 32367a84e134Smrg 3237775e7de9Smrg#ifndef FOPEN_WB 3238775e7de9Smrg# define FOPEN_WB "w" 3239775e7de9Smrg#endif 3240775e7de9Smrg#ifndef _O_BINARY 3241775e7de9Smrg# define _O_BINARY 0 3242775e7de9Smrg#endif 32437a84e134Smrg 3244775e7de9Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 3245775e7de9Smrg#define XFREE(stale) do { \ 3246775e7de9Smrg if (stale) { free ((void *) stale); stale = 0; } \ 3247775e7de9Smrg} while (0) 32487a84e134Smrg 3249775e7de9Smrg#undef LTWRAPPER_DEBUGPRINTF 3250775e7de9Smrg#if defined DEBUGWRAPPER 3251775e7de9Smrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 3252775e7de9Smrgstatic void 3253775e7de9Smrgltwrapper_debugprintf (const char *fmt, ...) 3254775e7de9Smrg{ 3255775e7de9Smrg va_list args; 3256775e7de9Smrg va_start (args, fmt); 3257775e7de9Smrg (void) vfprintf (stderr, fmt, args); 3258775e7de9Smrg va_end (args); 3259775e7de9Smrg} 3260775e7de9Smrg#else 3261775e7de9Smrg# define LTWRAPPER_DEBUGPRINTF(args) 3262775e7de9Smrg#endif 32637a84e134Smrg 3264775e7de9Smrgconst char *program_name = NULL; 32657a84e134Smrg 3266775e7de9Smrgvoid *xmalloc (size_t num); 3267775e7de9Smrgchar *xstrdup (const char *string); 3268775e7de9Smrgconst char *base_name (const char *name); 3269775e7de9Smrgchar *find_executable (const char *wrapper); 3270775e7de9Smrgchar *chase_symlinks (const char *pathspec); 3271775e7de9Smrgint make_executable (const char *path); 3272775e7de9Smrgint check_executable (const char *path); 3273775e7de9Smrgchar *strendzap (char *str, const char *pat); 3274775e7de9Smrgvoid lt_fatal (const char *message, ...); 3275775e7de9Smrgvoid lt_setenv (const char *name, const char *value); 3276775e7de9Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 3277775e7de9Smrgvoid lt_opt_process_env_set (const char *arg); 3278775e7de9Smrgvoid lt_opt_process_env_prepend (const char *arg); 3279775e7de9Smrgvoid lt_opt_process_env_append (const char *arg); 3280775e7de9Smrgint lt_split_name_value (const char *arg, char** name, char** value); 3281775e7de9Smrgvoid lt_update_exe_path (const char *name, const char *value); 3282775e7de9Smrgvoid lt_update_lib_path (const char *name, const char *value); 3283775e7de9Smrg 3284775e7de9Smrgstatic const char *script_text_part1 = 3285775e7de9SmrgEOF 32867a84e134Smrg 3287775e7de9Smrg func_emit_wrapper_part1 yes | 3288775e7de9Smrg $SED -e 's/\([\\"]\)/\\\1/g' \ 3289775e7de9Smrg -e 's/^/ "/' -e 's/$/\\n"/' 3290775e7de9Smrg echo ";" 3291775e7de9Smrg cat <<EOF 32927a84e134Smrg 3293775e7de9Smrgstatic const char *script_text_part2 = 3294775e7de9SmrgEOF 3295775e7de9Smrg func_emit_wrapper_part2 yes | 3296775e7de9Smrg $SED -e 's/\([\\"]\)/\\\1/g' \ 3297775e7de9Smrg -e 's/^/ "/' -e 's/$/\\n"/' 3298775e7de9Smrg echo ";" 3299775e7de9Smrg 3300775e7de9Smrg cat <<EOF 3301775e7de9Smrgconst char * MAGIC_EXE = "$magic_exe"; 3302775e7de9Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 3303775e7de9SmrgEOF 33047a84e134Smrg 3305775e7de9Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3306775e7de9Smrg func_to_host_pathlist "$temp_rpath" 3307775e7de9Smrg cat <<EOF 3308775e7de9Smrgconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 3309775e7de9SmrgEOF 3310775e7de9Smrg else 3311775e7de9Smrg cat <<"EOF" 3312775e7de9Smrgconst char * LIB_PATH_VALUE = ""; 3313775e7de9SmrgEOF 33147a84e134Smrg fi 33157a84e134Smrg 3316775e7de9Smrg if test -n "$dllsearchpath"; then 3317775e7de9Smrg func_to_host_pathlist "$dllsearchpath:" 3318775e7de9Smrg cat <<EOF 3319775e7de9Smrgconst char * EXE_PATH_VARNAME = "PATH"; 3320775e7de9Smrgconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33217a84e134SmrgEOF 33227a84e134Smrg else 3323775e7de9Smrg cat <<"EOF" 3324775e7de9Smrgconst char * EXE_PATH_VARNAME = ""; 3325775e7de9Smrgconst char * EXE_PATH_VALUE = ""; 3326775e7de9SmrgEOF 33277a84e134Smrg fi 3328775e7de9Smrg 3329775e7de9Smrg if test "$fast_install" = yes; then 3330775e7de9Smrg cat <<EOF 3331775e7de9Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 3332775e7de9SmrgEOF 33337a84e134Smrg else 3334775e7de9Smrg cat <<EOF 3335775e7de9Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 3336775e7de9SmrgEOF 33377a84e134Smrg fi 33387a84e134Smrg 33397a84e134Smrg 3340775e7de9Smrg cat <<"EOF" 33417a84e134Smrg 3342775e7de9Smrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 3343775e7de9Smrg#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33447a84e134Smrg 3345775e7de9Smrgstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 3346775e7de9Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33477a84e134Smrg 3348775e7de9Smrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33497a84e134Smrg 3350775e7de9Smrgstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 3351775e7de9Smrgstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 3352775e7de9Smrg /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33537a84e134Smrg 3354775e7de9Smrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 3355775e7de9Smrgstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 3356775e7de9Smrg /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33577a84e134Smrg 3358775e7de9Smrgstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 3359775e7de9Smrgstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 3360775e7de9Smrg /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33617a84e134Smrg 3362775e7de9Smrgint 3363775e7de9Smrgmain (int argc, char *argv[]) 3364775e7de9Smrg{ 3365775e7de9Smrg char **newargz; 3366775e7de9Smrg int newargc; 3367775e7de9Smrg char *tmp_pathspec; 3368775e7de9Smrg char *actual_cwrapper_path; 3369775e7de9Smrg char *actual_cwrapper_name; 3370775e7de9Smrg char *target_name; 3371775e7de9Smrg char *lt_argv_zero; 3372775e7de9Smrg intptr_t rval = 127; 33737a84e134Smrg 3374775e7de9Smrg int i; 33757a84e134Smrg 3376775e7de9Smrg program_name = (char *) xstrdup (base_name (argv[0])); 3377775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 3378775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33797a84e134Smrg 3380775e7de9Smrg /* very simple arg parsing; don't want to rely on getopt */ 3381775e7de9Smrg for (i = 1; i < argc; i++) 3382775e7de9Smrg { 3383775e7de9Smrg if (strcmp (argv[i], dumpscript_opt) == 0) 3384775e7de9Smrg { 3385775e7de9SmrgEOF 3386775e7de9Smrg case "$host" in 3387775e7de9Smrg *mingw* | *cygwin* ) 3388775e7de9Smrg # make stdout use "unix" line endings 3389775e7de9Smrg echo " setmode(1,_O_BINARY);" 3390775e7de9Smrg ;; 3391775e7de9Smrg esac 33927a84e134Smrg 3393775e7de9Smrg cat <<"EOF" 3394775e7de9Smrg printf ("%s", script_text_part1); 3395775e7de9Smrg printf ("%s", script_text_part2); 3396775e7de9Smrg return 0; 3397775e7de9Smrg } 3398775e7de9Smrg } 33997a84e134Smrg 3400775e7de9Smrg newargz = XMALLOC (char *, argc + 1); 3401775e7de9Smrg tmp_pathspec = find_executable (argv[0]); 3402775e7de9Smrg if (tmp_pathspec == NULL) 3403775e7de9Smrg lt_fatal ("Couldn't find %s", argv[0]); 3404775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 3405775e7de9Smrg tmp_pathspec)); 3406775e7de9Smrg 3407775e7de9Smrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 3408775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 3409775e7de9Smrg actual_cwrapper_path)); 3410775e7de9Smrg XFREE (tmp_pathspec); 3411775e7de9Smrg 3412775e7de9Smrg actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 3413775e7de9Smrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 3414775e7de9Smrg 3415775e7de9Smrg /* wrapper name transforms */ 3416775e7de9Smrg strendzap (actual_cwrapper_name, ".exe"); 3417775e7de9Smrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 3418775e7de9Smrg XFREE (actual_cwrapper_name); 3419775e7de9Smrg actual_cwrapper_name = tmp_pathspec; 3420775e7de9Smrg tmp_pathspec = 0; 3421775e7de9Smrg 3422775e7de9Smrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 3423775e7de9Smrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 3424775e7de9Smrg strendzap (target_name, ".exe"); 3425775e7de9Smrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 3426775e7de9Smrg XFREE (target_name); 3427775e7de9Smrg target_name = tmp_pathspec; 3428775e7de9Smrg tmp_pathspec = 0; 3429775e7de9Smrg 3430775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 3431775e7de9Smrg target_name)); 3432775e7de9SmrgEOF 34337a84e134Smrg 3434775e7de9Smrg cat <<EOF 3435775e7de9Smrg newargz[0] = 3436775e7de9Smrg XMALLOC (char, (strlen (actual_cwrapper_path) + 3437775e7de9Smrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 3438775e7de9Smrg strcpy (newargz[0], actual_cwrapper_path); 3439775e7de9Smrg strcat (newargz[0], "$objdir"); 3440775e7de9Smrg strcat (newargz[0], "/"); 3441775e7de9SmrgEOF 34427a84e134Smrg 3443775e7de9Smrg cat <<"EOF" 3444775e7de9Smrg /* stop here, and copy so we don't have to do this twice */ 3445775e7de9Smrg tmp_pathspec = xstrdup (newargz[0]); 34467a84e134Smrg 3447775e7de9Smrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 3448775e7de9Smrg strcat (newargz[0], actual_cwrapper_name); 34497a84e134Smrg 3450775e7de9Smrg /* DO want the lt- prefix here if it exists, so use target_name */ 3451775e7de9Smrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 3452775e7de9Smrg XFREE (tmp_pathspec); 3453775e7de9Smrg tmp_pathspec = NULL; 3454775e7de9SmrgEOF 34557a84e134Smrg 3456775e7de9Smrg case $host_os in 3457775e7de9Smrg mingw*) 3458775e7de9Smrg cat <<"EOF" 3459775e7de9Smrg { 3460775e7de9Smrg char* p; 3461775e7de9Smrg while ((p = strchr (newargz[0], '\\')) != NULL) 3462775e7de9Smrg { 3463775e7de9Smrg *p = '/'; 3464775e7de9Smrg } 3465775e7de9Smrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 3466775e7de9Smrg { 3467775e7de9Smrg *p = '/'; 3468775e7de9Smrg } 3469775e7de9Smrg } 3470775e7de9SmrgEOF 3471775e7de9Smrg ;; 3472775e7de9Smrg esac 34737a84e134Smrg 3474775e7de9Smrg cat <<"EOF" 3475775e7de9Smrg XFREE (target_name); 3476775e7de9Smrg XFREE (actual_cwrapper_path); 3477775e7de9Smrg XFREE (actual_cwrapper_name); 34787a84e134Smrg 3479775e7de9Smrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 3480775e7de9Smrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 3481775e7de9Smrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 3482775e7de9Smrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 34837a84e134Smrg 3484775e7de9Smrg newargc=0; 3485775e7de9Smrg for (i = 1; i < argc; i++) 3486775e7de9Smrg { 3487775e7de9Smrg if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 3488775e7de9Smrg { 3489775e7de9Smrg if (argv[i][env_set_opt_len] == '=') 3490775e7de9Smrg { 3491775e7de9Smrg const char *p = argv[i] + env_set_opt_len + 1; 3492775e7de9Smrg lt_opt_process_env_set (p); 3493775e7de9Smrg } 3494775e7de9Smrg else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 3495775e7de9Smrg { 3496775e7de9Smrg lt_opt_process_env_set (argv[++i]); /* don't copy */ 3497775e7de9Smrg } 3498775e7de9Smrg else 3499775e7de9Smrg lt_fatal ("%s missing required argument", env_set_opt); 3500775e7de9Smrg continue; 3501775e7de9Smrg } 3502775e7de9Smrg if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 3503775e7de9Smrg { 3504775e7de9Smrg if (argv[i][env_prepend_opt_len] == '=') 3505775e7de9Smrg { 3506775e7de9Smrg const char *p = argv[i] + env_prepend_opt_len + 1; 3507775e7de9Smrg lt_opt_process_env_prepend (p); 3508775e7de9Smrg } 3509775e7de9Smrg else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 3510775e7de9Smrg { 3511775e7de9Smrg lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 3512775e7de9Smrg } 3513775e7de9Smrg else 3514775e7de9Smrg lt_fatal ("%s missing required argument", env_prepend_opt); 3515775e7de9Smrg continue; 3516775e7de9Smrg } 3517775e7de9Smrg if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 3518775e7de9Smrg { 3519775e7de9Smrg if (argv[i][env_append_opt_len] == '=') 3520775e7de9Smrg { 3521775e7de9Smrg const char *p = argv[i] + env_append_opt_len + 1; 3522775e7de9Smrg lt_opt_process_env_append (p); 3523775e7de9Smrg } 3524775e7de9Smrg else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 3525775e7de9Smrg { 3526775e7de9Smrg lt_opt_process_env_append (argv[++i]); /* don't copy */ 3527775e7de9Smrg } 3528775e7de9Smrg else 3529775e7de9Smrg lt_fatal ("%s missing required argument", env_append_opt); 3530775e7de9Smrg continue; 3531775e7de9Smrg } 3532775e7de9Smrg if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 3533775e7de9Smrg { 3534775e7de9Smrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 3535775e7de9Smrg namespace, but it is not one of the ones we know about and 3536775e7de9Smrg have already dealt with, above (inluding dump-script), then 3537775e7de9Smrg report an error. Otherwise, targets might begin to believe 3538775e7de9Smrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 3539775e7de9Smrg namespace. The first time any user complains about this, we'll 3540775e7de9Smrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 3541775e7de9Smrg or a configure.ac-settable value. 3542775e7de9Smrg */ 3543775e7de9Smrg lt_fatal ("Unrecognized option in %s namespace: '%s'", 3544775e7de9Smrg ltwrapper_option_prefix, argv[i]); 3545775e7de9Smrg } 3546775e7de9Smrg /* otherwise ... */ 3547775e7de9Smrg newargz[++newargc] = xstrdup (argv[i]); 3548775e7de9Smrg } 3549775e7de9Smrg newargz[++newargc] = NULL; 35507a84e134Smrg 3551775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 3552775e7de9Smrg for (i = 0; i < newargc; i++) 3553775e7de9Smrg { 3554775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 3555775e7de9Smrg } 35567a84e134Smrg 3557775e7de9SmrgEOF 35587a84e134Smrg 3559775e7de9Smrg case $host_os in 3560775e7de9Smrg mingw*) 3561775e7de9Smrg cat <<"EOF" 3562775e7de9Smrg /* execv doesn't actually work on mingw as expected on unix */ 3563775e7de9Smrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 3564775e7de9Smrg if (rval == -1) 3565775e7de9Smrg { 3566775e7de9Smrg /* failed to start process */ 3567775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 3568775e7de9Smrg return 127; 3569775e7de9Smrg } 3570775e7de9Smrg return rval; 3571775e7de9SmrgEOF 3572775e7de9Smrg ;; 3573775e7de9Smrg *) 3574775e7de9Smrg cat <<"EOF" 3575775e7de9Smrg execv (lt_argv_zero, newargz); 3576775e7de9Smrg return rval; /* =127, but avoids unused variable warning */ 3577775e7de9SmrgEOF 3578775e7de9Smrg ;; 3579775e7de9Smrg esac 35807a84e134Smrg 3581775e7de9Smrg cat <<"EOF" 3582775e7de9Smrg} 35837a84e134Smrg 3584775e7de9Smrgvoid * 3585775e7de9Smrgxmalloc (size_t num) 3586775e7de9Smrg{ 3587775e7de9Smrg void *p = (void *) malloc (num); 3588775e7de9Smrg if (!p) 3589775e7de9Smrg lt_fatal ("Memory exhausted"); 35907a84e134Smrg 3591775e7de9Smrg return p; 3592775e7de9Smrg} 35937a84e134Smrg 3594775e7de9Smrgchar * 3595775e7de9Smrgxstrdup (const char *string) 3596775e7de9Smrg{ 3597775e7de9Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 3598775e7de9Smrg string) : NULL; 3599775e7de9Smrg} 36007a84e134Smrg 3601775e7de9Smrgconst char * 3602775e7de9Smrgbase_name (const char *name) 3603775e7de9Smrg{ 3604775e7de9Smrg const char *base; 36057a84e134Smrg 3606775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3607775e7de9Smrg /* Skip over the disk name in MSDOS pathnames. */ 3608775e7de9Smrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 3609775e7de9Smrg name += 2; 3610775e7de9Smrg#endif 36117a84e134Smrg 3612775e7de9Smrg for (base = name; *name; name++) 3613775e7de9Smrg if (IS_DIR_SEPARATOR (*name)) 3614775e7de9Smrg base = name + 1; 3615775e7de9Smrg return base; 3616775e7de9Smrg} 36177a84e134Smrg 3618775e7de9Smrgint 3619775e7de9Smrgcheck_executable (const char *path) 3620775e7de9Smrg{ 3621775e7de9Smrg struct stat st; 36227a84e134Smrg 3623775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 3624775e7de9Smrg path ? (*path ? path : "EMPTY!") : "NULL!")); 3625775e7de9Smrg if ((!path) || (!*path)) 3626775e7de9Smrg return 0; 36277a84e134Smrg 3628775e7de9Smrg if ((stat (path, &st) >= 0) 3629775e7de9Smrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 3630775e7de9Smrg return 1; 3631775e7de9Smrg else 3632775e7de9Smrg return 0; 3633775e7de9Smrg} 36347a84e134Smrg 3635775e7de9Smrgint 3636775e7de9Smrgmake_executable (const char *path) 3637775e7de9Smrg{ 3638775e7de9Smrg int rval = 0; 3639775e7de9Smrg struct stat st; 36407a84e134Smrg 3641775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 3642775e7de9Smrg path ? (*path ? path : "EMPTY!") : "NULL!")); 3643775e7de9Smrg if ((!path) || (!*path)) 3644775e7de9Smrg return 0; 36457a84e134Smrg 3646775e7de9Smrg if (stat (path, &st) >= 0) 3647775e7de9Smrg { 3648775e7de9Smrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 3649775e7de9Smrg } 3650775e7de9Smrg return rval; 3651775e7de9Smrg} 36527a84e134Smrg 3653775e7de9Smrg/* Searches for the full path of the wrapper. Returns 3654775e7de9Smrg newly allocated full path name if found, NULL otherwise 3655775e7de9Smrg Does not chase symlinks, even on platforms that support them. 3656775e7de9Smrg*/ 3657775e7de9Smrgchar * 3658775e7de9Smrgfind_executable (const char *wrapper) 3659775e7de9Smrg{ 3660775e7de9Smrg int has_slash = 0; 3661775e7de9Smrg const char *p; 3662775e7de9Smrg const char *p_next; 3663775e7de9Smrg /* static buffer for getcwd */ 3664775e7de9Smrg char tmp[LT_PATHMAX + 1]; 3665775e7de9Smrg int tmp_len; 3666775e7de9Smrg char *concat_name; 36677a84e134Smrg 3668775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 3669775e7de9Smrg wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 36707a84e134Smrg 3671775e7de9Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 3672775e7de9Smrg return NULL; 36737a84e134Smrg 3674775e7de9Smrg /* Absolute path? */ 3675775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3676775e7de9Smrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 3677775e7de9Smrg { 3678775e7de9Smrg concat_name = xstrdup (wrapper); 3679775e7de9Smrg if (check_executable (concat_name)) 3680775e7de9Smrg return concat_name; 3681775e7de9Smrg XFREE (concat_name); 3682775e7de9Smrg } 3683775e7de9Smrg else 3684775e7de9Smrg { 3685775e7de9Smrg#endif 3686775e7de9Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 3687775e7de9Smrg { 3688775e7de9Smrg concat_name = xstrdup (wrapper); 3689775e7de9Smrg if (check_executable (concat_name)) 3690775e7de9Smrg return concat_name; 3691775e7de9Smrg XFREE (concat_name); 3692775e7de9Smrg } 3693775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3694775e7de9Smrg } 3695775e7de9Smrg#endif 36967a84e134Smrg 3697775e7de9Smrg for (p = wrapper; *p; p++) 3698775e7de9Smrg if (*p == '/') 3699775e7de9Smrg { 3700775e7de9Smrg has_slash = 1; 3701775e7de9Smrg break; 3702775e7de9Smrg } 3703775e7de9Smrg if (!has_slash) 3704775e7de9Smrg { 3705775e7de9Smrg /* no slashes; search PATH */ 3706775e7de9Smrg const char *path = getenv ("PATH"); 3707775e7de9Smrg if (path != NULL) 3708775e7de9Smrg { 3709775e7de9Smrg for (p = path; *p; p = p_next) 3710775e7de9Smrg { 3711775e7de9Smrg const char *q; 3712775e7de9Smrg size_t p_len; 3713775e7de9Smrg for (q = p; *q; q++) 3714775e7de9Smrg if (IS_PATH_SEPARATOR (*q)) 3715775e7de9Smrg break; 3716775e7de9Smrg p_len = q - p; 3717775e7de9Smrg p_next = (*q == '\0' ? q : q + 1); 3718775e7de9Smrg if (p_len == 0) 3719775e7de9Smrg { 3720775e7de9Smrg /* empty path: current directory */ 3721775e7de9Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 3722775e7de9Smrg lt_fatal ("getcwd failed"); 3723775e7de9Smrg tmp_len = strlen (tmp); 3724775e7de9Smrg concat_name = 3725775e7de9Smrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3726775e7de9Smrg memcpy (concat_name, tmp, tmp_len); 3727775e7de9Smrg concat_name[tmp_len] = '/'; 3728775e7de9Smrg strcpy (concat_name + tmp_len + 1, wrapper); 3729775e7de9Smrg } 3730775e7de9Smrg else 3731775e7de9Smrg { 3732775e7de9Smrg concat_name = 3733775e7de9Smrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 3734775e7de9Smrg memcpy (concat_name, p, p_len); 3735775e7de9Smrg concat_name[p_len] = '/'; 3736775e7de9Smrg strcpy (concat_name + p_len + 1, wrapper); 3737775e7de9Smrg } 3738775e7de9Smrg if (check_executable (concat_name)) 3739775e7de9Smrg return concat_name; 3740775e7de9Smrg XFREE (concat_name); 3741775e7de9Smrg } 3742775e7de9Smrg } 3743775e7de9Smrg /* not found in PATH; assume curdir */ 3744775e7de9Smrg } 3745775e7de9Smrg /* Relative path | not found in path: prepend cwd */ 3746775e7de9Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 3747775e7de9Smrg lt_fatal ("getcwd failed"); 3748775e7de9Smrg tmp_len = strlen (tmp); 3749775e7de9Smrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3750775e7de9Smrg memcpy (concat_name, tmp, tmp_len); 3751775e7de9Smrg concat_name[tmp_len] = '/'; 3752775e7de9Smrg strcpy (concat_name + tmp_len + 1, wrapper); 37537a84e134Smrg 3754775e7de9Smrg if (check_executable (concat_name)) 3755775e7de9Smrg return concat_name; 3756775e7de9Smrg XFREE (concat_name); 3757775e7de9Smrg return NULL; 3758775e7de9Smrg} 37597a84e134Smrg 3760775e7de9Smrgchar * 3761775e7de9Smrgchase_symlinks (const char *pathspec) 3762775e7de9Smrg{ 3763775e7de9Smrg#ifndef S_ISLNK 3764775e7de9Smrg return xstrdup (pathspec); 3765775e7de9Smrg#else 3766775e7de9Smrg char buf[LT_PATHMAX]; 3767775e7de9Smrg struct stat s; 3768775e7de9Smrg char *tmp_pathspec = xstrdup (pathspec); 3769775e7de9Smrg char *p; 3770775e7de9Smrg int has_symlinks = 0; 3771775e7de9Smrg while (strlen (tmp_pathspec) && !has_symlinks) 3772775e7de9Smrg { 3773775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 3774775e7de9Smrg tmp_pathspec)); 3775775e7de9Smrg if (lstat (tmp_pathspec, &s) == 0) 3776775e7de9Smrg { 3777775e7de9Smrg if (S_ISLNK (s.st_mode) != 0) 3778775e7de9Smrg { 3779775e7de9Smrg has_symlinks = 1; 3780775e7de9Smrg break; 3781775e7de9Smrg } 37827a84e134Smrg 3783775e7de9Smrg /* search backwards for last DIR_SEPARATOR */ 3784775e7de9Smrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 3785775e7de9Smrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3786775e7de9Smrg p--; 3787775e7de9Smrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3788775e7de9Smrg { 3789775e7de9Smrg /* no more DIR_SEPARATORS left */ 3790775e7de9Smrg break; 3791775e7de9Smrg } 3792775e7de9Smrg *p = '\0'; 3793775e7de9Smrg } 3794775e7de9Smrg else 3795775e7de9Smrg { 3796775e7de9Smrg char *errstr = strerror (errno); 3797775e7de9Smrg lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 3798775e7de9Smrg } 3799775e7de9Smrg } 3800775e7de9Smrg XFREE (tmp_pathspec); 38017a84e134Smrg 3802775e7de9Smrg if (!has_symlinks) 3803775e7de9Smrg { 3804775e7de9Smrg return xstrdup (pathspec); 3805775e7de9Smrg } 38067a84e134Smrg 3807775e7de9Smrg tmp_pathspec = realpath (pathspec, buf); 3808775e7de9Smrg if (tmp_pathspec == 0) 3809775e7de9Smrg { 3810775e7de9Smrg lt_fatal ("Could not follow symlinks for %s", pathspec); 3811775e7de9Smrg } 3812775e7de9Smrg return xstrdup (tmp_pathspec); 3813775e7de9Smrg#endif 3814775e7de9Smrg} 38157a84e134Smrg 3816775e7de9Smrgchar * 3817775e7de9Smrgstrendzap (char *str, const char *pat) 3818775e7de9Smrg{ 3819775e7de9Smrg size_t len, patlen; 38207a84e134Smrg 3821775e7de9Smrg assert (str != NULL); 3822775e7de9Smrg assert (pat != NULL); 38237a84e134Smrg 3824775e7de9Smrg len = strlen (str); 3825775e7de9Smrg patlen = strlen (pat); 38267a84e134Smrg 3827775e7de9Smrg if (patlen <= len) 3828775e7de9Smrg { 3829775e7de9Smrg str += len - patlen; 3830775e7de9Smrg if (strcmp (str, pat) == 0) 3831775e7de9Smrg *str = '\0'; 3832775e7de9Smrg } 3833775e7de9Smrg return str; 3834775e7de9Smrg} 38357a84e134Smrg 3836775e7de9Smrgstatic void 3837775e7de9Smrglt_error_core (int exit_status, const char *mode, 3838775e7de9Smrg const char *message, va_list ap) 3839775e7de9Smrg{ 3840775e7de9Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 3841775e7de9Smrg vfprintf (stderr, message, ap); 3842775e7de9Smrg fprintf (stderr, ".\n"); 38437a84e134Smrg 3844775e7de9Smrg if (exit_status >= 0) 3845775e7de9Smrg exit (exit_status); 3846775e7de9Smrg} 38477a84e134Smrg 3848775e7de9Smrgvoid 3849775e7de9Smrglt_fatal (const char *message, ...) 3850775e7de9Smrg{ 3851775e7de9Smrg va_list ap; 3852775e7de9Smrg va_start (ap, message); 3853775e7de9Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 3854775e7de9Smrg va_end (ap); 3855775e7de9Smrg} 38567a84e134Smrg 3857775e7de9Smrgvoid 3858775e7de9Smrglt_setenv (const char *name, const char *value) 3859775e7de9Smrg{ 3860775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 3861775e7de9Smrg (name ? name : "<NULL>"), 3862775e7de9Smrg (value ? value : "<NULL>"))); 3863775e7de9Smrg { 3864775e7de9Smrg#ifdef HAVE_SETENV 3865775e7de9Smrg /* always make a copy, for consistency with !HAVE_SETENV */ 3866775e7de9Smrg char *str = xstrdup (value); 3867775e7de9Smrg setenv (name, str, 1); 3868775e7de9Smrg#else 3869775e7de9Smrg int len = strlen (name) + 1 + strlen (value) + 1; 3870775e7de9Smrg char *str = XMALLOC (char, len); 3871775e7de9Smrg sprintf (str, "%s=%s", name, value); 3872775e7de9Smrg if (putenv (str) != EXIT_SUCCESS) 3873775e7de9Smrg { 3874775e7de9Smrg XFREE (str); 3875775e7de9Smrg } 3876775e7de9Smrg#endif 3877775e7de9Smrg } 3878775e7de9Smrg} 38797a84e134Smrg 3880775e7de9Smrgchar * 3881775e7de9Smrglt_extend_str (const char *orig_value, const char *add, int to_end) 3882775e7de9Smrg{ 3883775e7de9Smrg char *new_value; 3884775e7de9Smrg if (orig_value && *orig_value) 3885775e7de9Smrg { 3886775e7de9Smrg int orig_value_len = strlen (orig_value); 3887775e7de9Smrg int add_len = strlen (add); 3888775e7de9Smrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 3889775e7de9Smrg if (to_end) 3890775e7de9Smrg { 3891775e7de9Smrg strcpy (new_value, orig_value); 3892775e7de9Smrg strcpy (new_value + orig_value_len, add); 3893775e7de9Smrg } 3894775e7de9Smrg else 3895775e7de9Smrg { 3896775e7de9Smrg strcpy (new_value, add); 3897775e7de9Smrg strcpy (new_value + add_len, orig_value); 3898775e7de9Smrg } 3899775e7de9Smrg } 3900775e7de9Smrg else 3901775e7de9Smrg { 3902775e7de9Smrg new_value = xstrdup (add); 3903775e7de9Smrg } 3904775e7de9Smrg return new_value; 3905775e7de9Smrg} 39067a84e134Smrg 3907775e7de9Smrgint 3908775e7de9Smrglt_split_name_value (const char *arg, char** name, char** value) 3909775e7de9Smrg{ 3910775e7de9Smrg const char *p; 3911775e7de9Smrg int len; 3912775e7de9Smrg if (!arg || !*arg) 3913775e7de9Smrg return 1; 39147a84e134Smrg 3915775e7de9Smrg p = strchr (arg, (int)'='); 39167a84e134Smrg 3917775e7de9Smrg if (!p) 3918775e7de9Smrg return 1; 39197a84e134Smrg 3920775e7de9Smrg *value = xstrdup (++p); 39217a84e134Smrg 3922775e7de9Smrg len = strlen (arg) - strlen (*value); 3923775e7de9Smrg *name = XMALLOC (char, len); 3924775e7de9Smrg strncpy (*name, arg, len-1); 3925775e7de9Smrg (*name)[len - 1] = '\0'; 39267a84e134Smrg 3927775e7de9Smrg return 0; 3928775e7de9Smrg} 39297a84e134Smrg 3930775e7de9Smrgvoid 3931775e7de9Smrglt_opt_process_env_set (const char *arg) 3932775e7de9Smrg{ 3933775e7de9Smrg char *name = NULL; 3934775e7de9Smrg char *value = NULL; 39357a84e134Smrg 3936775e7de9Smrg if (lt_split_name_value (arg, &name, &value) != 0) 3937775e7de9Smrg { 3938775e7de9Smrg XFREE (name); 3939775e7de9Smrg XFREE (value); 3940775e7de9Smrg lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 3941775e7de9Smrg } 39427a84e134Smrg 3943775e7de9Smrg lt_setenv (name, value); 3944775e7de9Smrg XFREE (name); 3945775e7de9Smrg XFREE (value); 3946775e7de9Smrg} 39477a84e134Smrg 3948775e7de9Smrgvoid 3949775e7de9Smrglt_opt_process_env_prepend (const char *arg) 3950775e7de9Smrg{ 3951775e7de9Smrg char *name = NULL; 3952775e7de9Smrg char *value = NULL; 3953775e7de9Smrg char *new_value = NULL; 39547a84e134Smrg 3955775e7de9Smrg if (lt_split_name_value (arg, &name, &value) != 0) 3956775e7de9Smrg { 3957775e7de9Smrg XFREE (name); 3958775e7de9Smrg XFREE (value); 3959775e7de9Smrg lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 3960775e7de9Smrg } 39617a84e134Smrg 3962775e7de9Smrg new_value = lt_extend_str (getenv (name), value, 0); 3963775e7de9Smrg lt_setenv (name, new_value); 3964775e7de9Smrg XFREE (new_value); 3965775e7de9Smrg XFREE (name); 3966775e7de9Smrg XFREE (value); 3967775e7de9Smrg} 39687a84e134Smrg 3969775e7de9Smrgvoid 3970775e7de9Smrglt_opt_process_env_append (const char *arg) 3971775e7de9Smrg{ 3972775e7de9Smrg char *name = NULL; 3973775e7de9Smrg char *value = NULL; 3974775e7de9Smrg char *new_value = NULL; 39757a84e134Smrg 3976775e7de9Smrg if (lt_split_name_value (arg, &name, &value) != 0) 3977775e7de9Smrg { 3978775e7de9Smrg XFREE (name); 3979775e7de9Smrg XFREE (value); 3980775e7de9Smrg lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 3981775e7de9Smrg } 39827a84e134Smrg 3983775e7de9Smrg new_value = lt_extend_str (getenv (name), value, 1); 3984775e7de9Smrg lt_setenv (name, new_value); 3985775e7de9Smrg XFREE (new_value); 3986775e7de9Smrg XFREE (name); 3987775e7de9Smrg XFREE (value); 3988775e7de9Smrg} 39897a84e134Smrg 3990775e7de9Smrgvoid 3991775e7de9Smrglt_update_exe_path (const char *name, const char *value) 3992775e7de9Smrg{ 3993775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 3994775e7de9Smrg (name ? name : "<NULL>"), 3995775e7de9Smrg (value ? value : "<NULL>"))); 39967a84e134Smrg 3997775e7de9Smrg if (name && *name && value && *value) 3998775e7de9Smrg { 3999775e7de9Smrg char *new_value = lt_extend_str (getenv (name), value, 0); 4000775e7de9Smrg /* some systems can't cope with a ':'-terminated path #' */ 4001775e7de9Smrg int len = strlen (new_value); 4002775e7de9Smrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4003775e7de9Smrg { 4004775e7de9Smrg new_value[len-1] = '\0'; 4005775e7de9Smrg } 4006775e7de9Smrg lt_setenv (name, new_value); 4007775e7de9Smrg XFREE (new_value); 4008775e7de9Smrg } 4009775e7de9Smrg} 40107a84e134Smrg 4011775e7de9Smrgvoid 4012775e7de9Smrglt_update_lib_path (const char *name, const char *value) 4013775e7de9Smrg{ 4014775e7de9Smrg LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4015775e7de9Smrg (name ? name : "<NULL>"), 4016775e7de9Smrg (value ? value : "<NULL>"))); 40177a84e134Smrg 4018775e7de9Smrg if (name && *name && value && *value) 4019775e7de9Smrg { 4020775e7de9Smrg char *new_value = lt_extend_str (getenv (name), value, 0); 4021775e7de9Smrg lt_setenv (name, new_value); 4022775e7de9Smrg XFREE (new_value); 4023775e7de9Smrg } 4024775e7de9Smrg} 40257a84e134Smrg 40267a84e134Smrg 4027775e7de9SmrgEOF 4028775e7de9Smrg} 4029775e7de9Smrg# end: func_emit_cwrapperexe_src 40307a84e134Smrg 4031775e7de9Smrg# func_mode_link arg... 4032775e7de9Smrgfunc_mode_link () 4033775e7de9Smrg{ 4034775e7de9Smrg $opt_debug 4035775e7de9Smrg case $host in 4036775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4037775e7de9Smrg # It is impossible to link a dll without this setting, and 4038775e7de9Smrg # we shouldn't force the makefile maintainer to figure out 4039775e7de9Smrg # which system we are compiling for in order to pass an extra 4040775e7de9Smrg # flag for every libtool invocation. 4041775e7de9Smrg # allow_undefined=no 40427a84e134Smrg 4043775e7de9Smrg # FIXME: Unfortunately, there are problems with the above when trying 4044775e7de9Smrg # to make a dll which has undefined symbols, in which case not 4045775e7de9Smrg # even a static library is built. For now, we need to specify 4046775e7de9Smrg # -no-undefined on the libtool link line when we can be certain 4047775e7de9Smrg # that all symbols are satisfied, otherwise we get a static library. 4048775e7de9Smrg allow_undefined=yes 4049775e7de9Smrg ;; 4050775e7de9Smrg *) 4051775e7de9Smrg allow_undefined=yes 4052775e7de9Smrg ;; 4053775e7de9Smrg esac 4054775e7de9Smrg libtool_args=$nonopt 4055775e7de9Smrg base_compile="$nonopt $@" 4056775e7de9Smrg compile_command=$nonopt 4057775e7de9Smrg finalize_command=$nonopt 40587a84e134Smrg 4059775e7de9Smrg compile_rpath= 4060775e7de9Smrg finalize_rpath= 4061775e7de9Smrg compile_shlibpath= 4062775e7de9Smrg finalize_shlibpath= 4063775e7de9Smrg convenience= 4064775e7de9Smrg old_convenience= 4065775e7de9Smrg deplibs= 4066775e7de9Smrg old_deplibs= 4067775e7de9Smrg compiler_flags= 4068775e7de9Smrg linker_flags= 4069775e7de9Smrg dllsearchpath= 4070775e7de9Smrg lib_search_path=`pwd` 4071775e7de9Smrg inst_prefix_dir= 4072775e7de9Smrg new_inherited_linker_flags= 40737a84e134Smrg 4074775e7de9Smrg avoid_version=no 4075775e7de9Smrg dlfiles= 4076775e7de9Smrg dlprefiles= 4077775e7de9Smrg dlself=no 4078775e7de9Smrg export_dynamic=no 4079775e7de9Smrg export_symbols= 4080775e7de9Smrg export_symbols_regex= 4081775e7de9Smrg generated= 4082775e7de9Smrg libobjs= 4083775e7de9Smrg ltlibs= 4084775e7de9Smrg module=no 4085775e7de9Smrg no_install=no 4086775e7de9Smrg objs= 4087775e7de9Smrg non_pic_objects= 4088775e7de9Smrg precious_files_regex= 4089775e7de9Smrg prefer_static_libs=no 4090775e7de9Smrg preload=no 4091775e7de9Smrg prev= 4092775e7de9Smrg prevarg= 4093775e7de9Smrg release= 4094775e7de9Smrg rpath= 4095775e7de9Smrg xrpath= 4096775e7de9Smrg perm_rpath= 4097775e7de9Smrg temp_rpath= 4098775e7de9Smrg thread_safe=no 4099775e7de9Smrg vinfo= 4100775e7de9Smrg vinfo_number=no 4101775e7de9Smrg weak_libs= 4102775e7de9Smrg single_module="${wl}-single_module" 4103775e7de9Smrg func_infer_tag $base_compile 41047a84e134Smrg 4105775e7de9Smrg # We need to know -static, to get the right output filenames. 4106775e7de9Smrg for arg 4107775e7de9Smrg do 4108775e7de9Smrg case $arg in 4109775e7de9Smrg -shared) 4110775e7de9Smrg test "$build_libtool_libs" != yes && \ 4111775e7de9Smrg func_fatal_configuration "can not build a shared library" 4112775e7de9Smrg build_old_libs=no 4113775e7de9Smrg break 4114775e7de9Smrg ;; 4115775e7de9Smrg -all-static | -static | -static-libtool-libs) 4116775e7de9Smrg case $arg in 4117775e7de9Smrg -all-static) 4118775e7de9Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 4119775e7de9Smrg func_warning "complete static linking is impossible in this configuration" 4120775e7de9Smrg fi 4121775e7de9Smrg if test -n "$link_static_flag"; then 4122775e7de9Smrg dlopen_self=$dlopen_self_static 4123775e7de9Smrg fi 4124775e7de9Smrg prefer_static_libs=yes 4125775e7de9Smrg ;; 4126775e7de9Smrg -static) 4127775e7de9Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 4128775e7de9Smrg dlopen_self=$dlopen_self_static 4129775e7de9Smrg fi 4130775e7de9Smrg prefer_static_libs=built 4131775e7de9Smrg ;; 4132775e7de9Smrg -static-libtool-libs) 4133775e7de9Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 4134775e7de9Smrg dlopen_self=$dlopen_self_static 4135775e7de9Smrg fi 4136775e7de9Smrg prefer_static_libs=yes 4137775e7de9Smrg ;; 4138775e7de9Smrg esac 4139775e7de9Smrg build_libtool_libs=no 4140775e7de9Smrg build_old_libs=yes 4141775e7de9Smrg break 4142775e7de9Smrg ;; 4143775e7de9Smrg esac 4144775e7de9Smrg done 41457a84e134Smrg 4146775e7de9Smrg # See if our shared archives depend on static archives. 4147775e7de9Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 41487a84e134Smrg 4149775e7de9Smrg # Go through the arguments, transforming them on the way. 4150775e7de9Smrg while test "$#" -gt 0; do 4151775e7de9Smrg arg="$1" 4152775e7de9Smrg shift 4153775e7de9Smrg func_quote_for_eval "$arg" 4154775e7de9Smrg qarg=$func_quote_for_eval_unquoted_result 4155775e7de9Smrg func_append libtool_args " $func_quote_for_eval_result" 41567a84e134Smrg 4157775e7de9Smrg # If the previous option needs an argument, assign it. 4158775e7de9Smrg if test -n "$prev"; then 4159775e7de9Smrg case $prev in 4160775e7de9Smrg output) 4161775e7de9Smrg func_append compile_command " @OUTPUT@" 4162775e7de9Smrg func_append finalize_command " @OUTPUT@" 4163775e7de9Smrg ;; 4164775e7de9Smrg esac 41657a84e134Smrg 4166775e7de9Smrg case $prev in 4167775e7de9Smrg dlfiles|dlprefiles) 4168775e7de9Smrg if test "$preload" = no; then 4169775e7de9Smrg # Add the symbol object into the linking commands. 4170775e7de9Smrg func_append compile_command " @SYMFILE@" 4171775e7de9Smrg func_append finalize_command " @SYMFILE@" 4172775e7de9Smrg preload=yes 41737a84e134Smrg fi 4174775e7de9Smrg case $arg in 4175775e7de9Smrg *.la | *.lo) ;; # We handle these cases below. 4176775e7de9Smrg force) 4177775e7de9Smrg if test "$dlself" = no; then 4178775e7de9Smrg dlself=needless 4179775e7de9Smrg export_dynamic=yes 4180775e7de9Smrg fi 4181775e7de9Smrg prev= 4182775e7de9Smrg continue 4183775e7de9Smrg ;; 4184775e7de9Smrg self) 4185775e7de9Smrg if test "$prev" = dlprefiles; then 4186775e7de9Smrg dlself=yes 4187775e7de9Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 4188775e7de9Smrg dlself=yes 4189775e7de9Smrg else 4190775e7de9Smrg dlself=needless 4191775e7de9Smrg export_dynamic=yes 4192775e7de9Smrg fi 4193775e7de9Smrg prev= 4194775e7de9Smrg continue 4195775e7de9Smrg ;; 4196775e7de9Smrg *) 4197775e7de9Smrg if test "$prev" = dlfiles; then 4198775e7de9Smrg dlfiles="$dlfiles $arg" 4199775e7de9Smrg else 4200775e7de9Smrg dlprefiles="$dlprefiles $arg" 4201775e7de9Smrg fi 4202775e7de9Smrg prev= 4203775e7de9Smrg continue 4204775e7de9Smrg ;; 4205775e7de9Smrg esac 4206775e7de9Smrg ;; 4207775e7de9Smrg expsyms) 4208775e7de9Smrg export_symbols="$arg" 4209775e7de9Smrg test -f "$arg" \ 4210775e7de9Smrg || func_fatal_error "symbol file \`$arg' does not exist" 4211775e7de9Smrg prev= 4212775e7de9Smrg continue 4213775e7de9Smrg ;; 4214775e7de9Smrg expsyms_regex) 4215775e7de9Smrg export_symbols_regex="$arg" 4216775e7de9Smrg prev= 4217775e7de9Smrg continue 4218775e7de9Smrg ;; 4219775e7de9Smrg framework) 42207a84e134Smrg case $host in 4221775e7de9Smrg *-*-darwin*) 4222775e7de9Smrg case "$deplibs " in 4223775e7de9Smrg *" $qarg.ltframework "*) ;; 4224775e7de9Smrg *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 4225775e7de9Smrg ;; 4226775e7de9Smrg esac 4227775e7de9Smrg ;; 42287a84e134Smrg esac 4229775e7de9Smrg prev= 4230775e7de9Smrg continue 42317a84e134Smrg ;; 4232775e7de9Smrg inst_prefix) 4233775e7de9Smrg inst_prefix_dir="$arg" 4234775e7de9Smrg prev= 4235775e7de9Smrg continue 42367a84e134Smrg ;; 4237775e7de9Smrg objectlist) 4238775e7de9Smrg if test -f "$arg"; then 4239775e7de9Smrg save_arg=$arg 4240775e7de9Smrg moreargs= 4241775e7de9Smrg for fil in `cat "$save_arg"` 4242775e7de9Smrg do 4243775e7de9Smrg# moreargs="$moreargs $fil" 4244775e7de9Smrg arg=$fil 4245775e7de9Smrg # A libtool-controlled object. 42467a84e134Smrg 4247775e7de9Smrg # Check to see that this really is a libtool object. 4248775e7de9Smrg if func_lalib_unsafe_p "$arg"; then 4249775e7de9Smrg pic_object= 4250775e7de9Smrg non_pic_object= 42517a84e134Smrg 4252775e7de9Smrg # Read the .lo file 4253775e7de9Smrg func_source "$arg" 42547a84e134Smrg 4255775e7de9Smrg if test -z "$pic_object" || 4256775e7de9Smrg test -z "$non_pic_object" || 4257775e7de9Smrg test "$pic_object" = none && 4258775e7de9Smrg test "$non_pic_object" = none; then 4259775e7de9Smrg func_fatal_error "cannot find name of object for \`$arg'" 4260775e7de9Smrg fi 42617a84e134Smrg 4262775e7de9Smrg # Extract subdirectory from the argument. 4263775e7de9Smrg func_dirname "$arg" "/" "" 4264775e7de9Smrg xdir="$func_dirname_result" 42657a84e134Smrg 4266775e7de9Smrg if test "$pic_object" != none; then 4267775e7de9Smrg # Prepend the subdirectory the object is found in. 4268775e7de9Smrg pic_object="$xdir$pic_object" 42697a84e134Smrg 4270775e7de9Smrg if test "$prev" = dlfiles; then 4271775e7de9Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4272775e7de9Smrg dlfiles="$dlfiles $pic_object" 4273775e7de9Smrg prev= 4274775e7de9Smrg continue 4275775e7de9Smrg else 4276775e7de9Smrg # If libtool objects are unsupported, then we need to preload. 4277775e7de9Smrg prev=dlprefiles 4278775e7de9Smrg fi 4279775e7de9Smrg fi 42807a84e134Smrg 4281775e7de9Smrg # CHECK ME: I think I busted this. -Ossama 4282775e7de9Smrg if test "$prev" = dlprefiles; then 4283775e7de9Smrg # Preload the old-style object. 4284775e7de9Smrg dlprefiles="$dlprefiles $pic_object" 4285775e7de9Smrg prev= 4286775e7de9Smrg fi 42877a84e134Smrg 4288775e7de9Smrg # A PIC object. 4289775e7de9Smrg func_append libobjs " $pic_object" 4290775e7de9Smrg arg="$pic_object" 4291775e7de9Smrg fi 42927a84e134Smrg 4293775e7de9Smrg # Non-PIC object. 4294775e7de9Smrg if test "$non_pic_object" != none; then 4295775e7de9Smrg # Prepend the subdirectory the object is found in. 4296775e7de9Smrg non_pic_object="$xdir$non_pic_object" 4297775e7de9Smrg 4298775e7de9Smrg # A standard non-PIC object 4299775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4300775e7de9Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 4301775e7de9Smrg arg="$non_pic_object" 4302775e7de9Smrg fi 4303775e7de9Smrg else 4304775e7de9Smrg # If the PIC object exists, use it instead. 4305775e7de9Smrg # $xdir was prepended to $pic_object above. 4306775e7de9Smrg non_pic_object="$pic_object" 4307775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4308775e7de9Smrg fi 4309775e7de9Smrg else 4310775e7de9Smrg # Only an error if not doing a dry-run. 4311775e7de9Smrg if $opt_dry_run; then 4312775e7de9Smrg # Extract subdirectory from the argument. 4313775e7de9Smrg func_dirname "$arg" "/" "" 4314775e7de9Smrg xdir="$func_dirname_result" 4315775e7de9Smrg 4316775e7de9Smrg func_lo2o "$arg" 4317775e7de9Smrg pic_object=$xdir$objdir/$func_lo2o_result 4318775e7de9Smrg non_pic_object=$xdir$func_lo2o_result 4319775e7de9Smrg func_append libobjs " $pic_object" 4320775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4321775e7de9Smrg else 4322775e7de9Smrg func_fatal_error "\`$arg' is not a valid libtool object" 4323775e7de9Smrg fi 4324775e7de9Smrg fi 4325775e7de9Smrg done 43267a84e134Smrg else 4327775e7de9Smrg func_fatal_error "link input file \`$arg' does not exist" 43287a84e134Smrg fi 4329775e7de9Smrg arg=$save_arg 4330775e7de9Smrg prev= 4331775e7de9Smrg continue 4332775e7de9Smrg ;; 4333775e7de9Smrg precious_regex) 4334775e7de9Smrg precious_files_regex="$arg" 4335775e7de9Smrg prev= 4336775e7de9Smrg continue 4337775e7de9Smrg ;; 4338775e7de9Smrg release) 4339775e7de9Smrg release="-$arg" 4340775e7de9Smrg prev= 4341775e7de9Smrg continue 4342775e7de9Smrg ;; 4343775e7de9Smrg rpath | xrpath) 4344775e7de9Smrg # We need an absolute path. 4345775e7de9Smrg case $arg in 4346775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 4347775e7de9Smrg *) 4348775e7de9Smrg func_fatal_error "only absolute run-paths are allowed" 4349775e7de9Smrg ;; 4350775e7de9Smrg esac 4351775e7de9Smrg if test "$prev" = rpath; then 4352775e7de9Smrg case "$rpath " in 4353775e7de9Smrg *" $arg "*) ;; 4354775e7de9Smrg *) rpath="$rpath $arg" ;; 4355775e7de9Smrg esac 43567a84e134Smrg else 4357775e7de9Smrg case "$xrpath " in 4358775e7de9Smrg *" $arg "*) ;; 4359775e7de9Smrg *) xrpath="$xrpath $arg" ;; 4360775e7de9Smrg esac 43617a84e134Smrg fi 4362775e7de9Smrg prev= 4363775e7de9Smrg continue 4364775e7de9Smrg ;; 4365775e7de9Smrg shrext) 4366775e7de9Smrg shrext_cmds="$arg" 4367775e7de9Smrg prev= 4368775e7de9Smrg continue 4369775e7de9Smrg ;; 4370775e7de9Smrg weak) 4371775e7de9Smrg weak_libs="$weak_libs $arg" 4372775e7de9Smrg prev= 4373775e7de9Smrg continue 4374775e7de9Smrg ;; 4375775e7de9Smrg xcclinker) 4376775e7de9Smrg linker_flags="$linker_flags $qarg" 4377775e7de9Smrg compiler_flags="$compiler_flags $qarg" 4378775e7de9Smrg prev= 4379775e7de9Smrg func_append compile_command " $qarg" 4380775e7de9Smrg func_append finalize_command " $qarg" 4381775e7de9Smrg continue 4382775e7de9Smrg ;; 4383775e7de9Smrg xcompiler) 4384775e7de9Smrg compiler_flags="$compiler_flags $qarg" 4385775e7de9Smrg prev= 4386775e7de9Smrg func_append compile_command " $qarg" 4387775e7de9Smrg func_append finalize_command " $qarg" 4388775e7de9Smrg continue 4389775e7de9Smrg ;; 4390775e7de9Smrg xlinker) 4391775e7de9Smrg linker_flags="$linker_flags $qarg" 4392775e7de9Smrg compiler_flags="$compiler_flags $wl$qarg" 4393775e7de9Smrg prev= 4394775e7de9Smrg func_append compile_command " $wl$qarg" 4395775e7de9Smrg func_append finalize_command " $wl$qarg" 4396775e7de9Smrg continue 4397775e7de9Smrg ;; 4398775e7de9Smrg *) 4399775e7de9Smrg eval "$prev=\"\$arg\"" 4400775e7de9Smrg prev= 4401775e7de9Smrg continue 4402775e7de9Smrg ;; 44037a84e134Smrg esac 4404775e7de9Smrg fi # test -n "$prev" 44057a84e134Smrg 4406775e7de9Smrg prevarg="$arg" 44077a84e134Smrg 4408775e7de9Smrg case $arg in 4409775e7de9Smrg -all-static) 4410775e7de9Smrg if test -n "$link_static_flag"; then 4411775e7de9Smrg # See comment for -static flag below, for more details. 4412775e7de9Smrg func_append compile_command " $link_static_flag" 4413775e7de9Smrg func_append finalize_command " $link_static_flag" 4414775e7de9Smrg fi 4415775e7de9Smrg continue 4416775e7de9Smrg ;; 44177a84e134Smrg 4418775e7de9Smrg -allow-undefined) 4419775e7de9Smrg # FIXME: remove this flag sometime in the future. 4420775e7de9Smrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 4421775e7de9Smrg ;; 44227a84e134Smrg 4423775e7de9Smrg -avoid-version) 4424775e7de9Smrg avoid_version=yes 4425775e7de9Smrg continue 4426775e7de9Smrg ;; 44277a84e134Smrg 4428775e7de9Smrg -dlopen) 4429775e7de9Smrg prev=dlfiles 4430775e7de9Smrg continue 4431775e7de9Smrg ;; 44327a84e134Smrg 4433775e7de9Smrg -dlpreopen) 4434775e7de9Smrg prev=dlprefiles 4435775e7de9Smrg continue 4436775e7de9Smrg ;; 44377a84e134Smrg 4438775e7de9Smrg -export-dynamic) 4439775e7de9Smrg export_dynamic=yes 4440775e7de9Smrg continue 4441775e7de9Smrg ;; 44427a84e134Smrg 4443775e7de9Smrg -export-symbols | -export-symbols-regex) 4444775e7de9Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 4445775e7de9Smrg func_fatal_error "more than one -exported-symbols argument is not allowed" 4446775e7de9Smrg fi 4447775e7de9Smrg if test "X$arg" = "X-export-symbols"; then 4448775e7de9Smrg prev=expsyms 4449775e7de9Smrg else 4450775e7de9Smrg prev=expsyms_regex 4451775e7de9Smrg fi 4452775e7de9Smrg continue 4453775e7de9Smrg ;; 44547a84e134Smrg 4455775e7de9Smrg -framework) 4456775e7de9Smrg prev=framework 4457775e7de9Smrg continue 4458775e7de9Smrg ;; 44597a84e134Smrg 4460775e7de9Smrg -inst-prefix-dir) 4461775e7de9Smrg prev=inst_prefix 4462775e7de9Smrg continue 4463775e7de9Smrg ;; 44647a84e134Smrg 4465775e7de9Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 4466775e7de9Smrg # so, if we see these flags be careful not to treat them like -L 4467775e7de9Smrg -L[A-Z][A-Z]*:*) 4468775e7de9Smrg case $with_gcc/$host in 4469775e7de9Smrg no/*-*-irix* | /*-*-irix*) 4470775e7de9Smrg func_append compile_command " $arg" 4471775e7de9Smrg func_append finalize_command " $arg" 4472775e7de9Smrg ;; 4473775e7de9Smrg esac 4474775e7de9Smrg continue 4475775e7de9Smrg ;; 44767a84e134Smrg 4477775e7de9Smrg -L*) 4478775e7de9Smrg func_stripname '-L' '' "$arg" 4479775e7de9Smrg dir=$func_stripname_result 4480775e7de9Smrg if test -z "$dir"; then 4481775e7de9Smrg if test "$#" -gt 0; then 4482775e7de9Smrg func_fatal_error "require no space between \`-L' and \`$1'" 4483775e7de9Smrg else 4484775e7de9Smrg func_fatal_error "need path for \`-L' option" 4485775e7de9Smrg fi 4486775e7de9Smrg fi 4487775e7de9Smrg # We need an absolute path. 4488775e7de9Smrg case $dir in 4489775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 4490775e7de9Smrg *) 4491775e7de9Smrg absdir=`cd "$dir" && pwd` 4492775e7de9Smrg test -z "$absdir" && \ 4493775e7de9Smrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 4494775e7de9Smrg dir="$absdir" 4495775e7de9Smrg ;; 4496775e7de9Smrg esac 4497775e7de9Smrg case "$deplibs " in 4498775e7de9Smrg *" -L$dir "*) ;; 4499775e7de9Smrg *) 4500775e7de9Smrg deplibs="$deplibs -L$dir" 4501775e7de9Smrg lib_search_path="$lib_search_path $dir" 4502775e7de9Smrg ;; 4503775e7de9Smrg esac 4504775e7de9Smrg case $host in 4505775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4506775e7de9Smrg testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 4507775e7de9Smrg case :$dllsearchpath: in 4508775e7de9Smrg *":$dir:"*) ;; 4509775e7de9Smrg ::) dllsearchpath=$dir;; 4510775e7de9Smrg *) dllsearchpath="$dllsearchpath:$dir";; 4511775e7de9Smrg esac 4512775e7de9Smrg case :$dllsearchpath: in 4513775e7de9Smrg *":$testbindir:"*) ;; 4514775e7de9Smrg ::) dllsearchpath=$testbindir;; 4515775e7de9Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4516775e7de9Smrg esac 4517775e7de9Smrg ;; 4518775e7de9Smrg esac 4519775e7de9Smrg continue 4520775e7de9Smrg ;; 45217a84e134Smrg 4522775e7de9Smrg -l*) 4523775e7de9Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 4524775e7de9Smrg case $host in 4525775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 4526775e7de9Smrg # These systems don't actually have a C or math library (as such) 4527775e7de9Smrg continue 4528775e7de9Smrg ;; 4529775e7de9Smrg *-*-os2*) 4530775e7de9Smrg # These systems don't actually have a C library (as such) 4531775e7de9Smrg test "X$arg" = "X-lc" && continue 4532775e7de9Smrg ;; 4533775e7de9Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4534775e7de9Smrg # Do not include libc due to us having libc/libc_r. 4535775e7de9Smrg test "X$arg" = "X-lc" && continue 4536775e7de9Smrg ;; 4537775e7de9Smrg *-*-rhapsody* | *-*-darwin1.[012]) 4538775e7de9Smrg # Rhapsody C and math libraries are in the System framework 4539775e7de9Smrg deplibs="$deplibs System.ltframework" 4540775e7de9Smrg continue 4541775e7de9Smrg ;; 4542775e7de9Smrg *-*-sco3.2v5* | *-*-sco5v6*) 4543775e7de9Smrg # Causes problems with __ctype 4544775e7de9Smrg test "X$arg" = "X-lc" && continue 4545775e7de9Smrg ;; 4546775e7de9Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 4547775e7de9Smrg # Compiler inserts libc in the correct place for threads to work 4548775e7de9Smrg test "X$arg" = "X-lc" && continue 4549775e7de9Smrg ;; 4550775e7de9Smrg esac 4551775e7de9Smrg elif test "X$arg" = "X-lc_r"; then 4552775e7de9Smrg case $host in 4553775e7de9Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4554775e7de9Smrg # Do not include libc_r directly, use -pthread flag. 4555775e7de9Smrg continue 4556775e7de9Smrg ;; 4557775e7de9Smrg esac 4558775e7de9Smrg fi 4559775e7de9Smrg deplibs="$deplibs $arg" 4560775e7de9Smrg continue 4561775e7de9Smrg ;; 45627a84e134Smrg 4563775e7de9Smrg -module) 4564775e7de9Smrg module=yes 4565775e7de9Smrg continue 4566775e7de9Smrg ;; 45677a84e134Smrg 4568775e7de9Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 4569775e7de9Smrg # classes, name mangling, and exception handling. 4570775e7de9Smrg # Darwin uses the -arch flag to determine output architecture. 4571775e7de9Smrg -model|-arch|-isysroot) 4572775e7de9Smrg compiler_flags="$compiler_flags $arg" 4573775e7de9Smrg func_append compile_command " $arg" 4574775e7de9Smrg func_append finalize_command " $arg" 4575775e7de9Smrg prev=xcompiler 4576775e7de9Smrg continue 4577775e7de9Smrg ;; 45787a84e134Smrg 4579775e7de9Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4580775e7de9Smrg compiler_flags="$compiler_flags $arg" 4581775e7de9Smrg func_append compile_command " $arg" 4582775e7de9Smrg func_append finalize_command " $arg" 4583775e7de9Smrg case "$new_inherited_linker_flags " in 4584775e7de9Smrg *" $arg "*) ;; 4585775e7de9Smrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 4586775e7de9Smrg esac 4587775e7de9Smrg continue 4588775e7de9Smrg ;; 45897a84e134Smrg 4590775e7de9Smrg -multi_module) 4591775e7de9Smrg single_module="${wl}-multi_module" 4592775e7de9Smrg continue 4593775e7de9Smrg ;; 45947a84e134Smrg 4595775e7de9Smrg -no-fast-install) 4596775e7de9Smrg fast_install=no 4597775e7de9Smrg continue 4598775e7de9Smrg ;; 45997a84e134Smrg 4600775e7de9Smrg -no-install) 4601775e7de9Smrg case $host in 4602775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 4603775e7de9Smrg # The PATH hackery in wrapper scripts is required on Windows 4604775e7de9Smrg # and Darwin in order for the loader to find any dlls it needs. 4605775e7de9Smrg func_warning "\`-no-install' is ignored for $host" 4606775e7de9Smrg func_warning "assuming \`-no-fast-install' instead" 4607775e7de9Smrg fast_install=no 4608775e7de9Smrg ;; 4609775e7de9Smrg *) no_install=yes ;; 4610775e7de9Smrg esac 4611775e7de9Smrg continue 4612775e7de9Smrg ;; 46137a84e134Smrg 4614775e7de9Smrg -no-undefined) 4615775e7de9Smrg allow_undefined=no 4616775e7de9Smrg continue 4617775e7de9Smrg ;; 46187a84e134Smrg 4619775e7de9Smrg -objectlist) 4620775e7de9Smrg prev=objectlist 4621775e7de9Smrg continue 4622775e7de9Smrg ;; 46237a84e134Smrg 4624775e7de9Smrg -o) prev=output ;; 46257a84e134Smrg 4626775e7de9Smrg -precious-files-regex) 4627775e7de9Smrg prev=precious_regex 4628775e7de9Smrg continue 4629775e7de9Smrg ;; 46307a84e134Smrg 4631775e7de9Smrg -release) 4632775e7de9Smrg prev=release 4633775e7de9Smrg continue 4634775e7de9Smrg ;; 46357a84e134Smrg 4636775e7de9Smrg -rpath) 4637775e7de9Smrg prev=rpath 4638775e7de9Smrg continue 4639775e7de9Smrg ;; 46407a84e134Smrg 4641775e7de9Smrg -R) 4642775e7de9Smrg prev=xrpath 4643775e7de9Smrg continue 4644775e7de9Smrg ;; 46457a84e134Smrg 4646775e7de9Smrg -R*) 4647775e7de9Smrg func_stripname '-R' '' "$arg" 4648775e7de9Smrg dir=$func_stripname_result 4649775e7de9Smrg # We need an absolute path. 4650775e7de9Smrg case $dir in 4651775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 4652775e7de9Smrg *) 4653775e7de9Smrg func_fatal_error "only absolute run-paths are allowed" 4654775e7de9Smrg ;; 4655775e7de9Smrg esac 4656775e7de9Smrg case "$xrpath " in 4657775e7de9Smrg *" $dir "*) ;; 4658775e7de9Smrg *) xrpath="$xrpath $dir" ;; 4659775e7de9Smrg esac 4660775e7de9Smrg continue 4661775e7de9Smrg ;; 46627a84e134Smrg 4663775e7de9Smrg -shared) 4664775e7de9Smrg # The effects of -shared are defined in a previous loop. 4665775e7de9Smrg continue 4666775e7de9Smrg ;; 46677a84e134Smrg 4668775e7de9Smrg -shrext) 4669775e7de9Smrg prev=shrext 4670775e7de9Smrg continue 4671775e7de9Smrg ;; 46727a84e134Smrg 4673775e7de9Smrg -static | -static-libtool-libs) 4674775e7de9Smrg # The effects of -static are defined in a previous loop. 4675775e7de9Smrg # We used to do the same as -all-static on platforms that 4676775e7de9Smrg # didn't have a PIC flag, but the assumption that the effects 4677775e7de9Smrg # would be equivalent was wrong. It would break on at least 4678775e7de9Smrg # Digital Unix and AIX. 4679775e7de9Smrg continue 4680775e7de9Smrg ;; 46817a84e134Smrg 4682775e7de9Smrg -thread-safe) 4683775e7de9Smrg thread_safe=yes 4684775e7de9Smrg continue 4685775e7de9Smrg ;; 46867a84e134Smrg 4687775e7de9Smrg -version-info) 4688775e7de9Smrg prev=vinfo 4689775e7de9Smrg continue 4690775e7de9Smrg ;; 46917a84e134Smrg 4692775e7de9Smrg -version-number) 4693775e7de9Smrg prev=vinfo 4694775e7de9Smrg vinfo_number=yes 4695775e7de9Smrg continue 4696775e7de9Smrg ;; 46977a84e134Smrg 4698775e7de9Smrg -weak) 4699775e7de9Smrg prev=weak 4700775e7de9Smrg continue 4701775e7de9Smrg ;; 47027a84e134Smrg 4703775e7de9Smrg -Wc,*) 4704775e7de9Smrg func_stripname '-Wc,' '' "$arg" 4705775e7de9Smrg args=$func_stripname_result 4706775e7de9Smrg arg= 4707775e7de9Smrg save_ifs="$IFS"; IFS=',' 4708775e7de9Smrg for flag in $args; do 4709775e7de9Smrg IFS="$save_ifs" 4710775e7de9Smrg func_quote_for_eval "$flag" 4711775e7de9Smrg arg="$arg $wl$func_quote_for_eval_result" 4712775e7de9Smrg compiler_flags="$compiler_flags $func_quote_for_eval_result" 4713775e7de9Smrg done 4714775e7de9Smrg IFS="$save_ifs" 4715775e7de9Smrg func_stripname ' ' '' "$arg" 4716775e7de9Smrg arg=$func_stripname_result 4717775e7de9Smrg ;; 47187a84e134Smrg 4719775e7de9Smrg -Wl,*) 4720775e7de9Smrg func_stripname '-Wl,' '' "$arg" 4721775e7de9Smrg args=$func_stripname_result 4722775e7de9Smrg arg= 4723775e7de9Smrg save_ifs="$IFS"; IFS=',' 4724775e7de9Smrg for flag in $args; do 4725775e7de9Smrg IFS="$save_ifs" 4726775e7de9Smrg func_quote_for_eval "$flag" 4727775e7de9Smrg arg="$arg $wl$func_quote_for_eval_result" 4728775e7de9Smrg compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 4729775e7de9Smrg linker_flags="$linker_flags $func_quote_for_eval_result" 4730775e7de9Smrg done 4731775e7de9Smrg IFS="$save_ifs" 4732775e7de9Smrg func_stripname ' ' '' "$arg" 4733775e7de9Smrg arg=$func_stripname_result 4734775e7de9Smrg ;; 47357a84e134Smrg 4736775e7de9Smrg -Xcompiler) 4737775e7de9Smrg prev=xcompiler 4738775e7de9Smrg continue 4739775e7de9Smrg ;; 47407a84e134Smrg 4741775e7de9Smrg -Xlinker) 4742775e7de9Smrg prev=xlinker 4743775e7de9Smrg continue 4744775e7de9Smrg ;; 47457a84e134Smrg 4746775e7de9Smrg -XCClinker) 4747775e7de9Smrg prev=xcclinker 4748775e7de9Smrg continue 4749775e7de9Smrg ;; 47507a84e134Smrg 4751775e7de9Smrg # -msg_* for osf cc 4752775e7de9Smrg -msg_*) 4753775e7de9Smrg func_quote_for_eval "$arg" 4754775e7de9Smrg arg="$func_quote_for_eval_result" 4755775e7de9Smrg ;; 47567a84e134Smrg 4757775e7de9Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 4758775e7de9Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 4759775e7de9Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 4760775e7de9Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 4761775e7de9Smrg # -q* pass through compiler args for the IBM compiler 4762775e7de9Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 4763775e7de9Smrg # compiler args for GCC 4764775e7de9Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 4765775e7de9Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 4766775e7de9Smrg # @file GCC response files 4767775e7de9Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 4768775e7de9Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 4769775e7de9Smrg func_quote_for_eval "$arg" 4770775e7de9Smrg arg="$func_quote_for_eval_result" 4771775e7de9Smrg func_append compile_command " $arg" 4772775e7de9Smrg func_append finalize_command " $arg" 4773775e7de9Smrg compiler_flags="$compiler_flags $arg" 4774775e7de9Smrg continue 4775775e7de9Smrg ;; 47767a84e134Smrg 4777775e7de9Smrg # Some other compiler flag. 4778775e7de9Smrg -* | +*) 4779775e7de9Smrg func_quote_for_eval "$arg" 4780775e7de9Smrg arg="$func_quote_for_eval_result" 4781775e7de9Smrg ;; 47827a84e134Smrg 4783775e7de9Smrg *.$objext) 4784775e7de9Smrg # A standard object. 4785775e7de9Smrg objs="$objs $arg" 4786775e7de9Smrg ;; 47877a84e134Smrg 4788775e7de9Smrg *.lo) 4789775e7de9Smrg # A libtool-controlled object. 47907a84e134Smrg 4791775e7de9Smrg # Check to see that this really is a libtool object. 4792775e7de9Smrg if func_lalib_unsafe_p "$arg"; then 4793775e7de9Smrg pic_object= 4794775e7de9Smrg non_pic_object= 47957a84e134Smrg 4796775e7de9Smrg # Read the .lo file 4797775e7de9Smrg func_source "$arg" 47987a84e134Smrg 4799775e7de9Smrg if test -z "$pic_object" || 4800775e7de9Smrg test -z "$non_pic_object" || 4801775e7de9Smrg test "$pic_object" = none && 4802775e7de9Smrg test "$non_pic_object" = none; then 4803775e7de9Smrg func_fatal_error "cannot find name of object for \`$arg'" 4804775e7de9Smrg fi 4805ab902922Smrg 4806775e7de9Smrg # Extract subdirectory from the argument. 4807775e7de9Smrg func_dirname "$arg" "/" "" 4808775e7de9Smrg xdir="$func_dirname_result" 48097a84e134Smrg 4810775e7de9Smrg if test "$pic_object" != none; then 4811775e7de9Smrg # Prepend the subdirectory the object is found in. 4812775e7de9Smrg pic_object="$xdir$pic_object" 48137a84e134Smrg 4814775e7de9Smrg if test "$prev" = dlfiles; then 4815775e7de9Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4816775e7de9Smrg dlfiles="$dlfiles $pic_object" 4817775e7de9Smrg prev= 4818775e7de9Smrg continue 4819775e7de9Smrg else 4820775e7de9Smrg # If libtool objects are unsupported, then we need to preload. 4821775e7de9Smrg prev=dlprefiles 4822775e7de9Smrg fi 4823775e7de9Smrg fi 48247a84e134Smrg 4825775e7de9Smrg # CHECK ME: I think I busted this. -Ossama 4826775e7de9Smrg if test "$prev" = dlprefiles; then 4827775e7de9Smrg # Preload the old-style object. 4828775e7de9Smrg dlprefiles="$dlprefiles $pic_object" 4829775e7de9Smrg prev= 4830775e7de9Smrg fi 48317a84e134Smrg 4832775e7de9Smrg # A PIC object. 4833775e7de9Smrg func_append libobjs " $pic_object" 4834775e7de9Smrg arg="$pic_object" 4835775e7de9Smrg fi 48367a84e134Smrg 4837775e7de9Smrg # Non-PIC object. 4838775e7de9Smrg if test "$non_pic_object" != none; then 4839775e7de9Smrg # Prepend the subdirectory the object is found in. 4840775e7de9Smrg non_pic_object="$xdir$non_pic_object" 48417a84e134Smrg 4842775e7de9Smrg # A standard non-PIC object 4843775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4844775e7de9Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 4845775e7de9Smrg arg="$non_pic_object" 4846775e7de9Smrg fi 4847775e7de9Smrg else 4848775e7de9Smrg # If the PIC object exists, use it instead. 4849775e7de9Smrg # $xdir was prepended to $pic_object above. 4850775e7de9Smrg non_pic_object="$pic_object" 4851775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4852775e7de9Smrg fi 4853775e7de9Smrg else 4854775e7de9Smrg # Only an error if not doing a dry-run. 4855775e7de9Smrg if $opt_dry_run; then 4856775e7de9Smrg # Extract subdirectory from the argument. 4857775e7de9Smrg func_dirname "$arg" "/" "" 4858775e7de9Smrg xdir="$func_dirname_result" 4859775e7de9Smrg 4860775e7de9Smrg func_lo2o "$arg" 4861775e7de9Smrg pic_object=$xdir$objdir/$func_lo2o_result 4862775e7de9Smrg non_pic_object=$xdir$func_lo2o_result 4863775e7de9Smrg func_append libobjs " $pic_object" 4864775e7de9Smrg func_append non_pic_objects " $non_pic_object" 4865775e7de9Smrg else 4866775e7de9Smrg func_fatal_error "\`$arg' is not a valid libtool object" 4867775e7de9Smrg fi 4868775e7de9Smrg fi 4869775e7de9Smrg ;; 4870775e7de9Smrg 4871775e7de9Smrg *.$libext) 4872775e7de9Smrg # An archive. 4873775e7de9Smrg deplibs="$deplibs $arg" 4874775e7de9Smrg old_deplibs="$old_deplibs $arg" 4875775e7de9Smrg continue 4876775e7de9Smrg ;; 4877775e7de9Smrg 4878775e7de9Smrg *.la) 4879775e7de9Smrg # A libtool-controlled library. 4880775e7de9Smrg 4881775e7de9Smrg if test "$prev" = dlfiles; then 4882775e7de9Smrg # This library was specified with -dlopen. 4883775e7de9Smrg dlfiles="$dlfiles $arg" 4884775e7de9Smrg prev= 4885775e7de9Smrg elif test "$prev" = dlprefiles; then 4886775e7de9Smrg # The library was specified with -dlpreopen. 4887775e7de9Smrg dlprefiles="$dlprefiles $arg" 4888775e7de9Smrg prev= 4889775e7de9Smrg else 4890775e7de9Smrg deplibs="$deplibs $arg" 4891775e7de9Smrg fi 4892775e7de9Smrg continue 4893775e7de9Smrg ;; 4894775e7de9Smrg 4895775e7de9Smrg # Some other compiler argument. 4896775e7de9Smrg *) 4897775e7de9Smrg # Unknown arguments in both finalize_command and compile_command need 4898775e7de9Smrg # to be aesthetically quoted because they are evaled later. 4899775e7de9Smrg func_quote_for_eval "$arg" 4900775e7de9Smrg arg="$func_quote_for_eval_result" 4901775e7de9Smrg ;; 4902775e7de9Smrg esac # arg 4903775e7de9Smrg 4904775e7de9Smrg # Now actually substitute the argument into the commands. 4905775e7de9Smrg if test -n "$arg"; then 4906775e7de9Smrg func_append compile_command " $arg" 4907775e7de9Smrg func_append finalize_command " $arg" 4908775e7de9Smrg fi 4909775e7de9Smrg done # argument parsing loop 4910775e7de9Smrg 4911775e7de9Smrg test -n "$prev" && \ 4912775e7de9Smrg func_fatal_help "the \`$prevarg' option requires an argument" 4913775e7de9Smrg 4914775e7de9Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 4915775e7de9Smrg eval arg=\"$export_dynamic_flag_spec\" 4916775e7de9Smrg func_append compile_command " $arg" 4917775e7de9Smrg func_append finalize_command " $arg" 4918775e7de9Smrg fi 4919775e7de9Smrg 4920775e7de9Smrg oldlibs= 4921775e7de9Smrg # calculate the name of the file, without its directory 4922775e7de9Smrg func_basename "$output" 4923775e7de9Smrg outputname="$func_basename_result" 4924775e7de9Smrg libobjs_save="$libobjs" 4925775e7de9Smrg 4926775e7de9Smrg if test -n "$shlibpath_var"; then 4927775e7de9Smrg # get the directories listed in $shlibpath_var 4928775e7de9Smrg eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 4929775e7de9Smrg else 4930775e7de9Smrg shlib_search_path= 4931775e7de9Smrg fi 4932775e7de9Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 4933775e7de9Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 4934775e7de9Smrg 4935775e7de9Smrg func_dirname "$output" "/" "" 4936775e7de9Smrg output_objdir="$func_dirname_result$objdir" 4937775e7de9Smrg # Create the object directory. 4938775e7de9Smrg func_mkdir_p "$output_objdir" 4939775e7de9Smrg 4940775e7de9Smrg # Determine the type of output 4941775e7de9Smrg case $output in 4942775e7de9Smrg "") 4943775e7de9Smrg func_fatal_help "you must specify an output file" 4944775e7de9Smrg ;; 4945775e7de9Smrg *.$libext) linkmode=oldlib ;; 4946775e7de9Smrg *.lo | *.$objext) linkmode=obj ;; 4947775e7de9Smrg *.la) linkmode=lib ;; 4948775e7de9Smrg *) linkmode=prog ;; # Anything else should be a program. 4949775e7de9Smrg esac 4950775e7de9Smrg 4951775e7de9Smrg specialdeplibs= 4952775e7de9Smrg 4953775e7de9Smrg libs= 4954775e7de9Smrg # Find all interdependent deplibs by searching for libraries 4955775e7de9Smrg # that are linked more than once (e.g. -la -lb -la) 4956775e7de9Smrg for deplib in $deplibs; do 4957775e7de9Smrg if $opt_duplicate_deps ; then 4958775e7de9Smrg case "$libs " in 4959775e7de9Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 4960775e7de9Smrg esac 4961775e7de9Smrg fi 4962775e7de9Smrg libs="$libs $deplib" 4963775e7de9Smrg done 4964775e7de9Smrg 4965775e7de9Smrg if test "$linkmode" = lib; then 4966775e7de9Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 4967775e7de9Smrg 4968775e7de9Smrg # Compute libraries that are listed more than once in $predeps 4969775e7de9Smrg # $postdeps and mark them as special (i.e., whose duplicates are 4970775e7de9Smrg # not to be eliminated). 4971775e7de9Smrg pre_post_deps= 4972775e7de9Smrg if $opt_duplicate_compiler_generated_deps; then 4973775e7de9Smrg for pre_post_dep in $predeps $postdeps; do 4974775e7de9Smrg case "$pre_post_deps " in 4975775e7de9Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 4976775e7de9Smrg esac 4977775e7de9Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 4978775e7de9Smrg done 4979775e7de9Smrg fi 4980775e7de9Smrg pre_post_deps= 4981775e7de9Smrg fi 4982775e7de9Smrg 4983775e7de9Smrg deplibs= 4984775e7de9Smrg newdependency_libs= 4985775e7de9Smrg newlib_search_path= 4986775e7de9Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 4987775e7de9Smrg notinst_deplibs= # not-installed libtool libraries 4988775e7de9Smrg notinst_path= # paths that contain not-installed libtool libraries 4989775e7de9Smrg 4990775e7de9Smrg case $linkmode in 4991775e7de9Smrg lib) 4992775e7de9Smrg passes="conv dlpreopen link" 4993775e7de9Smrg for file in $dlfiles $dlprefiles; do 4994775e7de9Smrg case $file in 4995775e7de9Smrg *.la) ;; 4996775e7de9Smrg *) 4997775e7de9Smrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 4998775e7de9Smrg ;; 4999775e7de9Smrg esac 5000775e7de9Smrg done 5001775e7de9Smrg ;; 5002775e7de9Smrg prog) 5003775e7de9Smrg compile_deplibs= 5004775e7de9Smrg finalize_deplibs= 5005775e7de9Smrg alldeplibs=no 5006775e7de9Smrg newdlfiles= 5007775e7de9Smrg newdlprefiles= 5008775e7de9Smrg passes="conv scan dlopen dlpreopen link" 5009775e7de9Smrg ;; 5010775e7de9Smrg *) passes="conv" 5011775e7de9Smrg ;; 5012775e7de9Smrg esac 5013775e7de9Smrg 5014775e7de9Smrg for pass in $passes; do 5015775e7de9Smrg # The preopen pass in lib mode reverses $deplibs; put it back here 5016775e7de9Smrg # so that -L comes before libs that need it for instance... 5017775e7de9Smrg if test "$linkmode,$pass" = "lib,link"; then 5018775e7de9Smrg ## FIXME: Find the place where the list is rebuilt in the wrong 5019775e7de9Smrg ## order, and fix it there properly 5020775e7de9Smrg tmp_deplibs= 5021775e7de9Smrg for deplib in $deplibs; do 5022775e7de9Smrg tmp_deplibs="$deplib $tmp_deplibs" 5023775e7de9Smrg done 5024775e7de9Smrg deplibs="$tmp_deplibs" 5025775e7de9Smrg fi 5026775e7de9Smrg 5027775e7de9Smrg if test "$linkmode,$pass" = "lib,link" || 5028775e7de9Smrg test "$linkmode,$pass" = "prog,scan"; then 5029775e7de9Smrg libs="$deplibs" 5030775e7de9Smrg deplibs= 5031775e7de9Smrg fi 5032775e7de9Smrg if test "$linkmode" = prog; then 5033775e7de9Smrg case $pass in 5034775e7de9Smrg dlopen) libs="$dlfiles" ;; 5035775e7de9Smrg dlpreopen) libs="$dlprefiles" ;; 5036775e7de9Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 5037775e7de9Smrg esac 5038775e7de9Smrg fi 5039775e7de9Smrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 5040775e7de9Smrg # Collect and forward deplibs of preopened libtool libs 5041775e7de9Smrg for lib in $dlprefiles; do 5042775e7de9Smrg # Ignore non-libtool-libs 5043775e7de9Smrg dependency_libs= 5044775e7de9Smrg case $lib in 5045775e7de9Smrg *.la) func_source "$lib" ;; 5046775e7de9Smrg esac 5047775e7de9Smrg 5048775e7de9Smrg # Collect preopened libtool deplibs, except any this library 5049775e7de9Smrg # has declared as weak libs 5050775e7de9Smrg for deplib in $dependency_libs; do 5051775e7de9Smrg deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 5052775e7de9Smrg case " $weak_libs " in 5053775e7de9Smrg *" $deplib_base "*) ;; 5054775e7de9Smrg *) deplibs="$deplibs $deplib" ;; 5055775e7de9Smrg esac 5056775e7de9Smrg done 5057775e7de9Smrg done 5058775e7de9Smrg libs="$dlprefiles" 5059775e7de9Smrg fi 5060775e7de9Smrg if test "$pass" = dlopen; then 5061775e7de9Smrg # Collect dlpreopened libraries 5062775e7de9Smrg save_deplibs="$deplibs" 5063775e7de9Smrg deplibs= 5064775e7de9Smrg fi 5065775e7de9Smrg 5066775e7de9Smrg for deplib in $libs; do 5067775e7de9Smrg lib= 5068775e7de9Smrg found=no 5069775e7de9Smrg case $deplib in 5070775e7de9Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 5071775e7de9Smrg if test "$linkmode,$pass" = "prog,link"; then 5072775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5073775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5074775e7de9Smrg else 5075775e7de9Smrg compiler_flags="$compiler_flags $deplib" 5076775e7de9Smrg if test "$linkmode" = lib ; then 5077775e7de9Smrg case "$new_inherited_linker_flags " in 5078775e7de9Smrg *" $deplib "*) ;; 5079775e7de9Smrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5080775e7de9Smrg esac 5081775e7de9Smrg fi 5082775e7de9Smrg fi 5083775e7de9Smrg continue 5084775e7de9Smrg ;; 5085775e7de9Smrg -l*) 5086775e7de9Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 5087775e7de9Smrg func_warning "\`-l' is ignored for archives/objects" 5088775e7de9Smrg continue 5089775e7de9Smrg fi 5090775e7de9Smrg func_stripname '-l' '' "$deplib" 5091775e7de9Smrg name=$func_stripname_result 5092775e7de9Smrg if test "$linkmode" = lib; then 5093775e7de9Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 5094775e7de9Smrg else 5095775e7de9Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 5096775e7de9Smrg fi 5097775e7de9Smrg for searchdir in $searchdirs; do 5098775e7de9Smrg for search_ext in .la $std_shrext .so .a; do 5099775e7de9Smrg # Search the libtool library 5100775e7de9Smrg lib="$searchdir/lib${name}${search_ext}" 5101775e7de9Smrg if test -f "$lib"; then 5102775e7de9Smrg if test "$search_ext" = ".la"; then 5103775e7de9Smrg found=yes 5104775e7de9Smrg else 5105775e7de9Smrg found=no 5106775e7de9Smrg fi 5107775e7de9Smrg break 2 5108775e7de9Smrg fi 5109775e7de9Smrg done 5110775e7de9Smrg done 5111775e7de9Smrg if test "$found" != yes; then 5112775e7de9Smrg # deplib doesn't seem to be a libtool library 5113775e7de9Smrg if test "$linkmode,$pass" = "prog,link"; then 5114775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5115775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5116775e7de9Smrg else 5117775e7de9Smrg deplibs="$deplib $deplibs" 5118775e7de9Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5119775e7de9Smrg fi 5120775e7de9Smrg continue 5121775e7de9Smrg else # deplib is a libtool library 5122775e7de9Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 5123775e7de9Smrg # We need to do some special things here, and not later. 5124775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 5125775e7de9Smrg case " $predeps $postdeps " in 5126775e7de9Smrg *" $deplib "*) 5127775e7de9Smrg if func_lalib_p "$lib"; then 5128775e7de9Smrg library_names= 5129775e7de9Smrg old_library= 5130775e7de9Smrg func_source "$lib" 5131775e7de9Smrg for l in $old_library $library_names; do 5132775e7de9Smrg ll="$l" 5133775e7de9Smrg done 5134775e7de9Smrg if test "X$ll" = "X$old_library" ; then # only static version available 5135775e7de9Smrg found=no 5136775e7de9Smrg func_dirname "$lib" "" "." 5137775e7de9Smrg ladir="$func_dirname_result" 5138775e7de9Smrg lib=$ladir/$old_library 5139775e7de9Smrg if test "$linkmode,$pass" = "prog,link"; then 5140775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5141775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5142775e7de9Smrg else 5143775e7de9Smrg deplibs="$deplib $deplibs" 5144775e7de9Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5145775e7de9Smrg fi 5146775e7de9Smrg continue 5147775e7de9Smrg fi 5148775e7de9Smrg fi 5149775e7de9Smrg ;; 5150775e7de9Smrg *) ;; 5151775e7de9Smrg esac 5152775e7de9Smrg fi 5153775e7de9Smrg fi 5154775e7de9Smrg ;; # -l 5155775e7de9Smrg *.ltframework) 5156775e7de9Smrg if test "$linkmode,$pass" = "prog,link"; then 5157775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5158775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5159775e7de9Smrg else 5160775e7de9Smrg deplibs="$deplib $deplibs" 5161775e7de9Smrg if test "$linkmode" = lib ; then 5162775e7de9Smrg case "$new_inherited_linker_flags " in 5163775e7de9Smrg *" $deplib "*) ;; 5164775e7de9Smrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5165775e7de9Smrg esac 5166775e7de9Smrg fi 5167775e7de9Smrg fi 5168775e7de9Smrg continue 5169775e7de9Smrg ;; 5170775e7de9Smrg -L*) 5171775e7de9Smrg case $linkmode in 5172775e7de9Smrg lib) 5173775e7de9Smrg deplibs="$deplib $deplibs" 5174775e7de9Smrg test "$pass" = conv && continue 5175775e7de9Smrg newdependency_libs="$deplib $newdependency_libs" 5176775e7de9Smrg func_stripname '-L' '' "$deplib" 5177775e7de9Smrg newlib_search_path="$newlib_search_path $func_stripname_result" 5178775e7de9Smrg ;; 5179775e7de9Smrg prog) 5180775e7de9Smrg if test "$pass" = conv; then 5181775e7de9Smrg deplibs="$deplib $deplibs" 5182775e7de9Smrg continue 5183775e7de9Smrg fi 5184775e7de9Smrg if test "$pass" = scan; then 5185775e7de9Smrg deplibs="$deplib $deplibs" 5186775e7de9Smrg else 5187775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5188775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5189775e7de9Smrg fi 5190775e7de9Smrg func_stripname '-L' '' "$deplib" 5191775e7de9Smrg newlib_search_path="$newlib_search_path $func_stripname_result" 5192775e7de9Smrg ;; 5193775e7de9Smrg *) 5194775e7de9Smrg func_warning "\`-L' is ignored for archives/objects" 5195775e7de9Smrg ;; 5196775e7de9Smrg esac # linkmode 5197775e7de9Smrg continue 5198775e7de9Smrg ;; # -L 5199775e7de9Smrg -R*) 5200775e7de9Smrg if test "$pass" = link; then 5201775e7de9Smrg func_stripname '-R' '' "$deplib" 5202775e7de9Smrg dir=$func_stripname_result 5203775e7de9Smrg # Make sure the xrpath contains only unique directories. 5204775e7de9Smrg case "$xrpath " in 5205775e7de9Smrg *" $dir "*) ;; 5206775e7de9Smrg *) xrpath="$xrpath $dir" ;; 5207775e7de9Smrg esac 5208775e7de9Smrg fi 5209775e7de9Smrg deplibs="$deplib $deplibs" 5210775e7de9Smrg continue 5211775e7de9Smrg ;; 5212775e7de9Smrg *.la) lib="$deplib" ;; 5213775e7de9Smrg *.$libext) 5214775e7de9Smrg if test "$pass" = conv; then 5215775e7de9Smrg deplibs="$deplib $deplibs" 5216775e7de9Smrg continue 5217775e7de9Smrg fi 5218775e7de9Smrg case $linkmode in 5219775e7de9Smrg lib) 5220775e7de9Smrg # Linking convenience modules into shared libraries is allowed, 5221775e7de9Smrg # but linking other static libraries is non-portable. 5222775e7de9Smrg case " $dlpreconveniencelibs " in 5223775e7de9Smrg *" $deplib "*) ;; 5224775e7de9Smrg *) 5225775e7de9Smrg valid_a_lib=no 5226775e7de9Smrg case $deplibs_check_method in 5227775e7de9Smrg match_pattern*) 5228775e7de9Smrg set dummy $deplibs_check_method; shift 5229775e7de9Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 5230775e7de9Smrg if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 5231775e7de9Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 5232775e7de9Smrg valid_a_lib=yes 5233775e7de9Smrg fi 5234775e7de9Smrg ;; 5235775e7de9Smrg pass_all) 5236775e7de9Smrg valid_a_lib=yes 5237775e7de9Smrg ;; 5238775e7de9Smrg esac 5239775e7de9Smrg if test "$valid_a_lib" != yes; then 5240775e7de9Smrg $ECHO 5241775e7de9Smrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 5242775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 5243775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 5244775e7de9Smrg $ECHO "*** shared version of the library, which you do not appear to have" 5245775e7de9Smrg $ECHO "*** because the file extensions .$libext of this argument makes me believe" 5246775e7de9Smrg $ECHO "*** that it is just a static archive that I should not use here." 5247775e7de9Smrg else 5248775e7de9Smrg $ECHO 5249775e7de9Smrg $ECHO "*** Warning: Linking the shared library $output against the" 5250775e7de9Smrg $ECHO "*** static library $deplib is not portable!" 5251775e7de9Smrg deplibs="$deplib $deplibs" 5252775e7de9Smrg fi 5253775e7de9Smrg ;; 5254775e7de9Smrg esac 5255775e7de9Smrg continue 5256775e7de9Smrg ;; 5257775e7de9Smrg prog) 5258775e7de9Smrg if test "$pass" != link; then 5259775e7de9Smrg deplibs="$deplib $deplibs" 5260775e7de9Smrg else 5261775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5262775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5263775e7de9Smrg fi 5264775e7de9Smrg continue 5265775e7de9Smrg ;; 5266775e7de9Smrg esac # linkmode 5267775e7de9Smrg ;; # *.$libext 5268775e7de9Smrg *.lo | *.$objext) 5269775e7de9Smrg if test "$pass" = conv; then 5270775e7de9Smrg deplibs="$deplib $deplibs" 5271775e7de9Smrg elif test "$linkmode" = prog; then 5272775e7de9Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 5273775e7de9Smrg # If there is no dlopen support or we're linking statically, 5274775e7de9Smrg # we need to preload. 5275775e7de9Smrg newdlprefiles="$newdlprefiles $deplib" 5276775e7de9Smrg compile_deplibs="$deplib $compile_deplibs" 5277775e7de9Smrg finalize_deplibs="$deplib $finalize_deplibs" 5278775e7de9Smrg else 5279775e7de9Smrg newdlfiles="$newdlfiles $deplib" 5280775e7de9Smrg fi 5281775e7de9Smrg fi 5282775e7de9Smrg continue 5283775e7de9Smrg ;; 5284775e7de9Smrg %DEPLIBS%) 5285775e7de9Smrg alldeplibs=yes 5286775e7de9Smrg continue 5287775e7de9Smrg ;; 5288775e7de9Smrg esac # case $deplib 5289775e7de9Smrg 5290775e7de9Smrg if test "$found" = yes || test -f "$lib"; then : 5291775e7de9Smrg else 5292775e7de9Smrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 5293775e7de9Smrg fi 5294775e7de9Smrg 5295775e7de9Smrg # Check to see that this really is a libtool archive. 5296775e7de9Smrg func_lalib_unsafe_p "$lib" \ 5297775e7de9Smrg || func_fatal_error "\`$lib' is not a valid libtool archive" 5298775e7de9Smrg 5299775e7de9Smrg func_dirname "$lib" "" "." 5300775e7de9Smrg ladir="$func_dirname_result" 5301775e7de9Smrg 5302775e7de9Smrg dlname= 5303775e7de9Smrg dlopen= 5304775e7de9Smrg dlpreopen= 5305775e7de9Smrg libdir= 5306775e7de9Smrg library_names= 5307775e7de9Smrg old_library= 5308775e7de9Smrg inherited_linker_flags= 5309775e7de9Smrg # If the library was installed with an old release of libtool, 5310775e7de9Smrg # it will not redefine variables installed, or shouldnotlink 5311775e7de9Smrg installed=yes 5312775e7de9Smrg shouldnotlink=no 5313775e7de9Smrg avoidtemprpath= 5314775e7de9Smrg 5315775e7de9Smrg 5316775e7de9Smrg # Read the .la file 5317775e7de9Smrg func_source "$lib" 5318775e7de9Smrg 5319775e7de9Smrg # Convert "-framework foo" to "foo.ltframework" 5320775e7de9Smrg if test -n "$inherited_linker_flags"; then 5321775e7de9Smrg tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 5322775e7de9Smrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 5323775e7de9Smrg case " $new_inherited_linker_flags " in 5324775e7de9Smrg *" $tmp_inherited_linker_flag "*) ;; 5325775e7de9Smrg *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 5326775e7de9Smrg esac 5327775e7de9Smrg done 5328775e7de9Smrg fi 5329775e7de9Smrg dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 5330775e7de9Smrg if test "$linkmode,$pass" = "lib,link" || 5331775e7de9Smrg test "$linkmode,$pass" = "prog,scan" || 5332775e7de9Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 5333775e7de9Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 5334775e7de9Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 5335775e7de9Smrg fi 5336775e7de9Smrg 5337775e7de9Smrg if test "$pass" = conv; then 5338775e7de9Smrg # Only check for convenience libraries 5339775e7de9Smrg deplibs="$lib $deplibs" 5340775e7de9Smrg if test -z "$libdir"; then 5341775e7de9Smrg if test -z "$old_library"; then 5342775e7de9Smrg func_fatal_error "cannot find name of link library for \`$lib'" 5343775e7de9Smrg fi 5344775e7de9Smrg # It is a libtool convenience library, so add in its objects. 5345775e7de9Smrg convenience="$convenience $ladir/$objdir/$old_library" 5346775e7de9Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 5347775e7de9Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 5348775e7de9Smrg func_fatal_error "\`$lib' is not a convenience library" 5349775e7de9Smrg fi 5350775e7de9Smrg tmp_libs= 5351775e7de9Smrg for deplib in $dependency_libs; do 5352775e7de9Smrg deplibs="$deplib $deplibs" 5353775e7de9Smrg if $opt_duplicate_deps ; then 5354775e7de9Smrg case "$tmp_libs " in 5355775e7de9Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5356775e7de9Smrg esac 5357775e7de9Smrg fi 5358775e7de9Smrg tmp_libs="$tmp_libs $deplib" 5359775e7de9Smrg done 5360775e7de9Smrg continue 5361775e7de9Smrg fi # $pass = conv 5362775e7de9Smrg 5363775e7de9Smrg 5364775e7de9Smrg # Get the name of the library we link against. 5365775e7de9Smrg linklib= 5366775e7de9Smrg for l in $old_library $library_names; do 5367775e7de9Smrg linklib="$l" 5368775e7de9Smrg done 5369775e7de9Smrg if test -z "$linklib"; then 5370775e7de9Smrg func_fatal_error "cannot find name of link library for \`$lib'" 5371775e7de9Smrg fi 5372775e7de9Smrg 5373775e7de9Smrg # This library was specified with -dlopen. 5374775e7de9Smrg if test "$pass" = dlopen; then 5375775e7de9Smrg if test -z "$libdir"; then 5376775e7de9Smrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 5377775e7de9Smrg fi 5378775e7de9Smrg if test -z "$dlname" || 5379775e7de9Smrg test "$dlopen_support" != yes || 5380775e7de9Smrg test "$build_libtool_libs" = no; then 5381775e7de9Smrg # If there is no dlname, no dlopen support or we're linking 5382775e7de9Smrg # statically, we need to preload. We also need to preload any 5383775e7de9Smrg # dependent libraries so libltdl's deplib preloader doesn't 5384775e7de9Smrg # bomb out in the load deplibs phase. 5385775e7de9Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 5386775e7de9Smrg else 5387775e7de9Smrg newdlfiles="$newdlfiles $lib" 5388775e7de9Smrg fi 5389775e7de9Smrg continue 5390775e7de9Smrg fi # $pass = dlopen 5391775e7de9Smrg 5392775e7de9Smrg # We need an absolute path. 5393775e7de9Smrg case $ladir in 5394775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 5395775e7de9Smrg *) 5396775e7de9Smrg abs_ladir=`cd "$ladir" && pwd` 5397775e7de9Smrg if test -z "$abs_ladir"; then 5398775e7de9Smrg func_warning "cannot determine absolute directory name of \`$ladir'" 5399775e7de9Smrg func_warning "passing it literally to the linker, although it might fail" 5400775e7de9Smrg abs_ladir="$ladir" 5401775e7de9Smrg fi 5402775e7de9Smrg ;; 5403775e7de9Smrg esac 5404775e7de9Smrg func_basename "$lib" 5405775e7de9Smrg laname="$func_basename_result" 5406775e7de9Smrg 5407775e7de9Smrg # Find the relevant object directory and library name. 5408775e7de9Smrg if test "X$installed" = Xyes; then 5409775e7de9Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5410775e7de9Smrg func_warning "library \`$lib' was moved." 5411775e7de9Smrg dir="$ladir" 5412775e7de9Smrg absdir="$abs_ladir" 5413775e7de9Smrg libdir="$abs_ladir" 5414775e7de9Smrg else 5415775e7de9Smrg dir="$libdir" 5416775e7de9Smrg absdir="$libdir" 5417775e7de9Smrg fi 5418775e7de9Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 5419775e7de9Smrg else 5420775e7de9Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5421775e7de9Smrg dir="$ladir" 5422775e7de9Smrg absdir="$abs_ladir" 5423775e7de9Smrg # Remove this search path later 5424775e7de9Smrg notinst_path="$notinst_path $abs_ladir" 5425775e7de9Smrg else 5426775e7de9Smrg dir="$ladir/$objdir" 5427775e7de9Smrg absdir="$abs_ladir/$objdir" 5428775e7de9Smrg # Remove this search path later 5429775e7de9Smrg notinst_path="$notinst_path $abs_ladir" 5430775e7de9Smrg fi 5431775e7de9Smrg fi # $installed = yes 5432775e7de9Smrg func_stripname 'lib' '.la' "$laname" 5433775e7de9Smrg name=$func_stripname_result 5434775e7de9Smrg 5435775e7de9Smrg # This library was specified with -dlpreopen. 5436775e7de9Smrg if test "$pass" = dlpreopen; then 5437775e7de9Smrg if test -z "$libdir" && test "$linkmode" = prog; then 5438775e7de9Smrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 5439775e7de9Smrg fi 5440775e7de9Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 5441775e7de9Smrg # are required to link). 5442775e7de9Smrg if test -n "$old_library"; then 5443775e7de9Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 5444775e7de9Smrg # Keep a list of preopened convenience libraries to check 5445775e7de9Smrg # that they are being used correctly in the link pass. 5446775e7de9Smrg test -z "$libdir" && \ 5447775e7de9Smrg dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 5448775e7de9Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 5449775e7de9Smrg elif test -n "$dlname"; then 5450775e7de9Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 5451775e7de9Smrg else 5452775e7de9Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 5453775e7de9Smrg fi 5454775e7de9Smrg fi # $pass = dlpreopen 5455775e7de9Smrg 5456775e7de9Smrg if test -z "$libdir"; then 5457775e7de9Smrg # Link the convenience library 5458775e7de9Smrg if test "$linkmode" = lib; then 5459775e7de9Smrg deplibs="$dir/$old_library $deplibs" 5460775e7de9Smrg elif test "$linkmode,$pass" = "prog,link"; then 5461775e7de9Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 5462775e7de9Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 5463775e7de9Smrg else 5464775e7de9Smrg deplibs="$lib $deplibs" # used for prog,scan pass 5465775e7de9Smrg fi 5466775e7de9Smrg continue 5467775e7de9Smrg fi 5468775e7de9Smrg 5469775e7de9Smrg 5470775e7de9Smrg if test "$linkmode" = prog && test "$pass" != link; then 5471775e7de9Smrg newlib_search_path="$newlib_search_path $ladir" 5472775e7de9Smrg deplibs="$lib $deplibs" 5473775e7de9Smrg 5474775e7de9Smrg linkalldeplibs=no 5475775e7de9Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 5476775e7de9Smrg test "$build_libtool_libs" = no; then 5477775e7de9Smrg linkalldeplibs=yes 5478775e7de9Smrg fi 5479775e7de9Smrg 5480775e7de9Smrg tmp_libs= 5481775e7de9Smrg for deplib in $dependency_libs; do 5482775e7de9Smrg case $deplib in 5483775e7de9Smrg -L*) func_stripname '-L' '' "$deplib" 5484775e7de9Smrg newlib_search_path="$newlib_search_path $func_stripname_result" 5485775e7de9Smrg ;; 5486775e7de9Smrg esac 5487775e7de9Smrg # Need to link against all dependency_libs? 5488775e7de9Smrg if test "$linkalldeplibs" = yes; then 5489775e7de9Smrg deplibs="$deplib $deplibs" 5490775e7de9Smrg else 5491775e7de9Smrg # Need to hardcode shared library paths 5492775e7de9Smrg # or/and link against static libraries 5493775e7de9Smrg newdependency_libs="$deplib $newdependency_libs" 5494775e7de9Smrg fi 5495775e7de9Smrg if $opt_duplicate_deps ; then 5496775e7de9Smrg case "$tmp_libs " in 5497775e7de9Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5498775e7de9Smrg esac 5499775e7de9Smrg fi 5500775e7de9Smrg tmp_libs="$tmp_libs $deplib" 5501775e7de9Smrg done # for deplib 5502775e7de9Smrg continue 5503775e7de9Smrg fi # $linkmode = prog... 5504775e7de9Smrg 5505775e7de9Smrg if test "$linkmode,$pass" = "prog,link"; then 5506775e7de9Smrg if test -n "$library_names" && 5507775e7de9Smrg { { test "$prefer_static_libs" = no || 5508775e7de9Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 5509775e7de9Smrg test -z "$old_library"; }; then 5510775e7de9Smrg # We need to hardcode the library path 5511775e7de9Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 5512775e7de9Smrg # Make sure the rpath contains only unique directories. 5513775e7de9Smrg case "$temp_rpath:" in 5514775e7de9Smrg *"$absdir:"*) ;; 5515775e7de9Smrg *) temp_rpath="$temp_rpath$absdir:" ;; 5516775e7de9Smrg esac 5517775e7de9Smrg fi 5518775e7de9Smrg 5519775e7de9Smrg # Hardcode the library path. 5520775e7de9Smrg # Skip directories that are in the system default run-time 5521775e7de9Smrg # search path. 5522775e7de9Smrg case " $sys_lib_dlsearch_path " in 5523775e7de9Smrg *" $absdir "*) ;; 5524775e7de9Smrg *) 5525775e7de9Smrg case "$compile_rpath " in 5526775e7de9Smrg *" $absdir "*) ;; 5527775e7de9Smrg *) compile_rpath="$compile_rpath $absdir" 5528775e7de9Smrg esac 5529775e7de9Smrg ;; 5530775e7de9Smrg esac 5531775e7de9Smrg case " $sys_lib_dlsearch_path " in 5532775e7de9Smrg *" $libdir "*) ;; 5533775e7de9Smrg *) 5534775e7de9Smrg case "$finalize_rpath " in 5535775e7de9Smrg *" $libdir "*) ;; 5536775e7de9Smrg *) finalize_rpath="$finalize_rpath $libdir" 5537775e7de9Smrg esac 5538775e7de9Smrg ;; 5539775e7de9Smrg esac 5540775e7de9Smrg fi # $linkmode,$pass = prog,link... 5541775e7de9Smrg 5542775e7de9Smrg if test "$alldeplibs" = yes && 5543775e7de9Smrg { test "$deplibs_check_method" = pass_all || 5544775e7de9Smrg { test "$build_libtool_libs" = yes && 5545775e7de9Smrg test -n "$library_names"; }; }; then 5546775e7de9Smrg # We only need to search for static libraries 5547775e7de9Smrg continue 5548775e7de9Smrg fi 5549775e7de9Smrg fi 5550775e7de9Smrg 5551775e7de9Smrg link_static=no # Whether the deplib will be linked statically 5552775e7de9Smrg use_static_libs=$prefer_static_libs 5553775e7de9Smrg if test "$use_static_libs" = built && test "$installed" = yes; then 5554775e7de9Smrg use_static_libs=no 5555775e7de9Smrg fi 5556775e7de9Smrg if test -n "$library_names" && 5557775e7de9Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 5558775e7de9Smrg case $host in 5559775e7de9Smrg *cygwin* | *mingw* | *cegcc*) 5560775e7de9Smrg # No point in relinking DLLs because paths are not encoded 5561775e7de9Smrg notinst_deplibs="$notinst_deplibs $lib" 5562775e7de9Smrg need_relink=no 5563775e7de9Smrg ;; 5564775e7de9Smrg *) 5565775e7de9Smrg if test "$installed" = no; then 5566775e7de9Smrg notinst_deplibs="$notinst_deplibs $lib" 5567775e7de9Smrg need_relink=yes 5568775e7de9Smrg fi 5569775e7de9Smrg ;; 5570775e7de9Smrg esac 5571775e7de9Smrg # This is a shared library 5572775e7de9Smrg 5573775e7de9Smrg # Warn about portability, can't link against -module's on some 5574775e7de9Smrg # systems (darwin). Don't bleat about dlopened modules though! 5575775e7de9Smrg dlopenmodule="" 5576775e7de9Smrg for dlpremoduletest in $dlprefiles; do 5577775e7de9Smrg if test "X$dlpremoduletest" = "X$lib"; then 5578775e7de9Smrg dlopenmodule="$dlpremoduletest" 5579775e7de9Smrg break 5580775e7de9Smrg fi 5581775e7de9Smrg done 5582775e7de9Smrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 5583775e7de9Smrg $ECHO 5584775e7de9Smrg if test "$linkmode" = prog; then 5585775e7de9Smrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 5586775e7de9Smrg else 5587775e7de9Smrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 5588775e7de9Smrg fi 5589775e7de9Smrg $ECHO "*** $linklib is not portable!" 5590775e7de9Smrg fi 5591775e7de9Smrg if test "$linkmode" = lib && 5592775e7de9Smrg test "$hardcode_into_libs" = yes; then 5593775e7de9Smrg # Hardcode the library path. 5594775e7de9Smrg # Skip directories that are in the system default run-time 5595775e7de9Smrg # search path. 5596775e7de9Smrg case " $sys_lib_dlsearch_path " in 5597775e7de9Smrg *" $absdir "*) ;; 5598775e7de9Smrg *) 5599775e7de9Smrg case "$compile_rpath " in 5600775e7de9Smrg *" $absdir "*) ;; 5601775e7de9Smrg *) compile_rpath="$compile_rpath $absdir" 5602775e7de9Smrg esac 5603775e7de9Smrg ;; 5604775e7de9Smrg esac 5605775e7de9Smrg case " $sys_lib_dlsearch_path " in 5606775e7de9Smrg *" $libdir "*) ;; 5607775e7de9Smrg *) 5608775e7de9Smrg case "$finalize_rpath " in 5609775e7de9Smrg *" $libdir "*) ;; 5610775e7de9Smrg *) finalize_rpath="$finalize_rpath $libdir" 5611775e7de9Smrg esac 5612775e7de9Smrg ;; 5613775e7de9Smrg esac 5614775e7de9Smrg fi 5615775e7de9Smrg 5616775e7de9Smrg if test -n "$old_archive_from_expsyms_cmds"; then 5617775e7de9Smrg # figure out the soname 5618775e7de9Smrg set dummy $library_names 5619775e7de9Smrg shift 5620775e7de9Smrg realname="$1" 5621775e7de9Smrg shift 5622775e7de9Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 5623775e7de9Smrg # use dlname if we got it. it's perfectly good, no? 5624775e7de9Smrg if test -n "$dlname"; then 5625775e7de9Smrg soname="$dlname" 5626775e7de9Smrg elif test -n "$soname_spec"; then 5627775e7de9Smrg # bleh windows 5628775e7de9Smrg case $host in 5629775e7de9Smrg *cygwin* | mingw* | *cegcc*) 5630775e7de9Smrg func_arith $current - $age 5631775e7de9Smrg major=$func_arith_result 5632775e7de9Smrg versuffix="-$major" 5633775e7de9Smrg ;; 5634775e7de9Smrg esac 5635775e7de9Smrg eval soname=\"$soname_spec\" 5636775e7de9Smrg else 5637775e7de9Smrg soname="$realname" 5638775e7de9Smrg fi 5639775e7de9Smrg 5640775e7de9Smrg # Make a new name for the extract_expsyms_cmds to use 5641775e7de9Smrg soroot="$soname" 5642775e7de9Smrg func_basename "$soroot" 5643775e7de9Smrg soname="$func_basename_result" 5644775e7de9Smrg func_stripname 'lib' '.dll' "$soname" 5645775e7de9Smrg newlib=libimp-$func_stripname_result.a 5646775e7de9Smrg 5647775e7de9Smrg # If the library has no export list, then create one now 5648775e7de9Smrg if test -f "$output_objdir/$soname-def"; then : 5649775e7de9Smrg else 5650775e7de9Smrg func_verbose "extracting exported symbol list from \`$soname'" 5651775e7de9Smrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 5652775e7de9Smrg fi 5653775e7de9Smrg 5654775e7de9Smrg # Create $newlib 5655775e7de9Smrg if test -f "$output_objdir/$newlib"; then :; else 5656775e7de9Smrg func_verbose "generating import library for \`$soname'" 5657775e7de9Smrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 5658775e7de9Smrg fi 5659775e7de9Smrg # make sure the library variables are pointing to the new library 5660775e7de9Smrg dir=$output_objdir 5661775e7de9Smrg linklib=$newlib 5662775e7de9Smrg fi # test -n "$old_archive_from_expsyms_cmds" 5663775e7de9Smrg 5664775e7de9Smrg if test "$linkmode" = prog || test "$mode" != relink; then 5665775e7de9Smrg add_shlibpath= 5666775e7de9Smrg add_dir= 5667775e7de9Smrg add= 5668775e7de9Smrg lib_linked=yes 5669775e7de9Smrg case $hardcode_action in 5670775e7de9Smrg immediate | unsupported) 5671775e7de9Smrg if test "$hardcode_direct" = no; then 5672775e7de9Smrg add="$dir/$linklib" 5673775e7de9Smrg case $host in 5674775e7de9Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 5675775e7de9Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 5676775e7de9Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 5677775e7de9Smrg *-*-unixware7*) add_dir="-L$dir" ;; 5678775e7de9Smrg *-*-darwin* ) 5679775e7de9Smrg # if the lib is a (non-dlopened) module then we can not 5680775e7de9Smrg # link against it, someone is ignoring the earlier warnings 5681775e7de9Smrg if /usr/bin/file -L $add 2> /dev/null | 5682775e7de9Smrg $GREP ": [^:]* bundle" >/dev/null ; then 5683775e7de9Smrg if test "X$dlopenmodule" != "X$lib"; then 5684775e7de9Smrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 5685775e7de9Smrg if test -z "$old_library" ; then 5686775e7de9Smrg $ECHO 5687775e7de9Smrg $ECHO "*** And there doesn't seem to be a static archive available" 5688775e7de9Smrg $ECHO "*** The link will probably fail, sorry" 5689775e7de9Smrg else 5690775e7de9Smrg add="$dir/$old_library" 5691775e7de9Smrg fi 5692775e7de9Smrg elif test -n "$old_library"; then 5693775e7de9Smrg add="$dir/$old_library" 5694775e7de9Smrg fi 5695775e7de9Smrg fi 5696775e7de9Smrg esac 5697775e7de9Smrg elif test "$hardcode_minus_L" = no; then 5698775e7de9Smrg case $host in 5699775e7de9Smrg *-*-sunos*) add_shlibpath="$dir" ;; 5700775e7de9Smrg esac 5701775e7de9Smrg add_dir="-L$dir" 5702775e7de9Smrg add="-l$name" 5703775e7de9Smrg elif test "$hardcode_shlibpath_var" = no; then 5704775e7de9Smrg add_shlibpath="$dir" 5705775e7de9Smrg add="-l$name" 5706775e7de9Smrg else 5707775e7de9Smrg lib_linked=no 5708775e7de9Smrg fi 5709775e7de9Smrg ;; 5710775e7de9Smrg relink) 5711775e7de9Smrg if test "$hardcode_direct" = yes && 5712775e7de9Smrg test "$hardcode_direct_absolute" = no; then 5713775e7de9Smrg add="$dir/$linklib" 5714775e7de9Smrg elif test "$hardcode_minus_L" = yes; then 5715775e7de9Smrg add_dir="-L$dir" 5716775e7de9Smrg # Try looking first in the location we're being installed to. 5717775e7de9Smrg if test -n "$inst_prefix_dir"; then 5718775e7de9Smrg case $libdir in 5719775e7de9Smrg [\\/]*) 5720775e7de9Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 5721775e7de9Smrg ;; 5722775e7de9Smrg esac 5723775e7de9Smrg fi 5724775e7de9Smrg add="-l$name" 5725775e7de9Smrg elif test "$hardcode_shlibpath_var" = yes; then 5726775e7de9Smrg add_shlibpath="$dir" 5727775e7de9Smrg add="-l$name" 5728775e7de9Smrg else 5729775e7de9Smrg lib_linked=no 5730775e7de9Smrg fi 5731775e7de9Smrg ;; 5732775e7de9Smrg *) lib_linked=no ;; 5733775e7de9Smrg esac 5734775e7de9Smrg 5735775e7de9Smrg if test "$lib_linked" != yes; then 5736775e7de9Smrg func_fatal_configuration "unsupported hardcode properties" 5737775e7de9Smrg fi 5738775e7de9Smrg 5739775e7de9Smrg if test -n "$add_shlibpath"; then 5740775e7de9Smrg case :$compile_shlibpath: in 5741775e7de9Smrg *":$add_shlibpath:"*) ;; 5742775e7de9Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 5743775e7de9Smrg esac 5744775e7de9Smrg fi 5745775e7de9Smrg if test "$linkmode" = prog; then 5746775e7de9Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 5747775e7de9Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 5748775e7de9Smrg else 5749775e7de9Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 5750775e7de9Smrg test -n "$add" && deplibs="$add $deplibs" 5751775e7de9Smrg if test "$hardcode_direct" != yes && 5752775e7de9Smrg test "$hardcode_minus_L" != yes && 5753775e7de9Smrg test "$hardcode_shlibpath_var" = yes; then 5754775e7de9Smrg case :$finalize_shlibpath: in 5755775e7de9Smrg *":$libdir:"*) ;; 5756775e7de9Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5757775e7de9Smrg esac 5758775e7de9Smrg fi 5759775e7de9Smrg fi 5760775e7de9Smrg fi 5761775e7de9Smrg 5762775e7de9Smrg if test "$linkmode" = prog || test "$mode" = relink; then 5763775e7de9Smrg add_shlibpath= 5764775e7de9Smrg add_dir= 5765775e7de9Smrg add= 5766775e7de9Smrg # Finalize command for both is simple: just hardcode it. 5767775e7de9Smrg if test "$hardcode_direct" = yes && 5768775e7de9Smrg test "$hardcode_direct_absolute" = no; then 5769775e7de9Smrg add="$libdir/$linklib" 5770775e7de9Smrg elif test "$hardcode_minus_L" = yes; then 5771775e7de9Smrg add_dir="-L$libdir" 5772775e7de9Smrg add="-l$name" 5773775e7de9Smrg elif test "$hardcode_shlibpath_var" = yes; then 5774775e7de9Smrg case :$finalize_shlibpath: in 5775775e7de9Smrg *":$libdir:"*) ;; 5776775e7de9Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5777775e7de9Smrg esac 5778775e7de9Smrg add="-l$name" 5779775e7de9Smrg elif test "$hardcode_automatic" = yes; then 5780775e7de9Smrg if test -n "$inst_prefix_dir" && 5781775e7de9Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 5782775e7de9Smrg add="$inst_prefix_dir$libdir/$linklib" 5783775e7de9Smrg else 5784775e7de9Smrg add="$libdir/$linklib" 5785775e7de9Smrg fi 5786775e7de9Smrg else 5787775e7de9Smrg # We cannot seem to hardcode it, guess we'll fake it. 5788775e7de9Smrg add_dir="-L$libdir" 5789775e7de9Smrg # Try looking first in the location we're being installed to. 5790775e7de9Smrg if test -n "$inst_prefix_dir"; then 5791775e7de9Smrg case $libdir in 5792775e7de9Smrg [\\/]*) 5793775e7de9Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 5794775e7de9Smrg ;; 5795775e7de9Smrg esac 5796775e7de9Smrg fi 5797775e7de9Smrg add="-l$name" 5798775e7de9Smrg fi 5799775e7de9Smrg 5800775e7de9Smrg if test "$linkmode" = prog; then 5801775e7de9Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 5802775e7de9Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 5803775e7de9Smrg else 5804775e7de9Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 5805775e7de9Smrg test -n "$add" && deplibs="$add $deplibs" 5806775e7de9Smrg fi 5807775e7de9Smrg fi 5808775e7de9Smrg elif test "$linkmode" = prog; then 5809775e7de9Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 5810775e7de9Smrg # is not unsupported. This is valid on all known static and 5811775e7de9Smrg # shared platforms. 5812775e7de9Smrg if test "$hardcode_direct" != unsupported; then 5813775e7de9Smrg test -n "$old_library" && linklib="$old_library" 5814775e7de9Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 5815775e7de9Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 5816775e7de9Smrg else 5817775e7de9Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 5818775e7de9Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 5819775e7de9Smrg fi 5820775e7de9Smrg elif test "$build_libtool_libs" = yes; then 5821775e7de9Smrg # Not a shared library 5822775e7de9Smrg if test "$deplibs_check_method" != pass_all; then 5823775e7de9Smrg # We're trying link a shared library against a static one 5824775e7de9Smrg # but the system doesn't support it. 5825775e7de9Smrg 5826775e7de9Smrg # Just print a warning and add the library to dependency_libs so 5827775e7de9Smrg # that the program can be linked against the static library. 5828775e7de9Smrg $ECHO 5829775e7de9Smrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 5830775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 5831775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 5832775e7de9Smrg $ECHO "*** shared version of the library, which you do not appear to have." 5833775e7de9Smrg if test "$module" = yes; then 5834775e7de9Smrg $ECHO "*** But as you try to build a module library, libtool will still create " 5835775e7de9Smrg $ECHO "*** a static module, that should work as long as the dlopening application" 5836775e7de9Smrg $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 5837775e7de9Smrg if test -z "$global_symbol_pipe"; then 5838775e7de9Smrg $ECHO 5839775e7de9Smrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 5840775e7de9Smrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 5841775e7de9Smrg $ECHO "*** not find such a program. So, this module is probably useless." 5842775e7de9Smrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 5843775e7de9Smrg fi 5844775e7de9Smrg if test "$build_old_libs" = no; then 5845775e7de9Smrg build_libtool_libs=module 5846775e7de9Smrg build_old_libs=yes 5847775e7de9Smrg else 5848775e7de9Smrg build_libtool_libs=no 5849775e7de9Smrg fi 5850775e7de9Smrg fi 5851775e7de9Smrg else 5852775e7de9Smrg deplibs="$dir/$old_library $deplibs" 5853775e7de9Smrg link_static=yes 5854775e7de9Smrg fi 5855775e7de9Smrg fi # link shared/static library? 5856775e7de9Smrg 5857775e7de9Smrg if test "$linkmode" = lib; then 5858775e7de9Smrg if test -n "$dependency_libs" && 5859775e7de9Smrg { test "$hardcode_into_libs" != yes || 5860775e7de9Smrg test "$build_old_libs" = yes || 5861775e7de9Smrg test "$link_static" = yes; }; then 5862775e7de9Smrg # Extract -R from dependency_libs 5863775e7de9Smrg temp_deplibs= 5864775e7de9Smrg for libdir in $dependency_libs; do 5865775e7de9Smrg case $libdir in 5866775e7de9Smrg -R*) func_stripname '-R' '' "$libdir" 5867775e7de9Smrg temp_xrpath=$func_stripname_result 5868775e7de9Smrg case " $xrpath " in 5869775e7de9Smrg *" $temp_xrpath "*) ;; 5870775e7de9Smrg *) xrpath="$xrpath $temp_xrpath";; 5871775e7de9Smrg esac;; 5872775e7de9Smrg *) temp_deplibs="$temp_deplibs $libdir";; 5873775e7de9Smrg esac 5874775e7de9Smrg done 5875775e7de9Smrg dependency_libs="$temp_deplibs" 5876775e7de9Smrg fi 5877775e7de9Smrg 5878775e7de9Smrg newlib_search_path="$newlib_search_path $absdir" 5879775e7de9Smrg # Link against this library 5880775e7de9Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 5881775e7de9Smrg # ... and its dependency_libs 5882775e7de9Smrg tmp_libs= 5883775e7de9Smrg for deplib in $dependency_libs; do 5884775e7de9Smrg newdependency_libs="$deplib $newdependency_libs" 5885775e7de9Smrg if $opt_duplicate_deps ; then 5886775e7de9Smrg case "$tmp_libs " in 5887775e7de9Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5888775e7de9Smrg esac 5889775e7de9Smrg fi 5890775e7de9Smrg tmp_libs="$tmp_libs $deplib" 5891775e7de9Smrg done 5892775e7de9Smrg 5893775e7de9Smrg if test "$link_all_deplibs" != no; then 5894775e7de9Smrg # Add the search paths of all dependency libraries 5895775e7de9Smrg for deplib in $dependency_libs; do 5896775e7de9Smrg case $deplib in 5897775e7de9Smrg -L*) path="$deplib" ;; 5898775e7de9Smrg *.la) 5899775e7de9Smrg func_dirname "$deplib" "" "." 5900775e7de9Smrg dir="$func_dirname_result" 5901775e7de9Smrg # We need an absolute path. 5902775e7de9Smrg case $dir in 5903775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 5904775e7de9Smrg *) 5905775e7de9Smrg absdir=`cd "$dir" && pwd` 5906775e7de9Smrg if test -z "$absdir"; then 5907775e7de9Smrg func_warning "cannot determine absolute directory name of \`$dir'" 5908775e7de9Smrg absdir="$dir" 5909775e7de9Smrg fi 5910775e7de9Smrg ;; 5911775e7de9Smrg esac 5912775e7de9Smrg if $GREP "^installed=no" $deplib > /dev/null; then 5913775e7de9Smrg case $host in 5914775e7de9Smrg *-*-darwin*) 5915775e7de9Smrg depdepl= 5916775e7de9Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 5917775e7de9Smrg if test -n "$deplibrary_names" ; then 5918775e7de9Smrg for tmp in $deplibrary_names ; do 5919775e7de9Smrg depdepl=$tmp 5920775e7de9Smrg done 5921775e7de9Smrg if test -f "$absdir/$objdir/$depdepl" ; then 5922775e7de9Smrg depdepl="$absdir/$objdir/$depdepl" 5923775e7de9Smrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5924775e7de9Smrg if test -z "$darwin_install_name"; then 5925775e7de9Smrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5926775e7de9Smrg fi 5927775e7de9Smrg compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 5928775e7de9Smrg linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 5929775e7de9Smrg path= 5930775e7de9Smrg fi 5931775e7de9Smrg fi 5932775e7de9Smrg ;; 5933775e7de9Smrg *) 5934775e7de9Smrg path="-L$absdir/$objdir" 5935775e7de9Smrg ;; 5936775e7de9Smrg esac 5937775e7de9Smrg else 5938775e7de9Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5939775e7de9Smrg test -z "$libdir" && \ 5940775e7de9Smrg func_fatal_error "\`$deplib' is not a valid libtool archive" 5941775e7de9Smrg test "$absdir" != "$libdir" && \ 5942775e7de9Smrg func_warning "\`$deplib' seems to be moved" 5943775e7de9Smrg 5944775e7de9Smrg path="-L$absdir" 5945775e7de9Smrg fi 5946775e7de9Smrg ;; 5947775e7de9Smrg esac 5948775e7de9Smrg case " $deplibs " in 5949775e7de9Smrg *" $path "*) ;; 5950775e7de9Smrg *) deplibs="$path $deplibs" ;; 5951775e7de9Smrg esac 5952775e7de9Smrg done 5953775e7de9Smrg fi # link_all_deplibs != no 5954775e7de9Smrg fi # linkmode = lib 5955775e7de9Smrg done # for deplib in $libs 5956775e7de9Smrg if test "$pass" = link; then 5957775e7de9Smrg if test "$linkmode" = "prog"; then 5958775e7de9Smrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 5959775e7de9Smrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 5960775e7de9Smrg else 5961775e7de9Smrg compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 5962775e7de9Smrg fi 5963775e7de9Smrg fi 5964775e7de9Smrg dependency_libs="$newdependency_libs" 5965775e7de9Smrg if test "$pass" = dlpreopen; then 5966775e7de9Smrg # Link the dlpreopened libraries before other libraries 5967775e7de9Smrg for deplib in $save_deplibs; do 5968775e7de9Smrg deplibs="$deplib $deplibs" 5969775e7de9Smrg done 5970775e7de9Smrg fi 5971775e7de9Smrg if test "$pass" != dlopen; then 5972775e7de9Smrg if test "$pass" != conv; then 5973775e7de9Smrg # Make sure lib_search_path contains only unique directories. 5974775e7de9Smrg lib_search_path= 5975775e7de9Smrg for dir in $newlib_search_path; do 5976775e7de9Smrg case "$lib_search_path " in 5977775e7de9Smrg *" $dir "*) ;; 5978775e7de9Smrg *) lib_search_path="$lib_search_path $dir" ;; 5979775e7de9Smrg esac 5980775e7de9Smrg done 5981775e7de9Smrg newlib_search_path= 5982775e7de9Smrg fi 5983775e7de9Smrg 5984775e7de9Smrg if test "$linkmode,$pass" != "prog,link"; then 5985775e7de9Smrg vars="deplibs" 5986775e7de9Smrg else 5987775e7de9Smrg vars="compile_deplibs finalize_deplibs" 5988775e7de9Smrg fi 5989775e7de9Smrg for var in $vars dependency_libs; do 5990775e7de9Smrg # Add libraries to $var in reverse order 5991775e7de9Smrg eval tmp_libs=\"\$$var\" 5992775e7de9Smrg new_libs= 5993775e7de9Smrg for deplib in $tmp_libs; do 5994775e7de9Smrg # FIXME: Pedantically, this is the right thing to do, so 5995775e7de9Smrg # that some nasty dependency loop isn't accidentally 5996775e7de9Smrg # broken: 5997775e7de9Smrg #new_libs="$deplib $new_libs" 5998775e7de9Smrg # Pragmatically, this seems to cause very few problems in 5999775e7de9Smrg # practice: 6000775e7de9Smrg case $deplib in 6001775e7de9Smrg -L*) new_libs="$deplib $new_libs" ;; 6002775e7de9Smrg -R*) ;; 6003775e7de9Smrg *) 6004775e7de9Smrg # And here is the reason: when a library appears more 6005775e7de9Smrg # than once as an explicit dependence of a library, or 6006775e7de9Smrg # is implicitly linked in more than once by the 6007775e7de9Smrg # compiler, it is considered special, and multiple 6008775e7de9Smrg # occurrences thereof are not removed. Compare this 6009775e7de9Smrg # with having the same library being listed as a 6010775e7de9Smrg # dependency of multiple other libraries: in this case, 6011775e7de9Smrg # we know (pedantically, we assume) the library does not 6012775e7de9Smrg # need to be listed more than once, so we keep only the 6013775e7de9Smrg # last copy. This is not always right, but it is rare 6014775e7de9Smrg # enough that we require users that really mean to play 6015775e7de9Smrg # such unportable linking tricks to link the library 6016775e7de9Smrg # using -Wl,-lname, so that libtool does not consider it 6017775e7de9Smrg # for duplicate removal. 6018775e7de9Smrg case " $specialdeplibs " in 6019775e7de9Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 6020775e7de9Smrg *) 6021775e7de9Smrg case " $new_libs " in 6022775e7de9Smrg *" $deplib "*) ;; 6023775e7de9Smrg *) new_libs="$deplib $new_libs" ;; 6024775e7de9Smrg esac 6025775e7de9Smrg ;; 6026775e7de9Smrg esac 6027775e7de9Smrg ;; 6028775e7de9Smrg esac 6029775e7de9Smrg done 6030775e7de9Smrg tmp_libs= 6031775e7de9Smrg for deplib in $new_libs; do 6032775e7de9Smrg case $deplib in 6033775e7de9Smrg -L*) 6034775e7de9Smrg case " $tmp_libs " in 6035775e7de9Smrg *" $deplib "*) ;; 6036775e7de9Smrg *) tmp_libs="$tmp_libs $deplib" ;; 6037775e7de9Smrg esac 6038775e7de9Smrg ;; 6039775e7de9Smrg *) tmp_libs="$tmp_libs $deplib" ;; 6040775e7de9Smrg esac 6041775e7de9Smrg done 6042775e7de9Smrg eval $var=\"$tmp_libs\" 6043775e7de9Smrg done # for var 6044775e7de9Smrg fi 6045775e7de9Smrg # Last step: remove runtime libs from dependency_libs 6046775e7de9Smrg # (they stay in deplibs) 6047775e7de9Smrg tmp_libs= 6048775e7de9Smrg for i in $dependency_libs ; do 6049775e7de9Smrg case " $predeps $postdeps $compiler_lib_search_path " in 6050775e7de9Smrg *" $i "*) 6051775e7de9Smrg i="" 6052775e7de9Smrg ;; 6053775e7de9Smrg esac 6054775e7de9Smrg if test -n "$i" ; then 6055775e7de9Smrg tmp_libs="$tmp_libs $i" 6056775e7de9Smrg fi 6057775e7de9Smrg done 6058775e7de9Smrg dependency_libs=$tmp_libs 6059775e7de9Smrg done # for pass 6060775e7de9Smrg if test "$linkmode" = prog; then 6061775e7de9Smrg dlfiles="$newdlfiles" 6062775e7de9Smrg fi 6063775e7de9Smrg if test "$linkmode" = prog || test "$linkmode" = lib; then 6064775e7de9Smrg dlprefiles="$newdlprefiles" 6065775e7de9Smrg fi 6066775e7de9Smrg 6067775e7de9Smrg case $linkmode in 6068775e7de9Smrg oldlib) 6069775e7de9Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 6070775e7de9Smrg func_warning "\`-dlopen' is ignored for archives" 6071775e7de9Smrg fi 6072775e7de9Smrg 6073775e7de9Smrg case " $deplibs" in 6074775e7de9Smrg *\ -l* | *\ -L*) 6075775e7de9Smrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 6076775e7de9Smrg esac 6077775e7de9Smrg 6078775e7de9Smrg test -n "$rpath" && \ 6079775e7de9Smrg func_warning "\`-rpath' is ignored for archives" 6080775e7de9Smrg 6081775e7de9Smrg test -n "$xrpath" && \ 6082775e7de9Smrg func_warning "\`-R' is ignored for archives" 6083775e7de9Smrg 6084775e7de9Smrg test -n "$vinfo" && \ 6085775e7de9Smrg func_warning "\`-version-info/-version-number' is ignored for archives" 6086775e7de9Smrg 6087775e7de9Smrg test -n "$release" && \ 6088775e7de9Smrg func_warning "\`-release' is ignored for archives" 6089775e7de9Smrg 6090775e7de9Smrg test -n "$export_symbols$export_symbols_regex" && \ 6091775e7de9Smrg func_warning "\`-export-symbols' is ignored for archives" 6092775e7de9Smrg 6093775e7de9Smrg # Now set the variables for building old libraries. 6094775e7de9Smrg build_libtool_libs=no 6095775e7de9Smrg oldlibs="$output" 6096775e7de9Smrg objs="$objs$old_deplibs" 6097775e7de9Smrg ;; 6098775e7de9Smrg 6099775e7de9Smrg lib) 6100775e7de9Smrg # Make sure we only generate libraries of the form `libNAME.la'. 6101775e7de9Smrg case $outputname in 6102775e7de9Smrg lib*) 6103775e7de9Smrg func_stripname 'lib' '.la' "$outputname" 6104775e7de9Smrg name=$func_stripname_result 6105775e7de9Smrg eval shared_ext=\"$shrext_cmds\" 6106775e7de9Smrg eval libname=\"$libname_spec\" 6107775e7de9Smrg ;; 6108775e7de9Smrg *) 6109775e7de9Smrg test "$module" = no && \ 6110775e7de9Smrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 6111775e7de9Smrg 6112775e7de9Smrg if test "$need_lib_prefix" != no; then 6113775e7de9Smrg # Add the "lib" prefix for modules if required 6114775e7de9Smrg func_stripname '' '.la' "$outputname" 6115775e7de9Smrg name=$func_stripname_result 6116775e7de9Smrg eval shared_ext=\"$shrext_cmds\" 6117775e7de9Smrg eval libname=\"$libname_spec\" 6118775e7de9Smrg else 6119775e7de9Smrg func_stripname '' '.la' "$outputname" 6120775e7de9Smrg libname=$func_stripname_result 6121775e7de9Smrg fi 6122775e7de9Smrg ;; 6123775e7de9Smrg esac 6124775e7de9Smrg 6125775e7de9Smrg if test -n "$objs"; then 6126775e7de9Smrg if test "$deplibs_check_method" != pass_all; then 6127775e7de9Smrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 6128775e7de9Smrg else 6129775e7de9Smrg $ECHO 6130775e7de9Smrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 6131775e7de9Smrg $ECHO "*** objects $objs is not portable!" 6132775e7de9Smrg libobjs="$libobjs $objs" 6133775e7de9Smrg fi 6134775e7de9Smrg fi 6135775e7de9Smrg 6136775e7de9Smrg test "$dlself" != no && \ 6137775e7de9Smrg func_warning "\`-dlopen self' is ignored for libtool libraries" 6138775e7de9Smrg 6139775e7de9Smrg set dummy $rpath 6140775e7de9Smrg shift 6141775e7de9Smrg test "$#" -gt 1 && \ 6142775e7de9Smrg func_warning "ignoring multiple \`-rpath's for a libtool library" 6143775e7de9Smrg 6144775e7de9Smrg install_libdir="$1" 6145775e7de9Smrg 6146775e7de9Smrg oldlibs= 6147775e7de9Smrg if test -z "$rpath"; then 6148775e7de9Smrg if test "$build_libtool_libs" = yes; then 6149775e7de9Smrg # Building a libtool convenience library. 6150775e7de9Smrg # Some compilers have problems with a `.al' extension so 6151775e7de9Smrg # convenience libraries should have the same extension an 6152775e7de9Smrg # archive normally would. 6153775e7de9Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 6154775e7de9Smrg build_libtool_libs=convenience 6155775e7de9Smrg build_old_libs=yes 6156775e7de9Smrg fi 6157775e7de9Smrg 6158775e7de9Smrg test -n "$vinfo" && \ 6159775e7de9Smrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 6160775e7de9Smrg 6161775e7de9Smrg test -n "$release" && \ 6162775e7de9Smrg func_warning "\`-release' is ignored for convenience libraries" 6163775e7de9Smrg else 6164775e7de9Smrg 6165775e7de9Smrg # Parse the version information argument. 6166775e7de9Smrg save_ifs="$IFS"; IFS=':' 6167775e7de9Smrg set dummy $vinfo 0 0 0 6168775e7de9Smrg shift 6169775e7de9Smrg IFS="$save_ifs" 6170775e7de9Smrg 6171775e7de9Smrg test -n "$7" && \ 6172775e7de9Smrg func_fatal_help "too many parameters to \`-version-info'" 6173775e7de9Smrg 6174775e7de9Smrg # convert absolute version numbers to libtool ages 6175775e7de9Smrg # this retains compatibility with .la files and attempts 6176775e7de9Smrg # to make the code below a bit more comprehensible 6177775e7de9Smrg 6178775e7de9Smrg case $vinfo_number in 6179775e7de9Smrg yes) 6180775e7de9Smrg number_major="$1" 6181775e7de9Smrg number_minor="$2" 6182775e7de9Smrg number_revision="$3" 6183775e7de9Smrg # 6184775e7de9Smrg # There are really only two kinds -- those that 6185775e7de9Smrg # use the current revision as the major version 6186775e7de9Smrg # and those that subtract age and use age as 6187775e7de9Smrg # a minor version. But, then there is irix 6188775e7de9Smrg # which has an extra 1 added just for fun 6189775e7de9Smrg # 6190775e7de9Smrg case $version_type in 6191775e7de9Smrg darwin|linux|osf|windows|none) 6192775e7de9Smrg func_arith $number_major + $number_minor 6193775e7de9Smrg current=$func_arith_result 6194775e7de9Smrg age="$number_minor" 6195775e7de9Smrg revision="$number_revision" 6196775e7de9Smrg ;; 6197775e7de9Smrg freebsd-aout|freebsd-elf|sunos) 6198775e7de9Smrg current="$number_major" 6199775e7de9Smrg revision="$number_minor" 6200775e7de9Smrg age="0" 6201775e7de9Smrg ;; 6202775e7de9Smrg irix|nonstopux) 6203775e7de9Smrg func_arith $number_major + $number_minor 6204775e7de9Smrg current=$func_arith_result 6205775e7de9Smrg age="$number_minor" 6206775e7de9Smrg revision="$number_minor" 6207775e7de9Smrg lt_irix_increment=no 6208775e7de9Smrg ;; 6209775e7de9Smrg esac 6210775e7de9Smrg ;; 6211775e7de9Smrg no) 6212775e7de9Smrg current="$1" 6213775e7de9Smrg revision="$2" 6214775e7de9Smrg age="$3" 6215775e7de9Smrg ;; 6216775e7de9Smrg esac 6217775e7de9Smrg 6218775e7de9Smrg # Check that each of the things are valid numbers. 6219775e7de9Smrg case $current in 6220775e7de9Smrg 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]) ;; 6221775e7de9Smrg *) 6222775e7de9Smrg func_error "CURRENT \`$current' must be a nonnegative integer" 6223775e7de9Smrg func_fatal_error "\`$vinfo' is not valid version information" 6224775e7de9Smrg ;; 6225775e7de9Smrg esac 6226775e7de9Smrg 6227775e7de9Smrg case $revision in 6228775e7de9Smrg 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]) ;; 6229775e7de9Smrg *) 6230775e7de9Smrg func_error "REVISION \`$revision' must be a nonnegative integer" 6231775e7de9Smrg func_fatal_error "\`$vinfo' is not valid version information" 6232775e7de9Smrg ;; 6233775e7de9Smrg esac 6234775e7de9Smrg 6235775e7de9Smrg case $age in 6236775e7de9Smrg 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]) ;; 6237775e7de9Smrg *) 6238775e7de9Smrg func_error "AGE \`$age' must be a nonnegative integer" 6239775e7de9Smrg func_fatal_error "\`$vinfo' is not valid version information" 6240775e7de9Smrg ;; 6241775e7de9Smrg esac 6242775e7de9Smrg 6243775e7de9Smrg if test "$age" -gt "$current"; then 6244775e7de9Smrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 6245775e7de9Smrg func_fatal_error "\`$vinfo' is not valid version information" 6246775e7de9Smrg fi 6247775e7de9Smrg 6248775e7de9Smrg # Calculate the version variables. 6249775e7de9Smrg major= 6250775e7de9Smrg versuffix= 6251775e7de9Smrg verstring= 6252775e7de9Smrg case $version_type in 6253775e7de9Smrg none) ;; 6254775e7de9Smrg 6255775e7de9Smrg darwin) 6256775e7de9Smrg # Like Linux, but with the current version available in 6257775e7de9Smrg # verstring for coding it into the library header 6258775e7de9Smrg func_arith $current - $age 6259775e7de9Smrg major=.$func_arith_result 6260775e7de9Smrg versuffix="$major.$age.$revision" 6261775e7de9Smrg # Darwin ld doesn't like 0 for these options... 6262775e7de9Smrg func_arith $current + 1 6263775e7de9Smrg minor_current=$func_arith_result 6264775e7de9Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 6265775e7de9Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 6266775e7de9Smrg ;; 6267775e7de9Smrg 6268775e7de9Smrg freebsd-aout) 6269775e7de9Smrg major=".$current" 6270775e7de9Smrg versuffix=".$current.$revision"; 6271775e7de9Smrg ;; 6272775e7de9Smrg 6273775e7de9Smrg freebsd-elf) 6274775e7de9Smrg major=".$current" 6275775e7de9Smrg versuffix=".$current" 6276775e7de9Smrg ;; 6277775e7de9Smrg 6278775e7de9Smrg irix | nonstopux) 6279775e7de9Smrg if test "X$lt_irix_increment" = "Xno"; then 6280775e7de9Smrg func_arith $current - $age 6281775e7de9Smrg else 6282775e7de9Smrg func_arith $current - $age + 1 6283775e7de9Smrg fi 6284775e7de9Smrg major=$func_arith_result 6285775e7de9Smrg 6286775e7de9Smrg case $version_type in 6287775e7de9Smrg nonstopux) verstring_prefix=nonstopux ;; 6288775e7de9Smrg *) verstring_prefix=sgi ;; 6289775e7de9Smrg esac 6290775e7de9Smrg verstring="$verstring_prefix$major.$revision" 6291775e7de9Smrg 6292775e7de9Smrg # Add in all the interfaces that we are compatible with. 6293775e7de9Smrg loop=$revision 6294775e7de9Smrg while test "$loop" -ne 0; do 6295775e7de9Smrg func_arith $revision - $loop 6296775e7de9Smrg iface=$func_arith_result 6297775e7de9Smrg func_arith $loop - 1 6298775e7de9Smrg loop=$func_arith_result 6299775e7de9Smrg verstring="$verstring_prefix$major.$iface:$verstring" 6300775e7de9Smrg done 6301775e7de9Smrg 6302775e7de9Smrg # Before this point, $major must not contain `.'. 6303775e7de9Smrg major=.$major 6304775e7de9Smrg versuffix="$major.$revision" 6305775e7de9Smrg ;; 6306775e7de9Smrg 6307775e7de9Smrg linux) 6308775e7de9Smrg func_arith $current - $age 6309775e7de9Smrg major=.$func_arith_result 6310775e7de9Smrg versuffix="$major.$age.$revision" 6311775e7de9Smrg ;; 6312775e7de9Smrg 6313775e7de9Smrg osf) 6314775e7de9Smrg func_arith $current - $age 6315775e7de9Smrg major=.$func_arith_result 6316775e7de9Smrg versuffix=".$current.$age.$revision" 6317775e7de9Smrg verstring="$current.$age.$revision" 6318775e7de9Smrg 6319775e7de9Smrg # Add in all the interfaces that we are compatible with. 6320775e7de9Smrg loop=$age 6321775e7de9Smrg while test "$loop" -ne 0; do 6322775e7de9Smrg func_arith $current - $loop 6323775e7de9Smrg iface=$func_arith_result 6324775e7de9Smrg func_arith $loop - 1 6325775e7de9Smrg loop=$func_arith_result 6326775e7de9Smrg verstring="$verstring:${iface}.0" 6327775e7de9Smrg done 6328775e7de9Smrg 6329775e7de9Smrg # Make executables depend on our current version. 6330775e7de9Smrg verstring="$verstring:${current}.0" 6331775e7de9Smrg ;; 6332775e7de9Smrg 6333775e7de9Smrg qnx) 6334775e7de9Smrg major=".$current" 6335775e7de9Smrg versuffix=".$current" 6336775e7de9Smrg ;; 6337775e7de9Smrg 6338775e7de9Smrg sunos) 6339775e7de9Smrg major=".$current" 6340775e7de9Smrg versuffix=".$current.$revision" 6341775e7de9Smrg ;; 6342775e7de9Smrg 6343775e7de9Smrg windows) 6344775e7de9Smrg # Use '-' rather than '.', since we only want one 6345775e7de9Smrg # extension on DOS 8.3 filesystems. 6346775e7de9Smrg func_arith $current - $age 6347775e7de9Smrg major=$func_arith_result 6348775e7de9Smrg versuffix="-$major" 6349775e7de9Smrg ;; 6350775e7de9Smrg 6351775e7de9Smrg *) 6352775e7de9Smrg func_fatal_configuration "unknown library version type \`$version_type'" 6353775e7de9Smrg ;; 6354775e7de9Smrg esac 6355775e7de9Smrg 6356775e7de9Smrg # Clear the version info if we defaulted, and they specified a release. 6357775e7de9Smrg if test -z "$vinfo" && test -n "$release"; then 6358775e7de9Smrg major= 6359775e7de9Smrg case $version_type in 6360775e7de9Smrg darwin) 6361775e7de9Smrg # we can't check for "0.0" in archive_cmds due to quoting 6362775e7de9Smrg # problems, so we reset it completely 6363775e7de9Smrg verstring= 6364775e7de9Smrg ;; 6365775e7de9Smrg *) 6366775e7de9Smrg verstring="0.0" 6367775e7de9Smrg ;; 6368775e7de9Smrg esac 6369775e7de9Smrg if test "$need_version" = no; then 6370775e7de9Smrg versuffix= 6371775e7de9Smrg else 6372775e7de9Smrg versuffix=".0.0" 6373775e7de9Smrg fi 6374775e7de9Smrg fi 6375775e7de9Smrg 6376775e7de9Smrg # Remove version info from name if versioning should be avoided 6377775e7de9Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 6378775e7de9Smrg major= 6379775e7de9Smrg versuffix= 6380775e7de9Smrg verstring="" 6381775e7de9Smrg fi 6382775e7de9Smrg 6383775e7de9Smrg # Check to see if the archive will have undefined symbols. 6384775e7de9Smrg if test "$allow_undefined" = yes; then 6385775e7de9Smrg if test "$allow_undefined_flag" = unsupported; then 6386775e7de9Smrg func_warning "undefined symbols not allowed in $host shared libraries" 6387775e7de9Smrg build_libtool_libs=no 6388775e7de9Smrg build_old_libs=yes 6389775e7de9Smrg fi 6390775e7de9Smrg else 6391775e7de9Smrg # Don't allow undefined symbols. 6392775e7de9Smrg allow_undefined_flag="$no_undefined_flag" 6393775e7de9Smrg fi 6394775e7de9Smrg 6395775e7de9Smrg fi 6396775e7de9Smrg 6397775e7de9Smrg func_generate_dlsyms "$libname" "$libname" "yes" 6398775e7de9Smrg libobjs="$libobjs $symfileobj" 6399775e7de9Smrg test "X$libobjs" = "X " && libobjs= 6400775e7de9Smrg 6401775e7de9Smrg if test "$mode" != relink; then 6402775e7de9Smrg # Remove our outputs, but don't remove object files since they 6403775e7de9Smrg # may have been created when compiling PIC objects. 6404775e7de9Smrg removelist= 6405775e7de9Smrg tempremovelist=`$ECHO "$output_objdir/*"` 6406775e7de9Smrg for p in $tempremovelist; do 6407775e7de9Smrg case $p in 6408775e7de9Smrg *.$objext | *.gcno) 6409775e7de9Smrg ;; 6410775e7de9Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 6411775e7de9Smrg if test "X$precious_files_regex" != "X"; then 6412775e7de9Smrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 6413775e7de9Smrg then 6414775e7de9Smrg continue 6415775e7de9Smrg fi 6416775e7de9Smrg fi 6417775e7de9Smrg removelist="$removelist $p" 6418775e7de9Smrg ;; 6419775e7de9Smrg *) ;; 6420775e7de9Smrg esac 6421775e7de9Smrg done 6422775e7de9Smrg test -n "$removelist" && \ 6423775e7de9Smrg func_show_eval "${RM}r \$removelist" 6424775e7de9Smrg fi 6425775e7de9Smrg 6426775e7de9Smrg # Now set the variables for building old libraries. 6427775e7de9Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 6428775e7de9Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 6429775e7de9Smrg 6430775e7de9Smrg # Transform .lo files to .o files. 6431775e7de9Smrg oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 6432775e7de9Smrg fi 6433775e7de9Smrg 6434775e7de9Smrg # Eliminate all temporary directories. 6435775e7de9Smrg #for path in $notinst_path; do 6436775e7de9Smrg # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 6437775e7de9Smrg # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 6438775e7de9Smrg # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 6439775e7de9Smrg #done 6440775e7de9Smrg 6441775e7de9Smrg if test -n "$xrpath"; then 6442775e7de9Smrg # If the user specified any rpath flags, then add them. 6443775e7de9Smrg temp_xrpath= 6444775e7de9Smrg for libdir in $xrpath; do 6445775e7de9Smrg temp_xrpath="$temp_xrpath -R$libdir" 6446775e7de9Smrg case "$finalize_rpath " in 6447775e7de9Smrg *" $libdir "*) ;; 6448775e7de9Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 6449775e7de9Smrg esac 6450775e7de9Smrg done 6451775e7de9Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 6452775e7de9Smrg dependency_libs="$temp_xrpath $dependency_libs" 6453775e7de9Smrg fi 6454775e7de9Smrg fi 6455775e7de9Smrg 6456775e7de9Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 6457775e7de9Smrg old_dlfiles="$dlfiles" 6458775e7de9Smrg dlfiles= 6459775e7de9Smrg for lib in $old_dlfiles; do 6460775e7de9Smrg case " $dlprefiles $dlfiles " in 6461775e7de9Smrg *" $lib "*) ;; 6462775e7de9Smrg *) dlfiles="$dlfiles $lib" ;; 6463775e7de9Smrg esac 6464775e7de9Smrg done 6465775e7de9Smrg 6466775e7de9Smrg # Make sure dlprefiles contains only unique files 6467775e7de9Smrg old_dlprefiles="$dlprefiles" 6468775e7de9Smrg dlprefiles= 6469775e7de9Smrg for lib in $old_dlprefiles; do 6470775e7de9Smrg case "$dlprefiles " in 6471775e7de9Smrg *" $lib "*) ;; 6472775e7de9Smrg *) dlprefiles="$dlprefiles $lib" ;; 6473775e7de9Smrg esac 6474775e7de9Smrg done 6475775e7de9Smrg 6476775e7de9Smrg if test "$build_libtool_libs" = yes; then 6477775e7de9Smrg if test -n "$rpath"; then 6478775e7de9Smrg case $host in 6479775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 6480775e7de9Smrg # these systems don't actually have a c library (as such)! 6481775e7de9Smrg ;; 6482775e7de9Smrg *-*-rhapsody* | *-*-darwin1.[012]) 6483775e7de9Smrg # Rhapsody C library is in the System framework 6484775e7de9Smrg deplibs="$deplibs System.ltframework" 6485775e7de9Smrg ;; 6486775e7de9Smrg *-*-netbsd*) 6487775e7de9Smrg # Don't link with libc until the a.out ld.so is fixed. 6488775e7de9Smrg ;; 6489775e7de9Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 6490775e7de9Smrg # Do not include libc due to us having libc/libc_r. 6491775e7de9Smrg ;; 6492775e7de9Smrg *-*-sco3.2v5* | *-*-sco5v6*) 6493775e7de9Smrg # Causes problems with __ctype 6494775e7de9Smrg ;; 6495775e7de9Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 6496775e7de9Smrg # Compiler inserts libc in the correct place for threads to work 6497775e7de9Smrg ;; 6498775e7de9Smrg *) 6499775e7de9Smrg # Add libc to deplibs on all other systems if necessary. 6500775e7de9Smrg if test "$build_libtool_need_lc" = "yes"; then 6501775e7de9Smrg deplibs="$deplibs -lc" 6502775e7de9Smrg fi 6503775e7de9Smrg ;; 6504775e7de9Smrg esac 6505775e7de9Smrg fi 6506775e7de9Smrg 6507775e7de9Smrg # Transform deplibs into only deplibs that can be linked in shared. 6508775e7de9Smrg name_save=$name 6509775e7de9Smrg libname_save=$libname 6510775e7de9Smrg release_save=$release 6511775e7de9Smrg versuffix_save=$versuffix 6512775e7de9Smrg major_save=$major 6513775e7de9Smrg # I'm not sure if I'm treating the release correctly. I think 6514775e7de9Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 6515775e7de9Smrg # add it in twice. Is that correct? 6516775e7de9Smrg release="" 6517775e7de9Smrg versuffix="" 6518775e7de9Smrg major="" 6519775e7de9Smrg newdeplibs= 6520775e7de9Smrg droppeddeps=no 6521775e7de9Smrg case $deplibs_check_method in 6522775e7de9Smrg pass_all) 6523775e7de9Smrg # Don't check for shared/static. Everything works. 6524775e7de9Smrg # This might be a little naive. We might want to check 6525775e7de9Smrg # whether the library exists or not. But this is on 6526775e7de9Smrg # osf3 & osf4 and I'm not really sure... Just 6527775e7de9Smrg # implementing what was already the behavior. 6528775e7de9Smrg newdeplibs=$deplibs 6529775e7de9Smrg ;; 6530775e7de9Smrg test_compile) 6531775e7de9Smrg # This code stresses the "libraries are programs" paradigm to its 6532775e7de9Smrg # limits. Maybe even breaks it. We compile a program, linking it 6533775e7de9Smrg # against the deplibs as a proxy for the library. Then we can check 6534775e7de9Smrg # whether they linked in statically or dynamically with ldd. 6535775e7de9Smrg $opt_dry_run || $RM conftest.c 6536775e7de9Smrg cat > conftest.c <<EOF 6537775e7de9Smrg int main() { return 0; } 6538775e7de9SmrgEOF 6539775e7de9Smrg $opt_dry_run || $RM conftest 6540775e7de9Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 6541775e7de9Smrg ldd_output=`ldd conftest` 6542775e7de9Smrg for i in $deplibs; do 6543775e7de9Smrg case $i in 6544775e7de9Smrg -l*) 6545775e7de9Smrg func_stripname -l '' "$i" 6546775e7de9Smrg name=$func_stripname_result 6547775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6548775e7de9Smrg case " $predeps $postdeps " in 6549775e7de9Smrg *" $i "*) 6550775e7de9Smrg newdeplibs="$newdeplibs $i" 6551775e7de9Smrg i="" 6552775e7de9Smrg ;; 6553775e7de9Smrg esac 6554775e7de9Smrg fi 6555775e7de9Smrg if test -n "$i" ; then 6556775e7de9Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 6557775e7de9Smrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6558775e7de9Smrg set dummy $deplib_matches; shift 6559775e7de9Smrg deplib_match=$1 6560775e7de9Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6561775e7de9Smrg newdeplibs="$newdeplibs $i" 6562775e7de9Smrg else 6563775e7de9Smrg droppeddeps=yes 6564775e7de9Smrg $ECHO 6565775e7de9Smrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6566775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 6567775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 6568775e7de9Smrg $ECHO "*** shared version of the library, which I believe you do not have" 6569775e7de9Smrg $ECHO "*** because a test_compile did reveal that the linker did not use it for" 6570775e7de9Smrg $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 6571775e7de9Smrg fi 6572775e7de9Smrg fi 6573775e7de9Smrg ;; 6574775e7de9Smrg *) 6575775e7de9Smrg newdeplibs="$newdeplibs $i" 6576775e7de9Smrg ;; 6577775e7de9Smrg esac 6578775e7de9Smrg done 6579775e7de9Smrg else 6580775e7de9Smrg # Error occurred in the first compile. Let's try to salvage 6581775e7de9Smrg # the situation: Compile a separate program for each library. 6582775e7de9Smrg for i in $deplibs; do 6583775e7de9Smrg case $i in 6584775e7de9Smrg -l*) 6585775e7de9Smrg func_stripname -l '' "$i" 6586775e7de9Smrg name=$func_stripname_result 6587775e7de9Smrg $opt_dry_run || $RM conftest 6588775e7de9Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 6589775e7de9Smrg ldd_output=`ldd conftest` 6590775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6591775e7de9Smrg case " $predeps $postdeps " in 6592775e7de9Smrg *" $i "*) 6593775e7de9Smrg newdeplibs="$newdeplibs $i" 6594775e7de9Smrg i="" 6595775e7de9Smrg ;; 6596775e7de9Smrg esac 6597775e7de9Smrg fi 6598775e7de9Smrg if test -n "$i" ; then 6599775e7de9Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 6600775e7de9Smrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6601775e7de9Smrg set dummy $deplib_matches; shift 6602775e7de9Smrg deplib_match=$1 6603775e7de9Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6604775e7de9Smrg newdeplibs="$newdeplibs $i" 6605775e7de9Smrg else 6606775e7de9Smrg droppeddeps=yes 6607775e7de9Smrg $ECHO 6608775e7de9Smrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6609775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 6610775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 6611775e7de9Smrg $ECHO "*** shared version of the library, which you do not appear to have" 6612775e7de9Smrg $ECHO "*** because a test_compile did reveal that the linker did not use this one" 6613775e7de9Smrg $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 6614775e7de9Smrg fi 6615775e7de9Smrg fi 6616775e7de9Smrg else 6617775e7de9Smrg droppeddeps=yes 6618775e7de9Smrg $ECHO 6619775e7de9Smrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 6620775e7de9Smrg $ECHO "*** make it link in! You will probably need to install it or some" 6621775e7de9Smrg $ECHO "*** library that it depends on before this library will be fully" 6622775e7de9Smrg $ECHO "*** functional. Installing it before continuing would be even better." 6623775e7de9Smrg fi 6624775e7de9Smrg ;; 6625775e7de9Smrg *) 6626775e7de9Smrg newdeplibs="$newdeplibs $i" 6627775e7de9Smrg ;; 6628775e7de9Smrg esac 6629775e7de9Smrg done 6630775e7de9Smrg fi 6631775e7de9Smrg ;; 6632775e7de9Smrg file_magic*) 6633775e7de9Smrg set dummy $deplibs_check_method; shift 6634775e7de9Smrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6635775e7de9Smrg for a_deplib in $deplibs; do 6636775e7de9Smrg case $a_deplib in 6637775e7de9Smrg -l*) 6638775e7de9Smrg func_stripname -l '' "$a_deplib" 6639775e7de9Smrg name=$func_stripname_result 6640775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6641775e7de9Smrg case " $predeps $postdeps " in 6642775e7de9Smrg *" $a_deplib "*) 6643775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6644775e7de9Smrg a_deplib="" 6645775e7de9Smrg ;; 6646775e7de9Smrg esac 6647775e7de9Smrg fi 6648775e7de9Smrg if test -n "$a_deplib" ; then 6649775e7de9Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 6650775e7de9Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6651775e7de9Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6652775e7de9Smrg for potent_lib in $potential_libs; do 6653775e7de9Smrg # Follow soft links. 6654775e7de9Smrg if ls -lLd "$potent_lib" 2>/dev/null | 6655775e7de9Smrg $GREP " -> " >/dev/null; then 6656775e7de9Smrg continue 6657775e7de9Smrg fi 6658775e7de9Smrg # The statement above tries to avoid entering an 6659775e7de9Smrg # endless loop below, in case of cyclic links. 6660775e7de9Smrg # We might still enter an endless loop, since a link 6661775e7de9Smrg # loop can be closed while we follow links, 6662775e7de9Smrg # but so what? 6663775e7de9Smrg potlib="$potent_lib" 6664775e7de9Smrg while test -h "$potlib" 2>/dev/null; do 6665775e7de9Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 6666775e7de9Smrg case $potliblink in 6667775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 6668775e7de9Smrg *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 6669775e7de9Smrg esac 6670775e7de9Smrg done 6671775e7de9Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 6672775e7de9Smrg $SED -e 10q | 6673775e7de9Smrg $EGREP "$file_magic_regex" > /dev/null; then 6674775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6675775e7de9Smrg a_deplib="" 6676775e7de9Smrg break 2 6677775e7de9Smrg fi 6678775e7de9Smrg done 6679775e7de9Smrg done 6680775e7de9Smrg fi 6681775e7de9Smrg if test -n "$a_deplib" ; then 6682775e7de9Smrg droppeddeps=yes 6683775e7de9Smrg $ECHO 6684775e7de9Smrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6685775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 6686775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 6687775e7de9Smrg $ECHO "*** shared version of the library, which you do not appear to have" 6688775e7de9Smrg $ECHO "*** because I did check the linker path looking for a file starting" 6689775e7de9Smrg if test -z "$potlib" ; then 6690775e7de9Smrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 6691775e7de9Smrg else 6692775e7de9Smrg $ECHO "*** with $libname and none of the candidates passed a file format test" 6693775e7de9Smrg $ECHO "*** using a file magic. Last file checked: $potlib" 6694775e7de9Smrg fi 6695775e7de9Smrg fi 6696775e7de9Smrg ;; 6697775e7de9Smrg *) 6698775e7de9Smrg # Add a -L argument. 6699775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6700775e7de9Smrg ;; 6701775e7de9Smrg esac 6702775e7de9Smrg done # Gone through all deplibs. 6703775e7de9Smrg ;; 6704775e7de9Smrg match_pattern*) 6705775e7de9Smrg set dummy $deplibs_check_method; shift 6706775e7de9Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6707775e7de9Smrg for a_deplib in $deplibs; do 6708775e7de9Smrg case $a_deplib in 6709775e7de9Smrg -l*) 6710775e7de9Smrg func_stripname -l '' "$a_deplib" 6711775e7de9Smrg name=$func_stripname_result 6712775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6713775e7de9Smrg case " $predeps $postdeps " in 6714775e7de9Smrg *" $a_deplib "*) 6715775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6716775e7de9Smrg a_deplib="" 6717775e7de9Smrg ;; 6718775e7de9Smrg esac 6719775e7de9Smrg fi 6720775e7de9Smrg if test -n "$a_deplib" ; then 6721775e7de9Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 6722775e7de9Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6723775e7de9Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6724775e7de9Smrg for potent_lib in $potential_libs; do 6725775e7de9Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 6726775e7de9Smrg if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 6727775e7de9Smrg $EGREP "$match_pattern_regex" > /dev/null; then 6728775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6729775e7de9Smrg a_deplib="" 6730775e7de9Smrg break 2 6731775e7de9Smrg fi 6732775e7de9Smrg done 6733775e7de9Smrg done 6734775e7de9Smrg fi 6735775e7de9Smrg if test -n "$a_deplib" ; then 6736775e7de9Smrg droppeddeps=yes 6737775e7de9Smrg $ECHO 6738775e7de9Smrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6739775e7de9Smrg $ECHO "*** I have the capability to make that library automatically link in when" 6740775e7de9Smrg $ECHO "*** you link to this library. But I can only do this if you have a" 6741775e7de9Smrg $ECHO "*** shared version of the library, which you do not appear to have" 6742775e7de9Smrg $ECHO "*** because I did check the linker path looking for a file starting" 6743775e7de9Smrg if test -z "$potlib" ; then 6744775e7de9Smrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 6745775e7de9Smrg else 6746775e7de9Smrg $ECHO "*** with $libname and none of the candidates passed a file format test" 6747775e7de9Smrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 6748775e7de9Smrg fi 6749775e7de9Smrg fi 6750775e7de9Smrg ;; 6751775e7de9Smrg *) 6752775e7de9Smrg # Add a -L argument. 6753775e7de9Smrg newdeplibs="$newdeplibs $a_deplib" 6754775e7de9Smrg ;; 6755775e7de9Smrg esac 6756775e7de9Smrg done # Gone through all deplibs. 6757775e7de9Smrg ;; 6758775e7de9Smrg none | unknown | *) 6759775e7de9Smrg newdeplibs="" 6760775e7de9Smrg tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 6761775e7de9Smrg -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 6762775e7de9Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6763775e7de9Smrg for i in $predeps $postdeps ; do 6764775e7de9Smrg # can't use Xsed below, because $i might contain '/' 6765775e7de9Smrg tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 6766775e7de9Smrg done 6767775e7de9Smrg fi 6768775e7de9Smrg if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 6769775e7de9Smrg $GREP . >/dev/null; then 6770775e7de9Smrg $ECHO 6771775e7de9Smrg if test "X$deplibs_check_method" = "Xnone"; then 6772775e7de9Smrg $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 6773775e7de9Smrg else 6774775e7de9Smrg $ECHO "*** Warning: inter-library dependencies are not known to be supported." 6775775e7de9Smrg fi 6776775e7de9Smrg $ECHO "*** All declared inter-library dependencies are being dropped." 6777775e7de9Smrg droppeddeps=yes 6778775e7de9Smrg fi 6779775e7de9Smrg ;; 6780775e7de9Smrg esac 6781775e7de9Smrg versuffix=$versuffix_save 6782775e7de9Smrg major=$major_save 6783775e7de9Smrg release=$release_save 6784775e7de9Smrg libname=$libname_save 6785775e7de9Smrg name=$name_save 6786775e7de9Smrg 6787775e7de9Smrg case $host in 6788775e7de9Smrg *-*-rhapsody* | *-*-darwin1.[012]) 6789775e7de9Smrg # On Rhapsody replace the C library with the System framework 6790775e7de9Smrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 6791775e7de9Smrg ;; 6792775e7de9Smrg esac 6793775e7de9Smrg 6794775e7de9Smrg if test "$droppeddeps" = yes; then 6795775e7de9Smrg if test "$module" = yes; then 6796775e7de9Smrg $ECHO 6797775e7de9Smrg $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 6798775e7de9Smrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 6799775e7de9Smrg $ECHO "*** a static module, that should work as long as the dlopening" 6800775e7de9Smrg $ECHO "*** application is linked with the -dlopen flag." 6801775e7de9Smrg if test -z "$global_symbol_pipe"; then 6802775e7de9Smrg $ECHO 6803775e7de9Smrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 6804775e7de9Smrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 6805775e7de9Smrg $ECHO "*** not find such a program. So, this module is probably useless." 6806775e7de9Smrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 6807775e7de9Smrg fi 6808775e7de9Smrg if test "$build_old_libs" = no; then 6809775e7de9Smrg oldlibs="$output_objdir/$libname.$libext" 6810775e7de9Smrg build_libtool_libs=module 6811775e7de9Smrg build_old_libs=yes 6812775e7de9Smrg else 6813775e7de9Smrg build_libtool_libs=no 6814775e7de9Smrg fi 6815775e7de9Smrg else 6816775e7de9Smrg $ECHO "*** The inter-library dependencies that have been dropped here will be" 6817775e7de9Smrg $ECHO "*** automatically added whenever a program is linked with this library" 6818775e7de9Smrg $ECHO "*** or is declared to -dlopen it." 6819775e7de9Smrg 6820775e7de9Smrg if test "$allow_undefined" = no; then 6821775e7de9Smrg $ECHO 6822775e7de9Smrg $ECHO "*** Since this library must not contain undefined symbols," 6823775e7de9Smrg $ECHO "*** because either the platform does not support them or" 6824775e7de9Smrg $ECHO "*** it was explicitly requested with -no-undefined," 6825775e7de9Smrg $ECHO "*** libtool will only create a static version of it." 6826775e7de9Smrg if test "$build_old_libs" = no; then 6827775e7de9Smrg oldlibs="$output_objdir/$libname.$libext" 6828775e7de9Smrg build_libtool_libs=module 6829775e7de9Smrg build_old_libs=yes 6830775e7de9Smrg else 6831775e7de9Smrg build_libtool_libs=no 6832775e7de9Smrg fi 6833775e7de9Smrg fi 6834775e7de9Smrg fi 6835775e7de9Smrg fi 6836775e7de9Smrg # Done checking deplibs! 6837775e7de9Smrg deplibs=$newdeplibs 6838775e7de9Smrg fi 6839775e7de9Smrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 6840775e7de9Smrg case $host in 6841775e7de9Smrg *-*-darwin*) 6842775e7de9Smrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6843775e7de9Smrg new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6844775e7de9Smrg deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6845775e7de9Smrg ;; 6846775e7de9Smrg esac 6847775e7de9Smrg 6848775e7de9Smrg # move library search paths that coincide with paths to not yet 6849775e7de9Smrg # installed libraries to the beginning of the library search list 6850775e7de9Smrg new_libs= 6851775e7de9Smrg for path in $notinst_path; do 6852775e7de9Smrg case " $new_libs " in 6853775e7de9Smrg *" -L$path/$objdir "*) ;; 6854775e7de9Smrg *) 6855775e7de9Smrg case " $deplibs " in 6856775e7de9Smrg *" -L$path/$objdir "*) 6857775e7de9Smrg new_libs="$new_libs -L$path/$objdir" ;; 6858775e7de9Smrg esac 6859775e7de9Smrg ;; 6860775e7de9Smrg esac 6861775e7de9Smrg done 6862775e7de9Smrg for deplib in $deplibs; do 6863775e7de9Smrg case $deplib in 6864775e7de9Smrg -L*) 6865775e7de9Smrg case " $new_libs " in 6866775e7de9Smrg *" $deplib "*) ;; 6867775e7de9Smrg *) new_libs="$new_libs $deplib" ;; 6868775e7de9Smrg esac 6869775e7de9Smrg ;; 6870775e7de9Smrg *) new_libs="$new_libs $deplib" ;; 6871775e7de9Smrg esac 6872775e7de9Smrg done 6873775e7de9Smrg deplibs="$new_libs" 6874775e7de9Smrg 6875775e7de9Smrg # All the library-specific variables (install_libdir is set above). 6876775e7de9Smrg library_names= 6877775e7de9Smrg old_library= 6878775e7de9Smrg dlname= 6879775e7de9Smrg 6880775e7de9Smrg # Test again, we may have decided not to build it any more 6881775e7de9Smrg if test "$build_libtool_libs" = yes; then 6882775e7de9Smrg if test "$hardcode_into_libs" = yes; then 6883775e7de9Smrg # Hardcode the library paths 6884775e7de9Smrg hardcode_libdirs= 6885775e7de9Smrg dep_rpath= 6886775e7de9Smrg rpath="$finalize_rpath" 6887775e7de9Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 6888775e7de9Smrg for libdir in $rpath; do 6889775e7de9Smrg if test -n "$hardcode_libdir_flag_spec"; then 6890775e7de9Smrg if test -n "$hardcode_libdir_separator"; then 6891775e7de9Smrg if test -z "$hardcode_libdirs"; then 6892775e7de9Smrg hardcode_libdirs="$libdir" 6893775e7de9Smrg else 6894775e7de9Smrg # Just accumulate the unique libdirs. 6895775e7de9Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 6896775e7de9Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 6897775e7de9Smrg ;; 6898775e7de9Smrg *) 6899775e7de9Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 6900775e7de9Smrg ;; 6901775e7de9Smrg esac 6902775e7de9Smrg fi 6903775e7de9Smrg else 6904775e7de9Smrg eval flag=\"$hardcode_libdir_flag_spec\" 6905775e7de9Smrg dep_rpath="$dep_rpath $flag" 6906775e7de9Smrg fi 6907775e7de9Smrg elif test -n "$runpath_var"; then 6908775e7de9Smrg case "$perm_rpath " in 6909775e7de9Smrg *" $libdir "*) ;; 6910775e7de9Smrg *) perm_rpath="$perm_rpath $libdir" ;; 6911775e7de9Smrg esac 6912775e7de9Smrg fi 6913775e7de9Smrg done 6914775e7de9Smrg # Substitute the hardcoded libdirs into the rpath. 6915775e7de9Smrg if test -n "$hardcode_libdir_separator" && 6916775e7de9Smrg test -n "$hardcode_libdirs"; then 6917775e7de9Smrg libdir="$hardcode_libdirs" 6918775e7de9Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 6919775e7de9Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 6920775e7de9Smrg else 6921775e7de9Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 6922775e7de9Smrg fi 6923775e7de9Smrg fi 6924775e7de9Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 6925775e7de9Smrg # We should set the runpath_var. 6926775e7de9Smrg rpath= 6927775e7de9Smrg for dir in $perm_rpath; do 6928775e7de9Smrg rpath="$rpath$dir:" 6929775e7de9Smrg done 6930775e7de9Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 6931775e7de9Smrg fi 6932775e7de9Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 6933775e7de9Smrg fi 69347a84e134Smrg 6935775e7de9Smrg shlibpath="$finalize_shlibpath" 6936775e7de9Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 6937775e7de9Smrg if test -n "$shlibpath"; then 6938775e7de9Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 6939775e7de9Smrg fi 69407a84e134Smrg 6941775e7de9Smrg # Get the real and link names of the library. 6942775e7de9Smrg eval shared_ext=\"$shrext_cmds\" 6943775e7de9Smrg eval library_names=\"$library_names_spec\" 6944775e7de9Smrg set dummy $library_names 6945775e7de9Smrg shift 6946775e7de9Smrg realname="$1" 6947775e7de9Smrg shift 69487a84e134Smrg 6949775e7de9Smrg if test -n "$soname_spec"; then 6950775e7de9Smrg eval soname=\"$soname_spec\" 6951775e7de9Smrg else 6952775e7de9Smrg soname="$realname" 6953775e7de9Smrg fi 6954775e7de9Smrg if test -z "$dlname"; then 6955775e7de9Smrg dlname=$soname 6956775e7de9Smrg fi 69577a84e134Smrg 6958775e7de9Smrg lib="$output_objdir/$realname" 6959775e7de9Smrg linknames= 6960775e7de9Smrg for link 6961775e7de9Smrg do 6962775e7de9Smrg linknames="$linknames $link" 6963775e7de9Smrg done 69647a84e134Smrg 6965775e7de9Smrg # Use standard objects if they are pic 6966775e7de9Smrg test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 6967775e7de9Smrg test "X$libobjs" = "X " && libobjs= 69687a84e134Smrg 6969775e7de9Smrg delfiles= 6970775e7de9Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 6971775e7de9Smrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 6972775e7de9Smrg export_symbols="$output_objdir/$libname.uexp" 6973775e7de9Smrg delfiles="$delfiles $export_symbols" 6974775e7de9Smrg fi 69757a84e134Smrg 6976775e7de9Smrg orig_export_symbols= 6977775e7de9Smrg case $host_os in 6978775e7de9Smrg cygwin* | mingw* | cegcc*) 6979775e7de9Smrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 6980775e7de9Smrg # exporting using user supplied symfile 6981775e7de9Smrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 6982775e7de9Smrg # and it's NOT already a .def file. Must figure out 6983775e7de9Smrg # which of the given symbols are data symbols and tag 6984775e7de9Smrg # them as such. So, trigger use of export_symbols_cmds. 6985775e7de9Smrg # export_symbols gets reassigned inside the "prepare 6986775e7de9Smrg # the list of exported symbols" if statement, so the 6987775e7de9Smrg # include_expsyms logic still works. 6988775e7de9Smrg orig_export_symbols="$export_symbols" 6989775e7de9Smrg export_symbols= 6990775e7de9Smrg always_export_symbols=yes 6991775e7de9Smrg fi 6992775e7de9Smrg fi 6993775e7de9Smrg ;; 6994775e7de9Smrg esac 69957a84e134Smrg 6996775e7de9Smrg # Prepare the list of exported symbols 6997775e7de9Smrg if test -z "$export_symbols"; then 6998775e7de9Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 6999775e7de9Smrg func_verbose "generating symbol list for \`$libname.la'" 7000775e7de9Smrg export_symbols="$output_objdir/$libname.exp" 7001775e7de9Smrg $opt_dry_run || $RM $export_symbols 7002775e7de9Smrg cmds=$export_symbols_cmds 7003775e7de9Smrg save_ifs="$IFS"; IFS='~' 7004775e7de9Smrg for cmd in $cmds; do 7005775e7de9Smrg IFS="$save_ifs" 7006775e7de9Smrg eval cmd=\"$cmd\" 7007775e7de9Smrg func_len " $cmd" 7008775e7de9Smrg len=$func_len_result 7009775e7de9Smrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7010775e7de9Smrg func_show_eval "$cmd" 'exit $?' 7011775e7de9Smrg skipped_export=false 7012775e7de9Smrg else 7013775e7de9Smrg # The command line is too long to execute in one step. 7014775e7de9Smrg func_verbose "using reloadable object file for export list..." 7015775e7de9Smrg skipped_export=: 7016775e7de9Smrg # Break out early, otherwise skipped_export may be 7017775e7de9Smrg # set to false by a later but shorter cmd. 7018775e7de9Smrg break 7019775e7de9Smrg fi 7020775e7de9Smrg done 7021775e7de9Smrg IFS="$save_ifs" 7022775e7de9Smrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 7023775e7de9Smrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7024775e7de9Smrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7025775e7de9Smrg fi 7026775e7de9Smrg fi 70277a84e134Smrg fi 70287a84e134Smrg 7029775e7de9Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 7030775e7de9Smrg tmp_export_symbols="$export_symbols" 7031775e7de9Smrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7032775e7de9Smrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 7033775e7de9Smrg fi 70347a84e134Smrg 7035775e7de9Smrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 7036775e7de9Smrg # The given exports_symbols file has to be filtered, so filter it. 7037775e7de9Smrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7038775e7de9Smrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 7039775e7de9Smrg # 's' commands which not all seds can handle. GNU sed should be fine 7040775e7de9Smrg # though. Also, the filter scales superlinearly with the number of 7041775e7de9Smrg # global variables. join(1) would be nice here, but unfortunately 7042775e7de9Smrg # isn't a blessed tool. 7043775e7de9Smrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7044775e7de9Smrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7045775e7de9Smrg export_symbols=$output_objdir/$libname.def 7046775e7de9Smrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7047775e7de9Smrg fi 70487a84e134Smrg 7049775e7de9Smrg tmp_deplibs= 7050775e7de9Smrg for test_deplib in $deplibs; do 7051775e7de9Smrg case " $convenience " in 7052775e7de9Smrg *" $test_deplib "*) ;; 7053775e7de9Smrg *) 7054775e7de9Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 7055775e7de9Smrg ;; 7056775e7de9Smrg esac 7057775e7de9Smrg done 7058775e7de9Smrg deplibs="$tmp_deplibs" 70597a84e134Smrg 7060775e7de9Smrg if test -n "$convenience"; then 7061775e7de9Smrg if test -n "$whole_archive_flag_spec" && 7062775e7de9Smrg test "$compiler_needs_object" = yes && 7063775e7de9Smrg test -z "$libobjs"; then 7064775e7de9Smrg # extract the archives, so we have objects to list. 7065775e7de9Smrg # TODO: could optimize this to just extract one archive. 7066775e7de9Smrg whole_archive_flag_spec= 7067775e7de9Smrg fi 7068775e7de9Smrg if test -n "$whole_archive_flag_spec"; then 7069775e7de9Smrg save_libobjs=$libobjs 7070775e7de9Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7071775e7de9Smrg test "X$libobjs" = "X " && libobjs= 7072775e7de9Smrg else 7073775e7de9Smrg gentop="$output_objdir/${outputname}x" 7074775e7de9Smrg generated="$generated $gentop" 70757a84e134Smrg 7076775e7de9Smrg func_extract_archives $gentop $convenience 7077775e7de9Smrg libobjs="$libobjs $func_extract_archives_result" 7078775e7de9Smrg test "X$libobjs" = "X " && libobjs= 7079775e7de9Smrg fi 70807a84e134Smrg fi 70817a84e134Smrg 7082775e7de9Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 7083775e7de9Smrg eval flag=\"$thread_safe_flag_spec\" 7084775e7de9Smrg linker_flags="$linker_flags $flag" 70857a84e134Smrg fi 70867a84e134Smrg 7087775e7de9Smrg # Make a backup of the uninstalled library when relinking 7088775e7de9Smrg if test "$mode" = relink; then 7089775e7de9Smrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 7090775e7de9Smrg fi 70917a84e134Smrg 7092775e7de9Smrg # Do each of the archive commands. 7093775e7de9Smrg if test "$module" = yes && test -n "$module_cmds" ; then 7094775e7de9Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7095775e7de9Smrg eval test_cmds=\"$module_expsym_cmds\" 7096775e7de9Smrg cmds=$module_expsym_cmds 7097775e7de9Smrg else 7098775e7de9Smrg eval test_cmds=\"$module_cmds\" 7099775e7de9Smrg cmds=$module_cmds 7100775e7de9Smrg fi 71017a84e134Smrg else 7102775e7de9Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7103775e7de9Smrg eval test_cmds=\"$archive_expsym_cmds\" 7104775e7de9Smrg cmds=$archive_expsym_cmds 7105775e7de9Smrg else 7106775e7de9Smrg eval test_cmds=\"$archive_cmds\" 7107775e7de9Smrg cmds=$archive_cmds 7108775e7de9Smrg fi 71097a84e134Smrg fi 71107a84e134Smrg 7111775e7de9Smrg if test "X$skipped_export" != "X:" && 7112775e7de9Smrg func_len " $test_cmds" && 7113775e7de9Smrg len=$func_len_result && 7114775e7de9Smrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7115775e7de9Smrg : 7116775e7de9Smrg else 7117775e7de9Smrg # The command line is too long to link in one step, link piecewise 7118775e7de9Smrg # or, if using GNU ld and skipped_export is not :, use a linker 7119775e7de9Smrg # script. 71207a84e134Smrg 7121775e7de9Smrg # Save the value of $output and $libobjs because we want to 7122775e7de9Smrg # use them later. If we have whole_archive_flag_spec, we 7123775e7de9Smrg # want to use save_libobjs as it was before 7124775e7de9Smrg # whole_archive_flag_spec was expanded, because we can't 7125775e7de9Smrg # assume the linker understands whole_archive_flag_spec. 7126775e7de9Smrg # This may have to be revisited, in case too many 7127775e7de9Smrg # convenience libraries get linked in and end up exceeding 7128775e7de9Smrg # the spec. 7129775e7de9Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 7130775e7de9Smrg save_libobjs=$libobjs 7131775e7de9Smrg fi 7132775e7de9Smrg save_output=$output 7133775e7de9Smrg output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 71347a84e134Smrg 7135775e7de9Smrg # Clear the reloadable object creation command queue and 7136775e7de9Smrg # initialize k to one. 7137775e7de9Smrg test_cmds= 7138775e7de9Smrg concat_cmds= 7139775e7de9Smrg objlist= 7140775e7de9Smrg last_robj= 7141775e7de9Smrg k=1 7142775e7de9Smrg 7143775e7de9Smrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 7144775e7de9Smrg output=${output_objdir}/${output_la}.lnkscript 7145775e7de9Smrg func_verbose "creating GNU ld script: $output" 7146775e7de9Smrg $ECHO 'INPUT (' > $output 7147775e7de9Smrg for obj in $save_libobjs 71487a84e134Smrg do 7149775e7de9Smrg $ECHO "$obj" >> $output 7150775e7de9Smrg done 7151775e7de9Smrg $ECHO ')' >> $output 7152775e7de9Smrg delfiles="$delfiles $output" 7153775e7de9Smrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 7154775e7de9Smrg output=${output_objdir}/${output_la}.lnk 7155775e7de9Smrg func_verbose "creating linker input file list: $output" 7156775e7de9Smrg : > $output 7157775e7de9Smrg set x $save_libobjs 7158775e7de9Smrg shift 7159775e7de9Smrg firstobj= 7160775e7de9Smrg if test "$compiler_needs_object" = yes; then 7161775e7de9Smrg firstobj="$1 " 7162775e7de9Smrg shift 7163775e7de9Smrg fi 7164775e7de9Smrg for obj 7165775e7de9Smrg do 7166775e7de9Smrg $ECHO "$obj" >> $output 7167775e7de9Smrg done 7168775e7de9Smrg delfiles="$delfiles $output" 7169775e7de9Smrg output=$firstobj\"$file_list_spec$output\" 7170775e7de9Smrg else 7171775e7de9Smrg if test -n "$save_libobjs"; then 7172775e7de9Smrg func_verbose "creating reloadable object files..." 7173775e7de9Smrg output=$output_objdir/$output_la-${k}.$objext 7174775e7de9Smrg eval test_cmds=\"$reload_cmds\" 7175775e7de9Smrg func_len " $test_cmds" 7176775e7de9Smrg len0=$func_len_result 7177775e7de9Smrg len=$len0 7178775e7de9Smrg 7179775e7de9Smrg # Loop over the list of objects to be linked. 7180775e7de9Smrg for obj in $save_libobjs 7181775e7de9Smrg do 7182775e7de9Smrg func_len " $obj" 7183775e7de9Smrg func_arith $len + $func_len_result 7184775e7de9Smrg len=$func_arith_result 7185775e7de9Smrg if test "X$objlist" = X || 7186775e7de9Smrg test "$len" -lt "$max_cmd_len"; then 7187775e7de9Smrg func_append objlist " $obj" 7188775e7de9Smrg else 7189775e7de9Smrg # The command $test_cmds is almost too long, add a 7190775e7de9Smrg # command to the queue. 7191775e7de9Smrg if test "$k" -eq 1 ; then 7192775e7de9Smrg # The first file doesn't have a previous command to add. 7193775e7de9Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 7194775e7de9Smrg else 7195775e7de9Smrg # All subsequent reloadable object files will link in 7196775e7de9Smrg # the last one created. 7197775e7de9Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 7198775e7de9Smrg fi 7199775e7de9Smrg last_robj=$output_objdir/$output_la-${k}.$objext 7200775e7de9Smrg func_arith $k + 1 7201775e7de9Smrg k=$func_arith_result 7202775e7de9Smrg output=$output_objdir/$output_la-${k}.$objext 7203775e7de9Smrg objlist=$obj 7204775e7de9Smrg func_len " $last_robj" 7205775e7de9Smrg func_arith $len0 + $func_len_result 7206775e7de9Smrg len=$func_arith_result 7207775e7de9Smrg fi 7208775e7de9Smrg done 7209775e7de9Smrg # Handle the remaining objects by creating one last 7210775e7de9Smrg # reloadable object file. All subsequent reloadable object 7211775e7de9Smrg # files will link in the last one created. 7212775e7de9Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7213775e7de9Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 7214775e7de9Smrg if test -n "$last_robj"; then 7215775e7de9Smrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 7216775e7de9Smrg fi 7217775e7de9Smrg delfiles="$delfiles $output" 72187a84e134Smrg 7219775e7de9Smrg else 7220775e7de9Smrg output= 7221775e7de9Smrg fi 72227a84e134Smrg 7223775e7de9Smrg if ${skipped_export-false}; then 7224775e7de9Smrg func_verbose "generating symbol list for \`$libname.la'" 7225775e7de9Smrg export_symbols="$output_objdir/$libname.exp" 7226775e7de9Smrg $opt_dry_run || $RM $export_symbols 7227775e7de9Smrg libobjs=$output 7228775e7de9Smrg # Append the command to create the export file. 7229775e7de9Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7230775e7de9Smrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 7231775e7de9Smrg if test -n "$last_robj"; then 7232775e7de9Smrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 7233775e7de9Smrg fi 72347a84e134Smrg fi 72357a84e134Smrg 7236775e7de9Smrg test -n "$save_libobjs" && 7237775e7de9Smrg func_verbose "creating a temporary reloadable object file: $output" 72387a84e134Smrg 7239775e7de9Smrg # Loop through the commands generated above and execute them. 7240775e7de9Smrg save_ifs="$IFS"; IFS='~' 7241775e7de9Smrg for cmd in $concat_cmds; do 7242775e7de9Smrg IFS="$save_ifs" 7243775e7de9Smrg $opt_silent || { 7244775e7de9Smrg func_quote_for_expand "$cmd" 7245775e7de9Smrg eval "func_echo $func_quote_for_expand_result" 7246775e7de9Smrg } 7247775e7de9Smrg $opt_dry_run || eval "$cmd" || { 7248775e7de9Smrg lt_exit=$? 7249775e7de9Smrg 7250775e7de9Smrg # Restore the uninstalled library and exit 7251775e7de9Smrg if test "$mode" = relink; then 7252775e7de9Smrg ( cd "$output_objdir" && \ 7253775e7de9Smrg $RM "${realname}T" && \ 7254775e7de9Smrg $MV "${realname}U" "$realname" ) 7255775e7de9Smrg fi 72567a84e134Smrg 7257775e7de9Smrg exit $lt_exit 7258775e7de9Smrg } 7259775e7de9Smrg done 7260775e7de9Smrg IFS="$save_ifs" 72617a84e134Smrg 7262775e7de9Smrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 7263775e7de9Smrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7264775e7de9Smrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 72657a84e134Smrg fi 72667a84e134Smrg fi 72677a84e134Smrg 7268775e7de9Smrg if ${skipped_export-false}; then 7269775e7de9Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 7270775e7de9Smrg tmp_export_symbols="$export_symbols" 7271775e7de9Smrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7272775e7de9Smrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 7273775e7de9Smrg fi 72747a84e134Smrg 7275775e7de9Smrg if test -n "$orig_export_symbols"; then 7276775e7de9Smrg # The given exports_symbols file has to be filtered, so filter it. 7277775e7de9Smrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7278775e7de9Smrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 7279775e7de9Smrg # 's' commands which not all seds can handle. GNU sed should be fine 7280775e7de9Smrg # though. Also, the filter scales superlinearly with the number of 7281775e7de9Smrg # global variables. join(1) would be nice here, but unfortunately 7282775e7de9Smrg # isn't a blessed tool. 7283775e7de9Smrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7284775e7de9Smrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7285775e7de9Smrg export_symbols=$output_objdir/$libname.def 7286775e7de9Smrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7287775e7de9Smrg fi 7288775e7de9Smrg fi 72897a84e134Smrg 7290775e7de9Smrg libobjs=$output 7291775e7de9Smrg # Restore the value of output. 7292775e7de9Smrg output=$save_output 72937a84e134Smrg 7294775e7de9Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 7295775e7de9Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7296775e7de9Smrg test "X$libobjs" = "X " && libobjs= 7297775e7de9Smrg fi 7298775e7de9Smrg # Expand the library linking commands again to reset the 7299775e7de9Smrg # value of $libobjs for piecewise linking. 73007a84e134Smrg 7301775e7de9Smrg # Do each of the archive commands. 7302775e7de9Smrg if test "$module" = yes && test -n "$module_cmds" ; then 7303775e7de9Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7304775e7de9Smrg cmds=$module_expsym_cmds 7305775e7de9Smrg else 7306775e7de9Smrg cmds=$module_cmds 73077a84e134Smrg fi 73087a84e134Smrg else 7309775e7de9Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7310775e7de9Smrg cmds=$archive_expsym_cmds 7311775e7de9Smrg else 7312775e7de9Smrg cmds=$archive_cmds 7313775e7de9Smrg fi 73147a84e134Smrg fi 7315775e7de9Smrg fi 73167a84e134Smrg 7317775e7de9Smrg if test -n "$delfiles"; then 7318775e7de9Smrg # Append the command to remove temporary files to $cmds. 7319775e7de9Smrg eval cmds=\"\$cmds~\$RM $delfiles\" 7320775e7de9Smrg fi 73217a84e134Smrg 7322775e7de9Smrg # Add any objects from preloaded convenience libraries 7323775e7de9Smrg if test -n "$dlprefiles"; then 7324775e7de9Smrg gentop="$output_objdir/${outputname}x" 7325775e7de9Smrg generated="$generated $gentop" 73267a84e134Smrg 7327775e7de9Smrg func_extract_archives $gentop $dlprefiles 7328775e7de9Smrg libobjs="$libobjs $func_extract_archives_result" 7329775e7de9Smrg test "X$libobjs" = "X " && libobjs= 7330775e7de9Smrg fi 73317a84e134Smrg 7332775e7de9Smrg save_ifs="$IFS"; IFS='~' 7333775e7de9Smrg for cmd in $cmds; do 7334775e7de9Smrg IFS="$save_ifs" 7335775e7de9Smrg eval cmd=\"$cmd\" 7336775e7de9Smrg $opt_silent || { 7337775e7de9Smrg func_quote_for_expand "$cmd" 7338775e7de9Smrg eval "func_echo $func_quote_for_expand_result" 7339775e7de9Smrg } 7340775e7de9Smrg $opt_dry_run || eval "$cmd" || { 7341775e7de9Smrg lt_exit=$? 73427a84e134Smrg 7343775e7de9Smrg # Restore the uninstalled library and exit 7344775e7de9Smrg if test "$mode" = relink; then 7345775e7de9Smrg ( cd "$output_objdir" && \ 7346775e7de9Smrg $RM "${realname}T" && \ 7347775e7de9Smrg $MV "${realname}U" "$realname" ) 7348775e7de9Smrg fi 73497a84e134Smrg 7350775e7de9Smrg exit $lt_exit 7351775e7de9Smrg } 7352775e7de9Smrg done 7353775e7de9Smrg IFS="$save_ifs" 73547a84e134Smrg 7355775e7de9Smrg # Restore the uninstalled library and exit 7356775e7de9Smrg if test "$mode" = relink; then 7357775e7de9Smrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 73587a84e134Smrg 7359775e7de9Smrg if test -n "$convenience"; then 7360775e7de9Smrg if test -z "$whole_archive_flag_spec"; then 7361775e7de9Smrg func_show_eval '${RM}r "$gentop"' 7362775e7de9Smrg fi 7363775e7de9Smrg fi 73647a84e134Smrg 7365775e7de9Smrg exit $EXIT_SUCCESS 7366775e7de9Smrg fi 7367775e7de9Smrg 7368775e7de9Smrg # Create links to the real library. 7369775e7de9Smrg for linkname in $linknames; do 7370775e7de9Smrg if test "$realname" != "$linkname"; then 7371775e7de9Smrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 73727a84e134Smrg fi 73737a84e134Smrg done 73747a84e134Smrg 7375775e7de9Smrg # If -module or -export-dynamic was specified, set the dlname. 7376775e7de9Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 7377775e7de9Smrg # On all known operating systems, these are identical. 7378775e7de9Smrg dlname="$soname" 7379775e7de9Smrg fi 7380775e7de9Smrg fi 73817a84e134Smrg ;; 73827a84e134Smrg 7383775e7de9Smrg obj) 7384775e7de9Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7385775e7de9Smrg func_warning "\`-dlopen' is ignored for objects" 7386775e7de9Smrg fi 73877a84e134Smrg 7388775e7de9Smrg case " $deplibs" in 7389775e7de9Smrg *\ -l* | *\ -L*) 7390775e7de9Smrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 73917a84e134Smrg esac 73927a84e134Smrg 7393775e7de9Smrg test -n "$rpath" && \ 7394775e7de9Smrg func_warning "\`-rpath' is ignored for objects" 7395775e7de9Smrg 7396775e7de9Smrg test -n "$xrpath" && \ 7397775e7de9Smrg func_warning "\`-R' is ignored for objects" 73987a84e134Smrg 7399775e7de9Smrg test -n "$vinfo" && \ 7400775e7de9Smrg func_warning "\`-version-info' is ignored for objects" 74017a84e134Smrg 7402775e7de9Smrg test -n "$release" && \ 7403775e7de9Smrg func_warning "\`-release' is ignored for objects" 7404775e7de9Smrg 7405775e7de9Smrg case $output in 7406775e7de9Smrg *.lo) 7407775e7de9Smrg test -n "$objs$old_deplibs" && \ 7408775e7de9Smrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 7409775e7de9Smrg 7410775e7de9Smrg libobj=$output 7411775e7de9Smrg func_lo2o "$libobj" 7412775e7de9Smrg obj=$func_lo2o_result 74137a84e134Smrg ;; 74147a84e134Smrg *) 7415775e7de9Smrg libobj= 7416775e7de9Smrg obj="$output" 74177a84e134Smrg ;; 74187a84e134Smrg esac 74197a84e134Smrg 7420775e7de9Smrg # Delete the old objects. 7421775e7de9Smrg $opt_dry_run || $RM $obj $libobj 74227a84e134Smrg 7423775e7de9Smrg # Objects from convenience libraries. This assumes 7424775e7de9Smrg # single-version convenience libraries. Whenever we create 7425775e7de9Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 7426775e7de9Smrg # the extraction. 7427775e7de9Smrg reload_conv_objs= 7428775e7de9Smrg gentop= 7429775e7de9Smrg # reload_cmds runs $LD directly, so let us get rid of 7430775e7de9Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 7431775e7de9Smrg # turning comma into space.. 7432775e7de9Smrg wl= 74337a84e134Smrg 7434775e7de9Smrg if test -n "$convenience"; then 7435775e7de9Smrg if test -n "$whole_archive_flag_spec"; then 7436775e7de9Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 7437775e7de9Smrg reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 7438775e7de9Smrg else 7439775e7de9Smrg gentop="$output_objdir/${obj}x" 7440775e7de9Smrg generated="$generated $gentop" 74417a84e134Smrg 7442775e7de9Smrg func_extract_archives $gentop $convenience 7443775e7de9Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 7444775e7de9Smrg fi 74457a84e134Smrg fi 74467a84e134Smrg 7447775e7de9Smrg # Create the old-style object. 7448775e7de9Smrg 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 74497a84e134Smrg 7450775e7de9Smrg output="$obj" 7451775e7de9Smrg func_execute_cmds "$reload_cmds" 'exit $?' 74527a84e134Smrg 7453775e7de9Smrg # Exit if we aren't doing a library object file. 7454775e7de9Smrg if test -z "$libobj"; then 7455775e7de9Smrg if test -n "$gentop"; then 7456775e7de9Smrg func_show_eval '${RM}r "$gentop"' 7457775e7de9Smrg fi 7458775e7de9Smrg 7459775e7de9Smrg exit $EXIT_SUCCESS 74607a84e134Smrg fi 7461775e7de9Smrg 7462775e7de9Smrg if test "$build_libtool_libs" != yes; then 7463775e7de9Smrg if test -n "$gentop"; then 7464775e7de9Smrg func_show_eval '${RM}r "$gentop"' 7465775e7de9Smrg fi 7466775e7de9Smrg 7467775e7de9Smrg # Create an invalid libtool object if no PIC, so that we don't 7468775e7de9Smrg # accidentally link it into a program. 7469775e7de9Smrg # $show "echo timestamp > $libobj" 7470775e7de9Smrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 7471775e7de9Smrg exit $EXIT_SUCCESS 7472775e7de9Smrg fi 7473775e7de9Smrg 7474775e7de9Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 7475775e7de9Smrg # Only do commands if we really have different PIC objects. 7476775e7de9Smrg reload_objs="$libobjs $reload_conv_objs" 7477775e7de9Smrg output="$libobj" 7478775e7de9Smrg func_execute_cmds "$reload_cmds" 'exit $?' 7479775e7de9Smrg fi 7480775e7de9Smrg 7481775e7de9Smrg if test -n "$gentop"; then 7482775e7de9Smrg func_show_eval '${RM}r "$gentop"' 7483775e7de9Smrg fi 7484775e7de9Smrg 7485775e7de9Smrg exit $EXIT_SUCCESS 74867a84e134Smrg ;; 74877a84e134Smrg 7488775e7de9Smrg prog) 7489775e7de9Smrg case $host in 7490775e7de9Smrg *cygwin*) func_stripname '' '.exe' "$output" 7491775e7de9Smrg output=$func_stripname_result.exe;; 7492775e7de9Smrg esac 7493775e7de9Smrg test -n "$vinfo" && \ 7494775e7de9Smrg func_warning "\`-version-info' is ignored for programs" 74957a84e134Smrg 7496775e7de9Smrg test -n "$release" && \ 7497775e7de9Smrg func_warning "\`-release' is ignored for programs" 74987a84e134Smrg 7499775e7de9Smrg test "$preload" = yes \ 7500775e7de9Smrg && test "$dlopen_support" = unknown \ 7501775e7de9Smrg && test "$dlopen_self" = unknown \ 7502775e7de9Smrg && test "$dlopen_self_static" = unknown && \ 7503775e7de9Smrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 7504775e7de9Smrg 7505775e7de9Smrg case $host in 7506775e7de9Smrg *-*-rhapsody* | *-*-darwin1.[012]) 7507775e7de9Smrg # On Rhapsody replace the C library is the System framework 7508775e7de9Smrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 7509775e7de9Smrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75107a84e134Smrg ;; 7511775e7de9Smrg esac 75127a84e134Smrg 7513775e7de9Smrg case $host in 7514775e7de9Smrg *-*-darwin*) 7515775e7de9Smrg # Don't allow lazy linking, it breaks C++ global constructors 7516775e7de9Smrg # But is supposedly fixed on 10.4 or later (yay!). 7517775e7de9Smrg if test "$tagname" = CXX ; then 7518775e7de9Smrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 7519775e7de9Smrg 10.[0123]) 7520775e7de9Smrg compile_command="$compile_command ${wl}-bind_at_load" 7521775e7de9Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 7522775e7de9Smrg ;; 7523775e7de9Smrg esac 75247a84e134Smrg fi 7525775e7de9Smrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7526775e7de9Smrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7527775e7de9Smrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7528775e7de9Smrg ;; 7529775e7de9Smrg esac 75307a84e134Smrg 75317a84e134Smrg 7532775e7de9Smrg # move library search paths that coincide with paths to not yet 7533775e7de9Smrg # installed libraries to the beginning of the library search list 7534775e7de9Smrg new_libs= 7535775e7de9Smrg for path in $notinst_path; do 7536775e7de9Smrg case " $new_libs " in 7537775e7de9Smrg *" -L$path/$objdir "*) ;; 7538775e7de9Smrg *) 7539775e7de9Smrg case " $compile_deplibs " in 7540775e7de9Smrg *" -L$path/$objdir "*) 7541775e7de9Smrg new_libs="$new_libs -L$path/$objdir" ;; 75427a84e134Smrg esac 7543775e7de9Smrg ;; 7544775e7de9Smrg esac 7545775e7de9Smrg done 7546775e7de9Smrg for deplib in $compile_deplibs; do 7547775e7de9Smrg case $deplib in 7548775e7de9Smrg -L*) 7549775e7de9Smrg case " $new_libs " in 7550775e7de9Smrg *" $deplib "*) ;; 7551775e7de9Smrg *) new_libs="$new_libs $deplib" ;; 75527a84e134Smrg esac 7553775e7de9Smrg ;; 7554775e7de9Smrg *) new_libs="$new_libs $deplib" ;; 7555775e7de9Smrg esac 7556775e7de9Smrg done 7557775e7de9Smrg compile_deplibs="$new_libs" 75587a84e134Smrg 75597a84e134Smrg 7560775e7de9Smrg compile_command="$compile_command $compile_deplibs" 7561775e7de9Smrg finalize_command="$finalize_command $finalize_deplibs" 75627a84e134Smrg 7563775e7de9Smrg if test -n "$rpath$xrpath"; then 7564775e7de9Smrg # If the user specified any rpath flags, then add them. 7565775e7de9Smrg for libdir in $rpath $xrpath; do 7566775e7de9Smrg # This is the magic to use -rpath. 7567775e7de9Smrg case "$finalize_rpath " in 7568775e7de9Smrg *" $libdir "*) ;; 7569775e7de9Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 7570775e7de9Smrg esac 7571775e7de9Smrg done 7572775e7de9Smrg fi 75737a84e134Smrg 7574775e7de9Smrg # Now hardcode the library paths 7575775e7de9Smrg rpath= 7576775e7de9Smrg hardcode_libdirs= 7577775e7de9Smrg for libdir in $compile_rpath $finalize_rpath; do 7578775e7de9Smrg if test -n "$hardcode_libdir_flag_spec"; then 7579775e7de9Smrg if test -n "$hardcode_libdir_separator"; then 7580775e7de9Smrg if test -z "$hardcode_libdirs"; then 7581775e7de9Smrg hardcode_libdirs="$libdir" 7582775e7de9Smrg else 7583775e7de9Smrg # Just accumulate the unique libdirs. 7584775e7de9Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7585775e7de9Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7586775e7de9Smrg ;; 7587775e7de9Smrg *) 7588775e7de9Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7589775e7de9Smrg ;; 7590775e7de9Smrg esac 7591775e7de9Smrg fi 75927a84e134Smrg else 7593775e7de9Smrg eval flag=\"$hardcode_libdir_flag_spec\" 7594775e7de9Smrg rpath="$rpath $flag" 75957a84e134Smrg fi 7596775e7de9Smrg elif test -n "$runpath_var"; then 7597775e7de9Smrg case "$perm_rpath " in 7598775e7de9Smrg *" $libdir "*) ;; 7599775e7de9Smrg *) perm_rpath="$perm_rpath $libdir" ;; 7600775e7de9Smrg esac 7601775e7de9Smrg fi 7602775e7de9Smrg case $host in 7603775e7de9Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 7604775e7de9Smrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 7605775e7de9Smrg case :$dllsearchpath: in 7606775e7de9Smrg *":$libdir:"*) ;; 7607775e7de9Smrg ::) dllsearchpath=$libdir;; 7608775e7de9Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 7609775e7de9Smrg esac 7610775e7de9Smrg case :$dllsearchpath: in 7611775e7de9Smrg *":$testbindir:"*) ;; 7612775e7de9Smrg ::) dllsearchpath=$testbindir;; 7613775e7de9Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 7614775e7de9Smrg esac 7615775e7de9Smrg ;; 7616775e7de9Smrg esac 7617775e7de9Smrg done 7618775e7de9Smrg # Substitute the hardcoded libdirs into the rpath. 7619775e7de9Smrg if test -n "$hardcode_libdir_separator" && 7620775e7de9Smrg test -n "$hardcode_libdirs"; then 7621775e7de9Smrg libdir="$hardcode_libdirs" 7622775e7de9Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 7623775e7de9Smrg fi 7624775e7de9Smrg compile_rpath="$rpath" 76257a84e134Smrg 7626775e7de9Smrg rpath= 7627775e7de9Smrg hardcode_libdirs= 7628775e7de9Smrg for libdir in $finalize_rpath; do 7629775e7de9Smrg if test -n "$hardcode_libdir_flag_spec"; then 7630775e7de9Smrg if test -n "$hardcode_libdir_separator"; then 7631775e7de9Smrg if test -z "$hardcode_libdirs"; then 7632775e7de9Smrg hardcode_libdirs="$libdir" 7633775e7de9Smrg else 7634775e7de9Smrg # Just accumulate the unique libdirs. 7635775e7de9Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7636775e7de9Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7637775e7de9Smrg ;; 7638775e7de9Smrg *) 7639775e7de9Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7640775e7de9Smrg ;; 7641775e7de9Smrg esac 7642775e7de9Smrg fi 76437a84e134Smrg else 7644775e7de9Smrg eval flag=\"$hardcode_libdir_flag_spec\" 7645775e7de9Smrg rpath="$rpath $flag" 76467a84e134Smrg fi 7647775e7de9Smrg elif test -n "$runpath_var"; then 7648775e7de9Smrg case "$finalize_perm_rpath " in 7649775e7de9Smrg *" $libdir "*) ;; 7650775e7de9Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 7651775e7de9Smrg esac 76527a84e134Smrg fi 7653775e7de9Smrg done 7654775e7de9Smrg # Substitute the hardcoded libdirs into the rpath. 7655775e7de9Smrg if test -n "$hardcode_libdir_separator" && 7656775e7de9Smrg test -n "$hardcode_libdirs"; then 7657775e7de9Smrg libdir="$hardcode_libdirs" 7658775e7de9Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 7659775e7de9Smrg fi 7660775e7de9Smrg finalize_rpath="$rpath" 76617a84e134Smrg 7662775e7de9Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 7663775e7de9Smrg # Transform all the library objects into standard objects. 7664775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7665775e7de9Smrg finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7666775e7de9Smrg fi 76677a84e134Smrg 7668775e7de9Smrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 76697a84e134Smrg 7670775e7de9Smrg # template prelinking step 7671775e7de9Smrg if test -n "$prelink_cmds"; then 7672775e7de9Smrg func_execute_cmds "$prelink_cmds" 'exit $?' 7673775e7de9Smrg fi 76747a84e134Smrg 7675775e7de9Smrg wrappers_required=yes 7676775e7de9Smrg case $host in 7677775e7de9Smrg *cygwin* | *mingw* ) 7678775e7de9Smrg if test "$build_libtool_libs" != yes; then 7679775e7de9Smrg wrappers_required=no 7680775e7de9Smrg fi 7681775e7de9Smrg ;; 7682775e7de9Smrg *cegcc) 7683775e7de9Smrg # Disable wrappers for cegcc, we are cross compiling anyway. 7684775e7de9Smrg wrappers_required=no 7685775e7de9Smrg ;; 7686775e7de9Smrg *) 7687775e7de9Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 7688775e7de9Smrg wrappers_required=no 7689775e7de9Smrg fi 7690775e7de9Smrg ;; 7691775e7de9Smrg esac 7692775e7de9Smrg if test "$wrappers_required" = no; then 7693775e7de9Smrg # Replace the output file specification. 7694775e7de9Smrg compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7695775e7de9Smrg link_command="$compile_command$compile_rpath" 76967a84e134Smrg 7697775e7de9Smrg # We have no uninstalled library dependencies, so finalize right now. 7698775e7de9Smrg exit_status=0 7699775e7de9Smrg func_show_eval "$link_command" 'exit_status=$?' 77007a84e134Smrg 7701775e7de9Smrg # Delete the generated files. 7702775e7de9Smrg if test -f "$output_objdir/${outputname}S.${objext}"; then 7703775e7de9Smrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 77047a84e134Smrg fi 77057a84e134Smrg 7706775e7de9Smrg exit $exit_status 7707775e7de9Smrg fi 77087a84e134Smrg 7709775e7de9Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 7710775e7de9Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 7711775e7de9Smrg fi 7712775e7de9Smrg if test -n "$finalize_shlibpath"; then 7713775e7de9Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 7714775e7de9Smrg fi 77157a84e134Smrg 7716775e7de9Smrg compile_var= 7717775e7de9Smrg finalize_var= 7718775e7de9Smrg if test -n "$runpath_var"; then 7719775e7de9Smrg if test -n "$perm_rpath"; then 7720775e7de9Smrg # We should set the runpath_var. 7721775e7de9Smrg rpath= 7722775e7de9Smrg for dir in $perm_rpath; do 7723775e7de9Smrg rpath="$rpath$dir:" 7724775e7de9Smrg done 7725775e7de9Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 77267a84e134Smrg fi 7727775e7de9Smrg if test -n "$finalize_perm_rpath"; then 7728775e7de9Smrg # We should set the runpath_var. 7729775e7de9Smrg rpath= 7730775e7de9Smrg for dir in $finalize_perm_rpath; do 7731775e7de9Smrg rpath="$rpath$dir:" 7732775e7de9Smrg done 7733775e7de9Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 77347a84e134Smrg fi 7735775e7de9Smrg fi 77367a84e134Smrg 7737775e7de9Smrg if test "$no_install" = yes; then 7738775e7de9Smrg # We don't need to create a wrapper script. 7739775e7de9Smrg link_command="$compile_var$compile_command$compile_rpath" 7740775e7de9Smrg # Replace the output file specification. 7741775e7de9Smrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7742775e7de9Smrg # Delete the old output file. 7743775e7de9Smrg $opt_dry_run || $RM $output 7744775e7de9Smrg # Link the executable and exit 7745775e7de9Smrg func_show_eval "$link_command" 'exit $?' 77467a84e134Smrg exit $EXIT_SUCCESS 7747775e7de9Smrg fi 77487a84e134Smrg 7749775e7de9Smrg if test "$hardcode_action" = relink; then 7750775e7de9Smrg # Fast installation is not supported 7751775e7de9Smrg link_command="$compile_var$compile_command$compile_rpath" 7752775e7de9Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 7753775e7de9Smrg 7754775e7de9Smrg func_warning "this platform does not like uninstalled shared libraries" 7755775e7de9Smrg func_warning "\`$output' will be relinked during installation" 7756775e7de9Smrg else 7757775e7de9Smrg if test "$fast_install" != no; then 7758775e7de9Smrg link_command="$finalize_var$compile_command$finalize_rpath" 7759775e7de9Smrg if test "$fast_install" = yes; then 7760775e7de9Smrg relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 7761775e7de9Smrg else 7762775e7de9Smrg # fast_install is set to needless 7763775e7de9Smrg relink_command= 7764775e7de9Smrg fi 77657a84e134Smrg else 7766775e7de9Smrg link_command="$compile_var$compile_command$compile_rpath" 7767775e7de9Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 77687a84e134Smrg fi 7769775e7de9Smrg fi 77707a84e134Smrg 7771775e7de9Smrg # Replace the output file specification. 7772775e7de9Smrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 77737a84e134Smrg 7774775e7de9Smrg # Delete the old output files. 7775775e7de9Smrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 77767a84e134Smrg 7777775e7de9Smrg func_show_eval "$link_command" 'exit $?' 77787a84e134Smrg 7779775e7de9Smrg # Now create the wrapper script. 7780775e7de9Smrg func_verbose "creating $output" 77817a84e134Smrg 7782775e7de9Smrg # Quote the relink command for shipping. 7783775e7de9Smrg if test -n "$relink_command"; then 7784775e7de9Smrg # Preserve any variables that may affect compiler behavior 7785775e7de9Smrg for var in $variables_saved_for_relink; do 7786775e7de9Smrg if eval test -z \"\${$var+set}\"; then 7787775e7de9Smrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 7788775e7de9Smrg elif eval var_value=\$$var; test -z "$var_value"; then 7789775e7de9Smrg relink_command="$var=; export $var; $relink_command" 77907a84e134Smrg else 7791775e7de9Smrg func_quote_for_eval "$var_value" 7792775e7de9Smrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 77937a84e134Smrg fi 7794775e7de9Smrg done 7795775e7de9Smrg relink_command="(cd `pwd`; $relink_command)" 7796775e7de9Smrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 7797775e7de9Smrg fi 77987a84e134Smrg 7799775e7de9Smrg # Quote $ECHO for shipping. 7800775e7de9Smrg if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 7801775e7de9Smrg case $progpath in 7802775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 7803775e7de9Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 7804775e7de9Smrg esac 7805775e7de9Smrg qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 7806775e7de9Smrg else 7807775e7de9Smrg qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 7808775e7de9Smrg fi 7809775e7de9Smrg 7810775e7de9Smrg # Only actually do things if not in dry run mode. 7811775e7de9Smrg $opt_dry_run || { 7812775e7de9Smrg # win32 will think the script is a binary if it has 7813775e7de9Smrg # a .exe suffix, so we strip it off here. 7814775e7de9Smrg case $output in 7815775e7de9Smrg *.exe) func_stripname '' '.exe' "$output" 7816775e7de9Smrg output=$func_stripname_result ;; 7817775e7de9Smrg esac 7818775e7de9Smrg # test for cygwin because mv fails w/o .exe extensions 7819775e7de9Smrg case $host in 7820775e7de9Smrg *cygwin*) 7821775e7de9Smrg exeext=.exe 7822775e7de9Smrg func_stripname '' '.exe' "$outputname" 7823775e7de9Smrg outputname=$func_stripname_result ;; 7824775e7de9Smrg *) exeext= ;; 78257a84e134Smrg esac 7826775e7de9Smrg case $host in 7827775e7de9Smrg *cygwin* | *mingw* ) 7828775e7de9Smrg func_dirname_and_basename "$output" "" "." 7829775e7de9Smrg output_name=$func_basename_result 7830775e7de9Smrg output_path=$func_dirname_result 7831775e7de9Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 7832775e7de9Smrg cwrapper="$output_path/$output_name.exe" 7833775e7de9Smrg $RM $cwrappersource $cwrapper 7834775e7de9Smrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 7835775e7de9Smrg 7836775e7de9Smrg func_emit_cwrapperexe_src > $cwrappersource 7837775e7de9Smrg 7838775e7de9Smrg # The wrapper executable is built using the $host compiler, 7839775e7de9Smrg # because it contains $host paths and files. If cross- 7840775e7de9Smrg # compiling, it, like the target executable, must be 7841775e7de9Smrg # executed on the $host or under an emulation environment. 7842775e7de9Smrg $opt_dry_run || { 7843775e7de9Smrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 7844775e7de9Smrg $STRIP $cwrapper 7845775e7de9Smrg } 78467a84e134Smrg 7847775e7de9Smrg # Now, create the wrapper script for func_source use: 7848775e7de9Smrg func_ltwrapper_scriptname $cwrapper 7849775e7de9Smrg $RM $func_ltwrapper_scriptname_result 7850775e7de9Smrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 7851775e7de9Smrg $opt_dry_run || { 7852775e7de9Smrg # note: this script will not be executed, so do not chmod. 7853775e7de9Smrg if test "x$build" = "x$host" ; then 7854775e7de9Smrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 7855775e7de9Smrg else 7856775e7de9Smrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 7857775e7de9Smrg fi 7858775e7de9Smrg } 7859775e7de9Smrg ;; 7860775e7de9Smrg * ) 7861775e7de9Smrg $RM $output 7862775e7de9Smrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 78637a84e134Smrg 7864775e7de9Smrg func_emit_wrapper no > $output 7865775e7de9Smrg chmod +x $output 7866775e7de9Smrg ;; 7867775e7de9Smrg esac 7868775e7de9Smrg } 7869775e7de9Smrg exit $EXIT_SUCCESS 7870775e7de9Smrg ;; 7871775e7de9Smrg esac 78727a84e134Smrg 7873775e7de9Smrg # See if we need to build an old-fashioned archive. 7874775e7de9Smrg for oldlib in $oldlibs; do 78757a84e134Smrg 7876775e7de9Smrg if test "$build_libtool_libs" = convenience; then 7877775e7de9Smrg oldobjs="$libobjs_save $symfileobj" 7878775e7de9Smrg addlibs="$convenience" 7879775e7de9Smrg build_libtool_libs=no 7880775e7de9Smrg else 7881775e7de9Smrg if test "$build_libtool_libs" = module; then 7882775e7de9Smrg oldobjs="$libobjs_save" 7883775e7de9Smrg build_libtool_libs=no 7884775e7de9Smrg else 7885775e7de9Smrg oldobjs="$old_deplibs $non_pic_objects" 7886775e7de9Smrg if test "$preload" = yes && test -f "$symfileobj"; then 7887775e7de9Smrg oldobjs="$oldobjs $symfileobj" 7888775e7de9Smrg fi 7889775e7de9Smrg fi 7890775e7de9Smrg addlibs="$old_convenience" 78917a84e134Smrg fi 78927a84e134Smrg 7893775e7de9Smrg if test -n "$addlibs"; then 7894775e7de9Smrg gentop="$output_objdir/${outputname}x" 7895775e7de9Smrg generated="$generated $gentop" 78967a84e134Smrg 7897775e7de9Smrg func_extract_archives $gentop $addlibs 7898775e7de9Smrg oldobjs="$oldobjs $func_extract_archives_result" 7899775e7de9Smrg fi 79007a84e134Smrg 7901775e7de9Smrg # Do each command in the archive commands. 7902775e7de9Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 7903775e7de9Smrg cmds=$old_archive_from_new_cmds 7904775e7de9Smrg else 79057a84e134Smrg 7906775e7de9Smrg # Add any objects from preloaded convenience libraries 7907775e7de9Smrg if test -n "$dlprefiles"; then 7908775e7de9Smrg gentop="$output_objdir/${outputname}x" 7909775e7de9Smrg generated="$generated $gentop" 79107a84e134Smrg 7911775e7de9Smrg func_extract_archives $gentop $dlprefiles 7912775e7de9Smrg oldobjs="$oldobjs $func_extract_archives_result" 7913775e7de9Smrg fi 79147a84e134Smrg 7915775e7de9Smrg # POSIX demands no paths to be encoded in archives. We have 7916775e7de9Smrg # to avoid creating archives with duplicate basenames if we 7917775e7de9Smrg # might have to extract them afterwards, e.g., when creating a 7918775e7de9Smrg # static archive out of a convenience library, or when linking 7919775e7de9Smrg # the entirety of a libtool archive into another (currently 7920775e7de9Smrg # not supported by libtool). 7921775e7de9Smrg if (for obj in $oldobjs 7922775e7de9Smrg do 7923775e7de9Smrg func_basename "$obj" 7924775e7de9Smrg $ECHO "$func_basename_result" 7925775e7de9Smrg done | sort | sort -uc >/dev/null 2>&1); then 7926775e7de9Smrg : 7927775e7de9Smrg else 7928775e7de9Smrg $ECHO "copying selected object files to avoid basename conflicts..." 7929775e7de9Smrg gentop="$output_objdir/${outputname}x" 7930775e7de9Smrg generated="$generated $gentop" 7931775e7de9Smrg func_mkdir_p "$gentop" 7932775e7de9Smrg save_oldobjs=$oldobjs 7933775e7de9Smrg oldobjs= 7934775e7de9Smrg counter=1 7935775e7de9Smrg for obj in $save_oldobjs 7936775e7de9Smrg do 7937775e7de9Smrg func_basename "$obj" 7938775e7de9Smrg objbase="$func_basename_result" 7939775e7de9Smrg case " $oldobjs " in 7940775e7de9Smrg " ") oldobjs=$obj ;; 7941775e7de9Smrg *[\ /]"$objbase "*) 7942775e7de9Smrg while :; do 7943775e7de9Smrg # Make sure we don't pick an alternate name that also 7944775e7de9Smrg # overlaps. 7945775e7de9Smrg newobj=lt$counter-$objbase 7946775e7de9Smrg func_arith $counter + 1 7947775e7de9Smrg counter=$func_arith_result 7948775e7de9Smrg case " $oldobjs " in 7949775e7de9Smrg *[\ /]"$newobj "*) ;; 7950775e7de9Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 7951775e7de9Smrg esac 7952775e7de9Smrg done 7953775e7de9Smrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 7954775e7de9Smrg oldobjs="$oldobjs $gentop/$newobj" 7955775e7de9Smrg ;; 7956775e7de9Smrg *) oldobjs="$oldobjs $obj" ;; 7957775e7de9Smrg esac 79587a84e134Smrg done 79597a84e134Smrg fi 7960775e7de9Smrg eval cmds=\"$old_archive_cmds\" 79617a84e134Smrg 7962775e7de9Smrg func_len " $cmds" 7963775e7de9Smrg len=$func_len_result 7964775e7de9Smrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7965775e7de9Smrg cmds=$old_archive_cmds 7966775e7de9Smrg else 7967775e7de9Smrg # the command line is too long to link in one step, link in parts 7968775e7de9Smrg func_verbose "using piecewise archive linking..." 7969775e7de9Smrg save_RANLIB=$RANLIB 7970775e7de9Smrg RANLIB=: 7971775e7de9Smrg objlist= 7972775e7de9Smrg concat_cmds= 7973775e7de9Smrg save_oldobjs=$oldobjs 7974775e7de9Smrg oldobjs= 7975775e7de9Smrg # Is there a better way of finding the last object in the list? 7976775e7de9Smrg for obj in $save_oldobjs 7977775e7de9Smrg do 7978775e7de9Smrg last_oldobj=$obj 7979775e7de9Smrg done 7980775e7de9Smrg eval test_cmds=\"$old_archive_cmds\" 7981775e7de9Smrg func_len " $test_cmds" 7982775e7de9Smrg len0=$func_len_result 7983775e7de9Smrg len=$len0 7984775e7de9Smrg for obj in $save_oldobjs 7985775e7de9Smrg do 7986775e7de9Smrg func_len " $obj" 7987775e7de9Smrg func_arith $len + $func_len_result 7988775e7de9Smrg len=$func_arith_result 7989775e7de9Smrg func_append objlist " $obj" 7990775e7de9Smrg if test "$len" -lt "$max_cmd_len"; then 7991775e7de9Smrg : 7992775e7de9Smrg else 7993775e7de9Smrg # the above command should be used before it gets too long 7994775e7de9Smrg oldobjs=$objlist 7995775e7de9Smrg if test "$obj" = "$last_oldobj" ; then 7996775e7de9Smrg RANLIB=$save_RANLIB 7997775e7de9Smrg fi 7998775e7de9Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7999775e7de9Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 8000775e7de9Smrg objlist= 8001775e7de9Smrg len=$len0 8002775e7de9Smrg fi 8003775e7de9Smrg done 8004775e7de9Smrg RANLIB=$save_RANLIB 8005775e7de9Smrg oldobjs=$objlist 8006775e7de9Smrg if test "X$oldobjs" = "X" ; then 8007775e7de9Smrg eval cmds=\"\$concat_cmds\" 8008775e7de9Smrg else 8009775e7de9Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 8010775e7de9Smrg fi 8011775e7de9Smrg fi 8012775e7de9Smrg fi 8013775e7de9Smrg func_execute_cmds "$cmds" 'exit $?' 80147a84e134Smrg done 80157a84e134Smrg 8016775e7de9Smrg test -n "$generated" && \ 8017775e7de9Smrg func_show_eval "${RM}r$generated" 80187a84e134Smrg 8019775e7de9Smrg # Now create the libtool archive. 8020775e7de9Smrg case $output in 8021775e7de9Smrg *.la) 8022775e7de9Smrg old_library= 8023775e7de9Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 8024775e7de9Smrg func_verbose "creating $output" 80257a84e134Smrg 8026775e7de9Smrg # Preserve any variables that may affect compiler behavior 8027775e7de9Smrg for var in $variables_saved_for_relink; do 8028775e7de9Smrg if eval test -z \"\${$var+set}\"; then 8029775e7de9Smrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 8030775e7de9Smrg elif eval var_value=\$$var; test -z "$var_value"; then 8031775e7de9Smrg relink_command="$var=; export $var; $relink_command" 80327a84e134Smrg else 8033775e7de9Smrg func_quote_for_eval "$var_value" 8034775e7de9Smrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 80357a84e134Smrg fi 8036775e7de9Smrg done 8037775e7de9Smrg # Quote the link command for shipping. 8038775e7de9Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 8039775e7de9Smrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 8040775e7de9Smrg if test "$hardcode_automatic" = yes ; then 8041775e7de9Smrg relink_command= 8042775e7de9Smrg fi 80437a84e134Smrg 8044775e7de9Smrg # Only create the output if not a dry run. 8045775e7de9Smrg $opt_dry_run || { 8046775e7de9Smrg for installed in no yes; do 8047775e7de9Smrg if test "$installed" = yes; then 8048775e7de9Smrg if test -z "$install_libdir"; then 8049775e7de9Smrg break 8050775e7de9Smrg fi 8051775e7de9Smrg output="$output_objdir/$outputname"i 8052775e7de9Smrg # Replace all uninstalled libtool libraries with the installed ones 8053775e7de9Smrg newdependency_libs= 8054775e7de9Smrg for deplib in $dependency_libs; do 8055775e7de9Smrg case $deplib in 8056775e7de9Smrg *.la) 8057775e7de9Smrg func_basename "$deplib" 8058775e7de9Smrg name="$func_basename_result" 8059775e7de9Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 8060775e7de9Smrg test -z "$libdir" && \ 8061775e7de9Smrg func_fatal_error "\`$deplib' is not a valid libtool archive" 8062775e7de9Smrg newdependency_libs="$newdependency_libs $libdir/$name" 8063775e7de9Smrg ;; 8064775e7de9Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 8065775e7de9Smrg esac 8066775e7de9Smrg done 8067775e7de9Smrg dependency_libs="$newdependency_libs" 8068775e7de9Smrg newdlfiles= 8069775e7de9Smrg 8070775e7de9Smrg for lib in $dlfiles; do 8071775e7de9Smrg case $lib in 8072775e7de9Smrg *.la) 8073775e7de9Smrg func_basename "$lib" 8074775e7de9Smrg name="$func_basename_result" 8075775e7de9Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8076775e7de9Smrg test -z "$libdir" && \ 8077775e7de9Smrg func_fatal_error "\`$lib' is not a valid libtool archive" 8078775e7de9Smrg newdlfiles="$newdlfiles $libdir/$name" 8079775e7de9Smrg ;; 8080775e7de9Smrg *) newdlfiles="$newdlfiles $lib" ;; 8081775e7de9Smrg esac 8082775e7de9Smrg done 8083775e7de9Smrg dlfiles="$newdlfiles" 8084775e7de9Smrg newdlprefiles= 8085775e7de9Smrg for lib in $dlprefiles; do 8086775e7de9Smrg case $lib in 8087775e7de9Smrg *.la) 8088775e7de9Smrg # Only pass preopened files to the pseudo-archive (for 8089775e7de9Smrg # eventual linking with the app. that links it) if we 8090775e7de9Smrg # didn't already link the preopened objects directly into 8091775e7de9Smrg # the library: 8092775e7de9Smrg func_basename "$lib" 8093775e7de9Smrg name="$func_basename_result" 8094775e7de9Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8095775e7de9Smrg test -z "$libdir" && \ 8096775e7de9Smrg func_fatal_error "\`$lib' is not a valid libtool archive" 8097775e7de9Smrg newdlprefiles="$newdlprefiles $libdir/$name" 8098775e7de9Smrg ;; 8099775e7de9Smrg esac 8100775e7de9Smrg done 8101775e7de9Smrg dlprefiles="$newdlprefiles" 8102775e7de9Smrg else 8103775e7de9Smrg newdlfiles= 8104775e7de9Smrg for lib in $dlfiles; do 8105775e7de9Smrg case $lib in 8106775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8107775e7de9Smrg *) abs=`pwd`"/$lib" ;; 8108775e7de9Smrg esac 8109775e7de9Smrg newdlfiles="$newdlfiles $abs" 8110775e7de9Smrg done 8111775e7de9Smrg dlfiles="$newdlfiles" 8112775e7de9Smrg newdlprefiles= 8113775e7de9Smrg for lib in $dlprefiles; do 8114775e7de9Smrg case $lib in 8115775e7de9Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8116775e7de9Smrg *) abs=`pwd`"/$lib" ;; 8117775e7de9Smrg esac 8118775e7de9Smrg newdlprefiles="$newdlprefiles $abs" 8119775e7de9Smrg done 8120775e7de9Smrg dlprefiles="$newdlprefiles" 8121775e7de9Smrg fi 8122775e7de9Smrg $RM $output 8123775e7de9Smrg # place dlname in correct position for cygwin 8124775e7de9Smrg tdlname=$dlname 8125775e7de9Smrg case $host,$output,$installed,$module,$dlname in 8126775e7de9Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 8127775e7de9Smrg esac 8128775e7de9Smrg $ECHO > $output "\ 8129775e7de9Smrg# $outputname - a libtool library file 8130775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 8131775e7de9Smrg# 8132775e7de9Smrg# Please DO NOT delete this file! 8133775e7de9Smrg# It is necessary for linking the library. 81347a84e134Smrg 8135775e7de9Smrg# The name that we can dlopen(3). 8136775e7de9Smrgdlname='$tdlname' 81377a84e134Smrg 8138775e7de9Smrg# Names of this library. 8139775e7de9Smrglibrary_names='$library_names' 81407a84e134Smrg 8141775e7de9Smrg# The name of the static archive. 8142775e7de9Smrgold_library='$old_library' 81437a84e134Smrg 8144775e7de9Smrg# Linker flags that can not go in dependency_libs. 8145775e7de9Smrginherited_linker_flags='$new_inherited_linker_flags' 81467a84e134Smrg 8147775e7de9Smrg# Libraries that this one depends upon. 8148775e7de9Smrgdependency_libs='$dependency_libs' 81497a84e134Smrg 8150775e7de9Smrg# Names of additional weak libraries provided by this library 8151775e7de9Smrgweak_library_names='$weak_libs' 81527a84e134Smrg 8153775e7de9Smrg# Version information for $libname. 8154775e7de9Smrgcurrent=$current 8155775e7de9Smrgage=$age 8156775e7de9Smrgrevision=$revision 81577a84e134Smrg 8158775e7de9Smrg# Is this an already installed library? 8159775e7de9Smrginstalled=$installed 81607a84e134Smrg 8161775e7de9Smrg# Should we warn about portability when linking against -modules? 8162775e7de9Smrgshouldnotlink=$module 81637a84e134Smrg 8164775e7de9Smrg# Files to dlopen/dlpreopen 8165775e7de9Smrgdlopen='$dlfiles' 8166775e7de9Smrgdlpreopen='$dlprefiles' 81677a84e134Smrg 8168775e7de9Smrg# Directory that this library needs to be installed in: 8169775e7de9Smrglibdir='$install_libdir'" 8170775e7de9Smrg if test "$installed" = no && test "$need_relink" = yes; then 8171775e7de9Smrg $ECHO >> $output "\ 8172775e7de9Smrgrelink_command=\"$relink_command\"" 8173775e7de9Smrg fi 8174775e7de9Smrg done 8175775e7de9Smrg } 81767a84e134Smrg 8177775e7de9Smrg # Do a symbolic link so that the libtool archive can be found in 8178775e7de9Smrg # LD_LIBRARY_PATH before the program is installed. 8179775e7de9Smrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 8180775e7de9Smrg ;; 8181775e7de9Smrg esac 8182775e7de9Smrg exit $EXIT_SUCCESS 8183775e7de9Smrg} 81847a84e134Smrg 8185775e7de9Smrg{ test "$mode" = link || test "$mode" = relink; } && 8186775e7de9Smrg func_mode_link ${1+"$@"} 81877a84e134Smrg 81887a84e134Smrg 8189775e7de9Smrg# func_mode_uninstall arg... 8190775e7de9Smrgfunc_mode_uninstall () 8191775e7de9Smrg{ 8192775e7de9Smrg $opt_debug 8193775e7de9Smrg RM="$nonopt" 81947a84e134Smrg files= 81957a84e134Smrg rmforce= 81967a84e134Smrg exit_status=0 81977a84e134Smrg 81987a84e134Smrg # This variable tells wrapper scripts just to set variables rather 81997a84e134Smrg # than running their programs. 82007a84e134Smrg libtool_install_magic="$magic" 82017a84e134Smrg 82027a84e134Smrg for arg 82037a84e134Smrg do 82047a84e134Smrg case $arg in 8205775e7de9Smrg -f) RM="$RM $arg"; rmforce=yes ;; 8206775e7de9Smrg -*) RM="$RM $arg" ;; 82077a84e134Smrg *) files="$files $arg" ;; 82087a84e134Smrg esac 82097a84e134Smrg done 82107a84e134Smrg 8211775e7de9Smrg test -z "$RM" && \ 8212775e7de9Smrg func_fatal_help "you must specify an RM program" 82137a84e134Smrg 82147a84e134Smrg rmdirs= 82157a84e134Smrg 82167a84e134Smrg origobjdir="$objdir" 82177a84e134Smrg for file in $files; do 8218775e7de9Smrg func_dirname "$file" "" "." 8219775e7de9Smrg dir="$func_dirname_result" 8220775e7de9Smrg if test "X$dir" = X.; then 82217a84e134Smrg objdir="$origobjdir" 82227a84e134Smrg else 82237a84e134Smrg objdir="$dir/$origobjdir" 82247a84e134Smrg fi 8225775e7de9Smrg func_basename "$file" 8226775e7de9Smrg name="$func_basename_result" 82277a84e134Smrg test "$mode" = uninstall && objdir="$dir" 82287a84e134Smrg 82297a84e134Smrg # Remember objdir for removal later, being careful to avoid duplicates 82307a84e134Smrg if test "$mode" = clean; then 82317a84e134Smrg case " $rmdirs " in 82327a84e134Smrg *" $objdir "*) ;; 82337a84e134Smrg *) rmdirs="$rmdirs $objdir" ;; 82347a84e134Smrg esac 82357a84e134Smrg fi 82367a84e134Smrg 82377a84e134Smrg # Don't error if the file doesn't exist and rm -f was used. 8238775e7de9Smrg if { test -L "$file"; } >/dev/null 2>&1 || 8239775e7de9Smrg { test -h "$file"; } >/dev/null 2>&1 || 8240775e7de9Smrg test -f "$file"; then 82417a84e134Smrg : 82427a84e134Smrg elif test -d "$file"; then 82437a84e134Smrg exit_status=1 82447a84e134Smrg continue 82457a84e134Smrg elif test "$rmforce" = yes; then 82467a84e134Smrg continue 82477a84e134Smrg fi 82487a84e134Smrg 82497a84e134Smrg rmfiles="$file" 82507a84e134Smrg 82517a84e134Smrg case $name in 82527a84e134Smrg *.la) 82537a84e134Smrg # Possibly a libtool archive, so verify it. 8254775e7de9Smrg if func_lalib_p "$file"; then 8255775e7de9Smrg func_source $dir/$name 82567a84e134Smrg 82577a84e134Smrg # Delete the libtool libraries and symlinks. 82587a84e134Smrg for n in $library_names; do 82597a84e134Smrg rmfiles="$rmfiles $objdir/$n" 82607a84e134Smrg done 82617a84e134Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 82627a84e134Smrg 82637a84e134Smrg case "$mode" in 82647a84e134Smrg clean) 82657a84e134Smrg case " $library_names " in 82667a84e134Smrg # " " in the beginning catches empty $dlname 82677a84e134Smrg *" $dlname "*) ;; 82687a84e134Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 82697a84e134Smrg esac 8270775e7de9Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 82717a84e134Smrg ;; 82727a84e134Smrg uninstall) 82737a84e134Smrg if test -n "$library_names"; then 82747a84e134Smrg # Do each command in the postuninstall commands. 8275775e7de9Smrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82767a84e134Smrg fi 82777a84e134Smrg 82787a84e134Smrg if test -n "$old_library"; then 82797a84e134Smrg # Do each command in the old_postuninstall commands. 8280775e7de9Smrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82817a84e134Smrg fi 82827a84e134Smrg # FIXME: should reinstall the best remaining shared library. 82837a84e134Smrg ;; 82847a84e134Smrg esac 82857a84e134Smrg fi 82867a84e134Smrg ;; 82877a84e134Smrg 82887a84e134Smrg *.lo) 82897a84e134Smrg # Possibly a libtool object, so verify it. 8290775e7de9Smrg if func_lalib_p "$file"; then 82917a84e134Smrg 82927a84e134Smrg # Read the .lo file 8293775e7de9Smrg func_source $dir/$name 82947a84e134Smrg 82957a84e134Smrg # Add PIC object to the list of files to remove. 8296775e7de9Smrg if test -n "$pic_object" && 8297775e7de9Smrg test "$pic_object" != none; then 82987a84e134Smrg rmfiles="$rmfiles $dir/$pic_object" 82997a84e134Smrg fi 83007a84e134Smrg 83017a84e134Smrg # Add non-PIC object to the list of files to remove. 8302775e7de9Smrg if test -n "$non_pic_object" && 8303775e7de9Smrg test "$non_pic_object" != none; then 83047a84e134Smrg rmfiles="$rmfiles $dir/$non_pic_object" 83057a84e134Smrg fi 83067a84e134Smrg fi 83077a84e134Smrg ;; 83087a84e134Smrg 83097a84e134Smrg *) 83107a84e134Smrg if test "$mode" = clean ; then 83117a84e134Smrg noexename=$name 83127a84e134Smrg case $file in 83137a84e134Smrg *.exe) 8314775e7de9Smrg func_stripname '' '.exe' "$file" 8315775e7de9Smrg file=$func_stripname_result 8316775e7de9Smrg func_stripname '' '.exe' "$name" 8317775e7de9Smrg noexename=$func_stripname_result 83187a84e134Smrg # $file with .exe has already been added to rmfiles, 83197a84e134Smrg # add $file without .exe 83207a84e134Smrg rmfiles="$rmfiles $file" 83217a84e134Smrg ;; 83227a84e134Smrg esac 83237a84e134Smrg # Do a test to see if this is a libtool program. 8324775e7de9Smrg if func_ltwrapper_p "$file"; then 8325775e7de9Smrg if func_ltwrapper_executable_p "$file"; then 8326775e7de9Smrg func_ltwrapper_scriptname "$file" 8327775e7de9Smrg relink_command= 8328775e7de9Smrg func_source $func_ltwrapper_scriptname_result 8329775e7de9Smrg rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 8330775e7de9Smrg else 8331775e7de9Smrg relink_command= 8332775e7de9Smrg func_source $dir/$noexename 8333775e7de9Smrg fi 83347a84e134Smrg 83357a84e134Smrg # note $name still contains .exe if it was in $file originally 83367a84e134Smrg # as does the version of $file that was added into $rmfiles 83377a84e134Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 83387a84e134Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 83397a84e134Smrg rmfiles="$rmfiles $objdir/lt-$name" 83407a84e134Smrg fi 83417a84e134Smrg if test "X$noexename" != "X$name" ; then 83427a84e134Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 83437a84e134Smrg fi 83447a84e134Smrg fi 83457a84e134Smrg fi 83467a84e134Smrg ;; 83477a84e134Smrg esac 8348775e7de9Smrg func_show_eval "$RM $rmfiles" 'exit_status=1' 83497a84e134Smrg done 83507a84e134Smrg objdir="$origobjdir" 83517a84e134Smrg 83527a84e134Smrg # Try to remove the ${objdir}s in the directories where we deleted files 83537a84e134Smrg for dir in $rmdirs; do 83547a84e134Smrg if test -d "$dir"; then 8355775e7de9Smrg func_show_eval "rmdir $dir >/dev/null 2>&1" 83567a84e134Smrg fi 83577a84e134Smrg done 83587a84e134Smrg 83597a84e134Smrg exit $exit_status 8360775e7de9Smrg} 83617a84e134Smrg 8362775e7de9Smrg{ test "$mode" = uninstall || test "$mode" = clean; } && 8363775e7de9Smrg func_mode_uninstall ${1+"$@"} 83647a84e134Smrg 8365775e7de9Smrgtest -z "$mode" && { 8366775e7de9Smrg help="$generic_help" 8367775e7de9Smrg func_fatal_help "you must specify a MODE" 8368775e7de9Smrg} 8369775e7de9Smrg 8370775e7de9Smrgtest -z "$exec_cmd" && \ 8371775e7de9Smrg func_fatal_help "invalid operation mode \`$mode'" 83727a84e134Smrg 83737a84e134Smrgif test -n "$exec_cmd"; then 8374775e7de9Smrg eval exec "$exec_cmd" 83757a84e134Smrg exit $EXIT_FAILURE 83767a84e134Smrgfi 83777a84e134Smrg 8378775e7de9Smrgexit $exit_status 83797a84e134Smrg 83807a84e134Smrg 83817a84e134Smrg# The TAGs below are defined such that we never get into a situation 83827a84e134Smrg# in which we disable both kinds of libraries. Given conflicting 83837a84e134Smrg# choices, we go for a static library, that is the most portable, 83847a84e134Smrg# since we can't tell whether shared libraries were disabled because 83857a84e134Smrg# the user asked for that or because the platform doesn't support 83867a84e134Smrg# them. This is particularly important on AIX, because we don't 83877a84e134Smrg# support having both static and shared libraries enabled at the same 83887a84e134Smrg# time on that platform, so we default to a shared-only configuration. 83897a84e134Smrg# If a disable-shared tag is given, we'll fallback to a static-only 83907a84e134Smrg# configuration. But we'll never go from static-only to shared-only. 83917a84e134Smrg 83927a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 8393775e7de9Smrgbuild_libtool_libs=no 8394775e7de9Smrgbuild_old_libs=yes 83957a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 83967a84e134Smrg 83977a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 8398775e7de9Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 83997a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-static 84007a84e134Smrg 84017a84e134Smrg# Local Variables: 84027a84e134Smrg# mode:shell-script 84037a84e134Smrg# sh-indentation:2 84047a84e134Smrg# End: 8405775e7de9Smrg# vi:sw=2 8406775e7de9Smrg 8407