ltmain.sh revision 72313efb
172313efbSmrg# Generated from ltmain.m4sh. 272313efbSmrg 372313efbSmrg# ltmain.sh (GNU libtool) 2.2.6 472313efbSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 572313efbSmrg 672313efbSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 772313efbSmrg# This is free software; see the source for copying conditions. There is NO 872313efbSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 972313efbSmrg 1072313efbSmrg# GNU Libtool is free software; you can redistribute it and/or modify 11bdcaa8d0Smrg# it under the terms of the GNU General Public License as published by 12bdcaa8d0Smrg# the Free Software Foundation; either version 2 of the License, or 13bdcaa8d0Smrg# (at your option) any later version. 14bdcaa8d0Smrg# 1572313efbSmrg# As a special exception to the GNU General Public License, 1672313efbSmrg# if you distribute this file as part of a program or library that 1772313efbSmrg# is built using GNU Libtool, you may include this file under the 1872313efbSmrg# same distribution terms that you use for the rest of that program. 1972313efbSmrg# 2072313efbSmrg# GNU Libtool is distributed in the hope that it will be useful, but 21bdcaa8d0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 22bdcaa8d0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23bdcaa8d0Smrg# General Public License for more details. 24bdcaa8d0Smrg# 25bdcaa8d0Smrg# You should have received a copy of the GNU General Public License 2672313efbSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 2772313efbSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 2872313efbSmrg# or obtained by writing to the Free Software Foundation, Inc., 2972313efbSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3072313efbSmrg 3172313efbSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 3272313efbSmrg# 3372313efbSmrg# Provide generalized library-building support services. 34bdcaa8d0Smrg# 3572313efbSmrg# --config show all configuration variables 3672313efbSmrg# --debug enable verbose shell tracing 3772313efbSmrg# -n, --dry-run display commands without modifying any files 3872313efbSmrg# --features display basic configuration information and exit 3972313efbSmrg# --mode=MODE use operation mode MODE 4072313efbSmrg# --preserve-dup-deps don't remove duplicate dependency libraries 4172313efbSmrg# --quiet, --silent don't print informational messages 4272313efbSmrg# --tag=TAG use configuration variables from tag TAG 4372313efbSmrg# -v, --verbose print informational messages (default) 4472313efbSmrg# --version print version information 4572313efbSmrg# -h, --help print short or long help message 4672313efbSmrg# 4772313efbSmrg# MODE must be one of the following: 4872313efbSmrg# 4972313efbSmrg# clean remove files from the build directory 5072313efbSmrg# compile compile a source file into a libtool object 5172313efbSmrg# execute automatically set library path, then run a program 5272313efbSmrg# finish complete the installation of libtool libraries 5372313efbSmrg# install install libraries or executables 5472313efbSmrg# link create a library or an executable 5572313efbSmrg# uninstall remove libraries from an installed directory 5672313efbSmrg# 5772313efbSmrg# MODE-ARGS vary depending on the MODE. 5872313efbSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 5972313efbSmrg# 6072313efbSmrg# When reporting a bug, please describe a test case to reproduce it and 6172313efbSmrg# include the following information: 6272313efbSmrg# 6372313efbSmrg# host-triplet: $host 6472313efbSmrg# shell: $SHELL 6572313efbSmrg# compiler: $LTCC 6672313efbSmrg# compiler flags: $LTCFLAGS 6772313efbSmrg# linker: $LD (gnu? $with_gnu_ld) 6872313efbSmrg# $progname: (GNU libtool) 2.2.6 6972313efbSmrg# automake: $automake_version 7072313efbSmrg# autoconf: $autoconf_version 7172313efbSmrg# 7272313efbSmrg# Report bugs to <bug-libtool@gnu.org>. 7372313efbSmrg 7472313efbSmrgPROGRAM=ltmain.sh 7572313efbSmrgPACKAGE=libtool 7672313efbSmrgVERSION=2.2.6 7772313efbSmrgTIMESTAMP="" 7872313efbSmrgpackage_revision=1.3012 7972313efbSmrg 8072313efbSmrg# Be Bourne compatible 8172313efbSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8272313efbSmrg emulate sh 8372313efbSmrg NULLCMD=: 8472313efbSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 8572313efbSmrg # is contrary to our usage. Disable this feature. 8672313efbSmrg alias -g '${1+"$@"}'='"$@"' 8772313efbSmrg setopt NO_GLOB_SUBST 8872313efbSmrgelse 8972313efbSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9072313efbSmrgfi 9172313efbSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 9272313efbSmrgDUALCASE=1; export DUALCASE # for MKS sh 9372313efbSmrg 9472313efbSmrg# NLS nuisances: We save the old values to restore during execute mode. 9572313efbSmrg# Only set LANG and LC_ALL to C if already set. 9672313efbSmrg# These must not be set unconditionally because not all systems understand 9772313efbSmrg# e.g. LANG=C (notably SCO). 9872313efbSmrglt_user_locale= 9972313efbSmrglt_safe_locale= 10072313efbSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 10172313efbSmrgdo 10272313efbSmrg eval "if test \"\${$lt_var+set}\" = set; then 10372313efbSmrg save_$lt_var=\$$lt_var 10472313efbSmrg $lt_var=C 10572313efbSmrg export $lt_var 10672313efbSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 10772313efbSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 10872313efbSmrg fi" 10972313efbSmrgdone 11072313efbSmrg 11172313efbSmrg$lt_unset CDPATH 11272313efbSmrg 11372313efbSmrg 11472313efbSmrg 11572313efbSmrg 11672313efbSmrg 11772313efbSmrg: ${CP="cp -f"} 11872313efbSmrg: ${ECHO="echo"} 11972313efbSmrg: ${EGREP="/bin/grep -E"} 12072313efbSmrg: ${FGREP="/bin/grep -F"} 12172313efbSmrg: ${GREP="/bin/grep"} 12272313efbSmrg: ${LN_S="ln -s"} 12372313efbSmrg: ${MAKE="make"} 12472313efbSmrg: ${MKDIR="mkdir"} 12572313efbSmrg: ${MV="mv -f"} 12672313efbSmrg: ${RM="rm -f"} 12772313efbSmrg: ${SED="/bin/sed"} 12872313efbSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 12972313efbSmrg: ${Xsed="$SED -e 1s/^X//"} 130bdcaa8d0Smrg 13172313efbSmrg# Global variables: 13272313efbSmrgEXIT_SUCCESS=0 13372313efbSmrgEXIT_FAILURE=1 13472313efbSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 13572313efbSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 13672313efbSmrg 13772313efbSmrgexit_status=$EXIT_SUCCESS 13872313efbSmrg 13972313efbSmrg# Make sure IFS has a sensible default 14072313efbSmrglt_nl=' 14172313efbSmrg' 14272313efbSmrgIFS=" $lt_nl" 14372313efbSmrg 14472313efbSmrgdirname="s,/[^/]*$,," 14572313efbSmrgbasename="s,^.*/,," 14672313efbSmrg 14772313efbSmrg# func_dirname_and_basename file append nondir_replacement 14872313efbSmrg# perform func_basename and func_dirname in a single function 14972313efbSmrg# call: 15072313efbSmrg# dirname: Compute the dirname of FILE. If nonempty, 15172313efbSmrg# add APPEND to the result, otherwise set result 15272313efbSmrg# to NONDIR_REPLACEMENT. 15372313efbSmrg# value returned in "$func_dirname_result" 15472313efbSmrg# basename: Compute filename of FILE. 15572313efbSmrg# value retuned in "$func_basename_result" 15672313efbSmrg# Implementation must be kept synchronized with func_dirname 15772313efbSmrg# and func_basename. For efficiency, we do not delegate to 15872313efbSmrg# those functions but instead duplicate the functionality here. 15972313efbSmrgfunc_dirname_and_basename () 16072313efbSmrg{ 16172313efbSmrg # Extract subdirectory from the argument. 16272313efbSmrg func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 16372313efbSmrg if test "X$func_dirname_result" = "X${1}"; then 16472313efbSmrg func_dirname_result="${3}" 16572313efbSmrg else 16672313efbSmrg func_dirname_result="$func_dirname_result${2}" 16772313efbSmrg fi 16872313efbSmrg func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 16972313efbSmrg} 17072313efbSmrg 17172313efbSmrg# Generated shell functions inserted here. 172bdcaa8d0Smrg 173bdcaa8d0Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 174bdcaa8d0Smrg# is ksh but when the shell is invoked as "sh" and the current value of 175bdcaa8d0Smrg# the _XPG environment variable is not equal to 1 (one), the special 176bdcaa8d0Smrg# positional parameter $0, within a function call, is the name of the 177bdcaa8d0Smrg# function. 178bdcaa8d0Smrgprogpath="$0" 179bdcaa8d0Smrg 180bdcaa8d0Smrg# The name of this program: 18172313efbSmrg# In the unlikely event $progname began with a '-', it would play havoc with 18272313efbSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case: 18372313efbSmrgfunc_dirname_and_basename "$progpath" 18472313efbSmrgprogname=$func_basename_result 18572313efbSmrgcase $progname in 18672313efbSmrg -*) progname=./$progname ;; 18772313efbSmrgesac 188bdcaa8d0Smrg 18972313efbSmrg# Make sure we have an absolute path for reexecution: 19072313efbSmrgcase $progpath in 19172313efbSmrg [\\/]*|[A-Za-z]:\\*) ;; 19272313efbSmrg *[\\/]*) 19372313efbSmrg progdir=$func_dirname_result 19472313efbSmrg progdir=`cd "$progdir" && pwd` 19572313efbSmrg progpath="$progdir/$progname" 19672313efbSmrg ;; 19772313efbSmrg *) 19872313efbSmrg save_IFS="$IFS" 19972313efbSmrg IFS=: 20072313efbSmrg for progdir in $PATH; do 20172313efbSmrg IFS="$save_IFS" 20272313efbSmrg test -x "$progdir/$progname" && break 20372313efbSmrg done 20472313efbSmrg IFS="$save_IFS" 20572313efbSmrg test -n "$progdir" || progdir=`pwd` 20672313efbSmrg progpath="$progdir/$progname" 20772313efbSmrg ;; 20872313efbSmrgesac 209bdcaa8d0Smrg 21072313efbSmrg# Sed substitution that helps us do robust quoting. It backslashifies 21172313efbSmrg# metacharacters that are still active within double-quoted strings. 21272313efbSmrgXsed="${SED}"' -e 1s/^X//' 21372313efbSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 21472313efbSmrg 21572313efbSmrg# Same as above, but do not quote variable references. 21672313efbSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 21772313efbSmrg 21872313efbSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 21972313efbSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 22072313efbSmrg# in input to double_quote_subst, that '$' was protected from expansion. 22172313efbSmrg# Since each input `\' is now two `\'s, look for any number of runs of 22272313efbSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 22372313efbSmrgbs='\\' 22472313efbSmrgbs2='\\\\' 22572313efbSmrgbs4='\\\\\\\\' 22672313efbSmrgdollar='\$' 22772313efbSmrgsed_double_backslash="\ 22872313efbSmrg s/$bs4/&\\ 22972313efbSmrg/g 23072313efbSmrg s/^$bs2$dollar/$bs&/ 23172313efbSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 23272313efbSmrg s/\n//g" 23372313efbSmrg 23472313efbSmrg# Standard options: 23572313efbSmrgopt_dry_run=false 23672313efbSmrgopt_help=false 23772313efbSmrgopt_quiet=false 23872313efbSmrgopt_verbose=false 23972313efbSmrgopt_warning=: 24072313efbSmrg 24172313efbSmrg# func_echo arg... 24272313efbSmrg# Echo program name prefixed message, along with the current mode 24372313efbSmrg# name if it has been set yet. 24472313efbSmrgfunc_echo () 24572313efbSmrg{ 24672313efbSmrg $ECHO "$progname${mode+: }$mode: $*" 24772313efbSmrg} 248bdcaa8d0Smrg 24972313efbSmrg# func_verbose arg... 25072313efbSmrg# Echo program name prefixed message in verbose mode only. 25172313efbSmrgfunc_verbose () 25272313efbSmrg{ 25372313efbSmrg $opt_verbose && func_echo ${1+"$@"} 254bdcaa8d0Smrg 25572313efbSmrg # A bug in bash halts the script if the last line of a function 25672313efbSmrg # fails when set -e is in force, so we need another command to 25772313efbSmrg # work around that: 25872313efbSmrg : 25972313efbSmrg} 260bdcaa8d0Smrg 26172313efbSmrg# func_error arg... 26272313efbSmrg# Echo program name prefixed message to standard error. 26372313efbSmrgfunc_error () 26472313efbSmrg{ 26572313efbSmrg $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 26672313efbSmrg} 267bdcaa8d0Smrg 26872313efbSmrg# func_warning arg... 26972313efbSmrg# Echo program name prefixed warning message to standard error. 27072313efbSmrgfunc_warning () 27172313efbSmrg{ 27272313efbSmrg $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 273bdcaa8d0Smrg 27472313efbSmrg # bash bug again: 27572313efbSmrg : 27672313efbSmrg} 277bdcaa8d0Smrg 27872313efbSmrg# func_fatal_error arg... 27972313efbSmrg# Echo program name prefixed message to standard error, and exit. 28072313efbSmrgfunc_fatal_error () 28172313efbSmrg{ 28272313efbSmrg func_error ${1+"$@"} 28372313efbSmrg exit $EXIT_FAILURE 28472313efbSmrg} 285bdcaa8d0Smrg 28672313efbSmrg# func_fatal_help arg... 28772313efbSmrg# Echo program name prefixed message to standard error, followed by 28872313efbSmrg# a help hint, and exit. 28972313efbSmrgfunc_fatal_help () 29072313efbSmrg{ 29172313efbSmrg func_error ${1+"$@"} 29272313efbSmrg func_fatal_error "$help" 29372313efbSmrg} 29472313efbSmrghelp="Try \`$progname --help' for more information." ## default 295bdcaa8d0Smrg 296bdcaa8d0Smrg 29772313efbSmrg# func_grep expression filename 29872313efbSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 29972313efbSmrgfunc_grep () 30072313efbSmrg{ 30172313efbSmrg $GREP "$1" "$2" >/dev/null 2>&1 30272313efbSmrg} 30372313efbSmrg 30472313efbSmrg 30572313efbSmrg# func_mkdir_p directory-path 30672313efbSmrg# Make sure the entire path to DIRECTORY-PATH is available. 30772313efbSmrgfunc_mkdir_p () 30872313efbSmrg{ 30972313efbSmrg my_directory_path="$1" 31072313efbSmrg my_dir_list= 31172313efbSmrg 31272313efbSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 31372313efbSmrg 31472313efbSmrg # Protect directory names starting with `-' 31572313efbSmrg case $my_directory_path in 31672313efbSmrg -*) my_directory_path="./$my_directory_path" ;; 31772313efbSmrg esac 31872313efbSmrg 31972313efbSmrg # While some portion of DIR does not yet exist... 32072313efbSmrg while test ! -d "$my_directory_path"; do 32172313efbSmrg # ...make a list in topmost first order. Use a colon delimited 32272313efbSmrg # list incase some portion of path contains whitespace. 32372313efbSmrg my_dir_list="$my_directory_path:$my_dir_list" 32472313efbSmrg 32572313efbSmrg # If the last portion added has no slash in it, the list is done 32672313efbSmrg case $my_directory_path in */*) ;; *) break ;; esac 32772313efbSmrg 32872313efbSmrg # ...otherwise throw away the child directory and loop 32972313efbSmrg my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 33072313efbSmrg done 33172313efbSmrg my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 33272313efbSmrg 33372313efbSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 33472313efbSmrg for my_dir in $my_dir_list; do 33572313efbSmrg IFS="$save_mkdir_p_IFS" 33672313efbSmrg # mkdir can fail with a `File exist' error if two processes 33772313efbSmrg # try to create one of the directories concurrently. Don't 33872313efbSmrg # stop in that case! 33972313efbSmrg $MKDIR "$my_dir" 2>/dev/null || : 34072313efbSmrg done 34172313efbSmrg IFS="$save_mkdir_p_IFS" 34272313efbSmrg 34372313efbSmrg # Bail out if we (or some other process) failed to create a directory. 34472313efbSmrg test -d "$my_directory_path" || \ 34572313efbSmrg func_fatal_error "Failed to create \`$1'" 34672313efbSmrg fi 34772313efbSmrg} 348bdcaa8d0Smrg 349bdcaa8d0Smrg 350bdcaa8d0Smrg# func_mktempdir [string] 351bdcaa8d0Smrg# Make a temporary directory that won't clash with other running 352bdcaa8d0Smrg# libtool processes, and avoids race conditions if possible. If 353bdcaa8d0Smrg# given, STRING is the basename for that directory. 354bdcaa8d0Smrgfunc_mktempdir () 355bdcaa8d0Smrg{ 356bdcaa8d0Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 357bdcaa8d0Smrg 35872313efbSmrg if test "$opt_dry_run" = ":"; then 359bdcaa8d0Smrg # Return a directory name, but don't create it in dry-run mode 360bdcaa8d0Smrg my_tmpdir="${my_template}-$$" 361bdcaa8d0Smrg else 362bdcaa8d0Smrg 363bdcaa8d0Smrg # If mktemp works, use that first and foremost 364bdcaa8d0Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 365bdcaa8d0Smrg 366bdcaa8d0Smrg if test ! -d "$my_tmpdir"; then 36772313efbSmrg # Failing that, at least try and use $RANDOM to avoid a race 36872313efbSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 369bdcaa8d0Smrg 37072313efbSmrg save_mktempdir_umask=`umask` 37172313efbSmrg umask 0077 37272313efbSmrg $MKDIR "$my_tmpdir" 37372313efbSmrg umask $save_mktempdir_umask 374bdcaa8d0Smrg fi 375bdcaa8d0Smrg 376bdcaa8d0Smrg # If we're not in dry-run mode, bomb out on failure 37772313efbSmrg test -d "$my_tmpdir" || \ 37872313efbSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 379bdcaa8d0Smrg fi 380bdcaa8d0Smrg 38172313efbSmrg $ECHO "X$my_tmpdir" | $Xsed 382bdcaa8d0Smrg} 383bdcaa8d0Smrg 384bdcaa8d0Smrg 38572313efbSmrg# func_quote_for_eval arg 38672313efbSmrg# Aesthetically quote ARG to be evaled later. 38772313efbSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 38872313efbSmrg# is double-quoted, suitable for a subsequent eval, whereas 38972313efbSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 39072313efbSmrg# which are still active within double quotes backslashified. 39172313efbSmrgfunc_quote_for_eval () 392bdcaa8d0Smrg{ 39372313efbSmrg case $1 in 39472313efbSmrg *[\\\`\"\$]*) 39572313efbSmrg func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 39672313efbSmrg *) 39772313efbSmrg func_quote_for_eval_unquoted_result="$1" ;; 39872313efbSmrg esac 39972313efbSmrg 40072313efbSmrg case $func_quote_for_eval_unquoted_result in 40172313efbSmrg # Double-quote args containing shell metacharacters to delay 40272313efbSmrg # word splitting, command substitution and and variable 40372313efbSmrg # expansion for a subsequent eval. 40472313efbSmrg # Many Bourne shells cannot handle close brackets correctly 40572313efbSmrg # in scan sets, so we specify it separately. 40672313efbSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 40772313efbSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 40872313efbSmrg ;; 40972313efbSmrg *) 41072313efbSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 411bdcaa8d0Smrg esac 412bdcaa8d0Smrg} 413bdcaa8d0Smrg 414bdcaa8d0Smrg 41572313efbSmrg# func_quote_for_expand arg 41672313efbSmrg# Aesthetically quote ARG to be evaled later; same as above, 41772313efbSmrg# but do not quote variable references. 41872313efbSmrgfunc_quote_for_expand () 419bdcaa8d0Smrg{ 42072313efbSmrg case $1 in 42172313efbSmrg *[\\\`\"]*) 42272313efbSmrg my_arg=`$ECHO "X$1" | $Xsed \ 42372313efbSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 424bdcaa8d0Smrg *) 42572313efbSmrg my_arg="$1" ;; 42672313efbSmrg esac 42772313efbSmrg 42872313efbSmrg case $my_arg in 42972313efbSmrg # Double-quote args containing shell metacharacters to delay 43072313efbSmrg # word splitting and command substitution for a subsequent eval. 43172313efbSmrg # Many Bourne shells cannot handle close brackets correctly 43272313efbSmrg # in scan sets, so we specify it separately. 43372313efbSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 43472313efbSmrg my_arg="\"$my_arg\"" 43572313efbSmrg ;; 43672313efbSmrg esac 43772313efbSmrg 43872313efbSmrg func_quote_for_expand_result="$my_arg" 439bdcaa8d0Smrg} 440bdcaa8d0Smrg 441bdcaa8d0Smrg 44272313efbSmrg# func_show_eval cmd [fail_exp] 44372313efbSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 44472313efbSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 44572313efbSmrg# is given, then evaluate it. 44672313efbSmrgfunc_show_eval () 447bdcaa8d0Smrg{ 44872313efbSmrg my_cmd="$1" 44972313efbSmrg my_fail_exp="${2-:}" 450bdcaa8d0Smrg 45172313efbSmrg ${opt_silent-false} || { 45272313efbSmrg func_quote_for_expand "$my_cmd" 45372313efbSmrg eval "func_echo $func_quote_for_expand_result" 45472313efbSmrg } 45572313efbSmrg 45672313efbSmrg if ${opt_dry_run-false}; then :; else 45772313efbSmrg eval "$my_cmd" 45872313efbSmrg my_status=$? 45972313efbSmrg if test "$my_status" -eq 0; then :; else 46072313efbSmrg eval "(exit $my_status); $my_fail_exp" 46172313efbSmrg fi 462bdcaa8d0Smrg fi 463bdcaa8d0Smrg} 464bdcaa8d0Smrg 46572313efbSmrg 46672313efbSmrg# func_show_eval_locale cmd [fail_exp] 46772313efbSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 46872313efbSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 46972313efbSmrg# is given, then evaluate it. Use the saved locale for evaluation. 47072313efbSmrgfunc_show_eval_locale () 471bdcaa8d0Smrg{ 47272313efbSmrg my_cmd="$1" 47372313efbSmrg my_fail_exp="${2-:}" 474bdcaa8d0Smrg 47572313efbSmrg ${opt_silent-false} || { 47672313efbSmrg func_quote_for_expand "$my_cmd" 47772313efbSmrg eval "func_echo $func_quote_for_expand_result" 47872313efbSmrg } 47972313efbSmrg 48072313efbSmrg if ${opt_dry_run-false}; then :; else 48172313efbSmrg eval "$lt_user_locale 48272313efbSmrg $my_cmd" 48372313efbSmrg my_status=$? 48472313efbSmrg eval "$lt_safe_locale" 48572313efbSmrg if test "$my_status" -eq 0; then :; else 48672313efbSmrg eval "(exit $my_status); $my_fail_exp" 487bdcaa8d0Smrg fi 48872313efbSmrg fi 489bdcaa8d0Smrg} 490bdcaa8d0Smrg 491bdcaa8d0Smrg 492bdcaa8d0Smrg 49372313efbSmrg 49472313efbSmrg 49572313efbSmrg# func_version 49672313efbSmrg# Echo version message to standard output and exit. 49772313efbSmrgfunc_version () 49872313efbSmrg{ 49972313efbSmrg $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 50072313efbSmrg s/^# // 50172313efbSmrg s/^# *$// 50272313efbSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 50372313efbSmrg p 50472313efbSmrg }' < "$progpath" 50572313efbSmrg exit $? 50672313efbSmrg} 50772313efbSmrg 50872313efbSmrg# func_usage 50972313efbSmrg# Echo short help message to standard output and exit. 51072313efbSmrgfunc_usage () 51172313efbSmrg{ 51272313efbSmrg $SED -n '/^# Usage:/,/# -h/ { 51372313efbSmrg s/^# // 51472313efbSmrg s/^# *$// 51572313efbSmrg s/\$progname/'$progname'/ 51672313efbSmrg p 51772313efbSmrg }' < "$progpath" 51872313efbSmrg $ECHO 51972313efbSmrg $ECHO "run \`$progname --help | more' for full usage" 52072313efbSmrg exit $? 52172313efbSmrg} 52272313efbSmrg 52372313efbSmrg# func_help 52472313efbSmrg# Echo long help message to standard output and exit. 52572313efbSmrgfunc_help () 52672313efbSmrg{ 52772313efbSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 52872313efbSmrg s/^# // 52972313efbSmrg s/^# *$// 53072313efbSmrg s*\$progname*'$progname'* 53172313efbSmrg s*\$host*'"$host"'* 53272313efbSmrg s*\$SHELL*'"$SHELL"'* 53372313efbSmrg s*\$LTCC*'"$LTCC"'* 53472313efbSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 53572313efbSmrg s*\$LD*'"$LD"'* 53672313efbSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 53772313efbSmrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 53872313efbSmrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 53972313efbSmrg p 54072313efbSmrg }' < "$progpath" 54172313efbSmrg exit $? 54272313efbSmrg} 54372313efbSmrg 54472313efbSmrg# func_missing_arg argname 54572313efbSmrg# Echo program name prefixed message to standard error and set global 54672313efbSmrg# exit_cmd. 54772313efbSmrgfunc_missing_arg () 54872313efbSmrg{ 54972313efbSmrg func_error "missing argument for $1" 55072313efbSmrg exit_cmd=exit 55172313efbSmrg} 55272313efbSmrg 55372313efbSmrgexit_cmd=: 55472313efbSmrg 55572313efbSmrg 55672313efbSmrg 55772313efbSmrg 55872313efbSmrg 55972313efbSmrg# Check that we have a working $ECHO. 56072313efbSmrgif test "X$1" = X--no-reexec; then 56172313efbSmrg # Discard the --no-reexec flag, and continue. 562bdcaa8d0Smrg shift 56372313efbSmrgelif test "X$1" = X--fallback-echo; then 56472313efbSmrg # Avoid inline document here, it may be left over 56572313efbSmrg : 56672313efbSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 56772313efbSmrg # Yippee, $ECHO works! 56872313efbSmrg : 56972313efbSmrgelse 57072313efbSmrg # Restart under the correct shell, and then maybe $ECHO will work. 57172313efbSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 57272313efbSmrgfi 573bdcaa8d0Smrg 57472313efbSmrgif test "X$1" = X--fallback-echo; then 57572313efbSmrg # used as fallback echo 57672313efbSmrg shift 57772313efbSmrg cat <<EOF 57872313efbSmrg$* 57972313efbSmrgEOF 58072313efbSmrg exit $EXIT_SUCCESS 58172313efbSmrgfi 582bdcaa8d0Smrg 58372313efbSmrgmagic="%%%MAGIC variable%%%" 58472313efbSmrgmagic_exe="%%%MAGIC EXE variable%%%" 585bdcaa8d0Smrg 58672313efbSmrg# Global variables. 58772313efbSmrg# $mode is unset 58872313efbSmrgnonopt= 58972313efbSmrgexecute_dlfiles= 59072313efbSmrgpreserve_args= 59172313efbSmrglo2o="s/\\.lo\$/.${objext}/" 59272313efbSmrgo2lo="s/\\.${objext}\$/.lo/" 59372313efbSmrgextracted_archives= 59472313efbSmrgextracted_serial=0 595bdcaa8d0Smrg 59672313efbSmrgopt_dry_run=false 59772313efbSmrgopt_duplicate_deps=false 59872313efbSmrgopt_silent=false 59972313efbSmrgopt_debug=: 600bdcaa8d0Smrg 60172313efbSmrg# If this variable is set in any of the actions, the command in it 60272313efbSmrg# will be execed at the end. This prevents here-documents from being 60372313efbSmrg# left over by shells. 60472313efbSmrgexec_cmd= 605bdcaa8d0Smrg 60672313efbSmrg# func_fatal_configuration arg... 60772313efbSmrg# Echo program name prefixed message to standard error, followed by 60872313efbSmrg# a configuration failure hint, and exit. 60972313efbSmrgfunc_fatal_configuration () 61072313efbSmrg{ 61172313efbSmrg func_error ${1+"$@"} 61272313efbSmrg func_error "See the $PACKAGE documentation for more information." 61372313efbSmrg func_fatal_error "Fatal configuration error." 61472313efbSmrg} 61572313efbSmrg 61672313efbSmrg 61772313efbSmrg# func_config 61872313efbSmrg# Display the configuration for all the tags in this script. 61972313efbSmrgfunc_config () 62072313efbSmrg{ 62172313efbSmrg re_begincf='^# ### BEGIN LIBTOOL' 62272313efbSmrg re_endcf='^# ### END LIBTOOL' 62372313efbSmrg 62472313efbSmrg # Default configuration. 62572313efbSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 626bdcaa8d0Smrg 627bdcaa8d0Smrg # Now print the configurations for the tags. 628bdcaa8d0Smrg for tagname in $taglist; do 62972313efbSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 630bdcaa8d0Smrg done 631bdcaa8d0Smrg 63272313efbSmrg exit $? 63372313efbSmrg} 634bdcaa8d0Smrg 63572313efbSmrg# func_features 63672313efbSmrg# Display the features supported by this script. 63772313efbSmrgfunc_features () 63872313efbSmrg{ 63972313efbSmrg $ECHO "host: $host" 640bdcaa8d0Smrg if test "$build_libtool_libs" = yes; then 64172313efbSmrg $ECHO "enable shared libraries" 642bdcaa8d0Smrg else 64372313efbSmrg $ECHO "disable shared libraries" 644bdcaa8d0Smrg fi 645bdcaa8d0Smrg if test "$build_old_libs" = yes; then 64672313efbSmrg $ECHO "enable static libraries" 647bdcaa8d0Smrg else 64872313efbSmrg $ECHO "disable static libraries" 649bdcaa8d0Smrg fi 65072313efbSmrg 651bdcaa8d0Smrg exit $? 65272313efbSmrg} 65372313efbSmrg 65472313efbSmrg# func_enable_tag tagname 65572313efbSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 65672313efbSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 65772313efbSmrg# variable here. 65872313efbSmrgfunc_enable_tag () 65972313efbSmrg{ 66072313efbSmrg # Global variable: 66172313efbSmrg tagname="$1" 662bdcaa8d0Smrg 66372313efbSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 66472313efbSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 66572313efbSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 666bdcaa8d0Smrg 66772313efbSmrg # Validate tagname. 66872313efbSmrg case $tagname in 66972313efbSmrg *[!-_A-Za-z0-9,/]*) 67072313efbSmrg func_fatal_error "invalid tag name: $tagname" 67172313efbSmrg ;; 67272313efbSmrg esac 673bdcaa8d0Smrg 67472313efbSmrg # Don't test for the "default" C tag, as we know it's 67572313efbSmrg # there but not specially marked. 67672313efbSmrg case $tagname in 67772313efbSmrg CC) ;; 67872313efbSmrg *) 67972313efbSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 68072313efbSmrg taglist="$taglist $tagname" 68172313efbSmrg 68272313efbSmrg # Evaluate the configuration. Be careful to quote the path 68372313efbSmrg # and the sed script, to avoid splitting on whitespace, but 68472313efbSmrg # also don't use non-portable quotes within backquotes within 68572313efbSmrg # quotes we have to do it in 2 steps: 68672313efbSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 68772313efbSmrg eval "$extractedcf" 68872313efbSmrg else 68972313efbSmrg func_error "ignoring unknown tag $tagname" 69072313efbSmrg fi 69172313efbSmrg ;; 69272313efbSmrg esac 69372313efbSmrg} 694bdcaa8d0Smrg 69572313efbSmrg# Parse options once, thoroughly. This comes as soon as possible in 69672313efbSmrg# the script to make things like `libtool --version' happen quickly. 69772313efbSmrg{ 698bdcaa8d0Smrg 69972313efbSmrg # Shorthand for --mode=foo, only valid as the first argument 70072313efbSmrg case $1 in 70172313efbSmrg clean|clea|cle|cl) 70272313efbSmrg shift; set dummy --mode clean ${1+"$@"}; shift 703bdcaa8d0Smrg ;; 70472313efbSmrg compile|compil|compi|comp|com|co|c) 70572313efbSmrg shift; set dummy --mode compile ${1+"$@"}; shift 706bdcaa8d0Smrg ;; 70772313efbSmrg execute|execut|execu|exec|exe|ex|e) 70872313efbSmrg shift; set dummy --mode execute ${1+"$@"}; shift 709bdcaa8d0Smrg ;; 71072313efbSmrg finish|finis|fini|fin|fi|f) 71172313efbSmrg shift; set dummy --mode finish ${1+"$@"}; shift 712bdcaa8d0Smrg ;; 71372313efbSmrg install|instal|insta|inst|ins|in|i) 71472313efbSmrg shift; set dummy --mode install ${1+"$@"}; shift 71572313efbSmrg ;; 71672313efbSmrg link|lin|li|l) 71772313efbSmrg shift; set dummy --mode link ${1+"$@"}; shift 71872313efbSmrg ;; 71972313efbSmrg uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 72072313efbSmrg shift; set dummy --mode uninstall ${1+"$@"}; shift 721bdcaa8d0Smrg ;; 722bdcaa8d0Smrg esac 723bdcaa8d0Smrg 72472313efbSmrg # Parse non-mode specific arguments: 72572313efbSmrg while test "$#" -gt 0; do 72672313efbSmrg opt="$1" 72772313efbSmrg shift 728bdcaa8d0Smrg 72972313efbSmrg case $opt in 73072313efbSmrg --config) func_config ;; 731bdcaa8d0Smrg 73272313efbSmrg --debug) preserve_args="$preserve_args $opt" 73372313efbSmrg func_echo "enabling shell trace mode" 73472313efbSmrg opt_debug='set -x' 73572313efbSmrg $opt_debug 73672313efbSmrg ;; 737bdcaa8d0Smrg 73872313efbSmrg -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 73972313efbSmrg execute_dlfiles="$execute_dlfiles $1" 74072313efbSmrg shift 74172313efbSmrg ;; 742bdcaa8d0Smrg 74372313efbSmrg --dry-run | -n) opt_dry_run=: ;; 74472313efbSmrg --features) func_features ;; 74572313efbSmrg --finish) mode="finish" ;; 74672313efbSmrg 74772313efbSmrg --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 74872313efbSmrg case $1 in 74972313efbSmrg # Valid mode arguments: 75072313efbSmrg clean) ;; 75172313efbSmrg compile) ;; 75272313efbSmrg execute) ;; 75372313efbSmrg finish) ;; 75472313efbSmrg install) ;; 75572313efbSmrg link) ;; 75672313efbSmrg relink) ;; 75772313efbSmrg uninstall) ;; 75872313efbSmrg 75972313efbSmrg # Catch anything else as an error 76072313efbSmrg *) func_error "invalid argument for $opt" 76172313efbSmrg exit_cmd=exit 76272313efbSmrg break 76372313efbSmrg ;; 76472313efbSmrg esac 76572313efbSmrg 76672313efbSmrg mode="$1" 76772313efbSmrg shift 76872313efbSmrg ;; 76972313efbSmrg 77072313efbSmrg --preserve-dup-deps) 77172313efbSmrg opt_duplicate_deps=: ;; 77272313efbSmrg 77372313efbSmrg --quiet|--silent) preserve_args="$preserve_args $opt" 77472313efbSmrg opt_silent=: 77572313efbSmrg ;; 77672313efbSmrg 77772313efbSmrg --verbose| -v) preserve_args="$preserve_args $opt" 77872313efbSmrg opt_silent=false 77972313efbSmrg ;; 78072313efbSmrg 78172313efbSmrg --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 78272313efbSmrg preserve_args="$preserve_args $opt $1" 78372313efbSmrg func_enable_tag "$1" # tagname is set here 78472313efbSmrg shift 78572313efbSmrg ;; 78672313efbSmrg 78772313efbSmrg # Separate optargs to long options: 78872313efbSmrg -dlopen=*|--mode=*|--tag=*) 78972313efbSmrg func_opt_split "$opt" 79072313efbSmrg set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 79172313efbSmrg shift 79272313efbSmrg ;; 79372313efbSmrg 79472313efbSmrg -\?|-h) func_usage ;; 79572313efbSmrg --help) opt_help=: ;; 79672313efbSmrg --version) func_version ;; 79772313efbSmrg 79872313efbSmrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 79972313efbSmrg 80072313efbSmrg *) nonopt="$opt" 80172313efbSmrg break 80272313efbSmrg ;; 80372313efbSmrg esac 80472313efbSmrg done 80572313efbSmrg 80672313efbSmrg 80772313efbSmrg case $host in 80872313efbSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 80972313efbSmrg # don't eliminate duplications in $postdeps and $predeps 81072313efbSmrg opt_duplicate_compiler_generated_deps=: 811bdcaa8d0Smrg ;; 812bdcaa8d0Smrg *) 81372313efbSmrg opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 81472313efbSmrg ;; 81572313efbSmrg esac 816bdcaa8d0Smrg 81772313efbSmrg # Having warned about all mis-specified options, bail out if 81872313efbSmrg # anything was wrong. 81972313efbSmrg $exit_cmd $EXIT_FAILURE 82072313efbSmrg} 82172313efbSmrg 82272313efbSmrg# func_check_version_match 82372313efbSmrg# Ensure that we are using m4 macros, and libtool script from the same 82472313efbSmrg# release of libtool. 82572313efbSmrgfunc_check_version_match () 82672313efbSmrg{ 82772313efbSmrg if test "$package_revision" != "$macro_revision"; then 82872313efbSmrg if test "$VERSION" != "$macro_version"; then 82972313efbSmrg if test -z "$macro_version"; then 83072313efbSmrg cat >&2 <<_LT_EOF 83172313efbSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 83272313efbSmrg$progname: definition of this LT_INIT comes from an older release. 83372313efbSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 83472313efbSmrg$progname: and run autoconf again. 83572313efbSmrg_LT_EOF 83672313efbSmrg else 83772313efbSmrg cat >&2 <<_LT_EOF 83872313efbSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 83972313efbSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 84072313efbSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 84172313efbSmrg$progname: and run autoconf again. 84272313efbSmrg_LT_EOF 843bdcaa8d0Smrg fi 84472313efbSmrg else 84572313efbSmrg cat >&2 <<_LT_EOF 84672313efbSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 84772313efbSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 84872313efbSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 84972313efbSmrg$progname: of $PACKAGE $VERSION and run autoconf again. 85072313efbSmrg_LT_EOF 85172313efbSmrg fi 85272313efbSmrg 85372313efbSmrg exit $EXIT_MISMATCH 85472313efbSmrg fi 85572313efbSmrg} 85672313efbSmrg 85772313efbSmrg 85872313efbSmrg## ----------- ## 85972313efbSmrg## Main. ## 86072313efbSmrg## ----------- ## 86172313efbSmrg 86272313efbSmrg$opt_help || { 86372313efbSmrg # Sanity checks first: 86472313efbSmrg func_check_version_match 86572313efbSmrg 86672313efbSmrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 86772313efbSmrg func_fatal_configuration "not configured to build any kind of library" 868bdcaa8d0Smrg fi 869bdcaa8d0Smrg 87072313efbSmrg test -z "$mode" && func_fatal_error "error: you must specify a MODE." 87172313efbSmrg 87272313efbSmrg 87372313efbSmrg # Darwin sucks 87472313efbSmrg eval std_shrext=\"$shrext_cmds\" 87572313efbSmrg 87672313efbSmrg 877bdcaa8d0Smrg # Only execute mode is allowed to have -dlopen flags. 878bdcaa8d0Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 87972313efbSmrg func_error "unrecognized option \`-dlopen'" 88072313efbSmrg $ECHO "$help" 1>&2 881bdcaa8d0Smrg exit $EXIT_FAILURE 882bdcaa8d0Smrg fi 883bdcaa8d0Smrg 884bdcaa8d0Smrg # Change the help message to a mode-specific one. 885bdcaa8d0Smrg generic_help="$help" 88672313efbSmrg help="Try \`$progname --help --mode=$mode' for more information." 88772313efbSmrg} 888bdcaa8d0Smrg 889bdcaa8d0Smrg 89072313efbSmrg# func_lalib_p file 89172313efbSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 89272313efbSmrg# This function is only a basic sanity check; it will hardly flush out 89372313efbSmrg# determined imposters. 89472313efbSmrgfunc_lalib_p () 89572313efbSmrg{ 89672313efbSmrg test -f "$1" && 89772313efbSmrg $SED -e 4q "$1" 2>/dev/null \ 89872313efbSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 89972313efbSmrg} 900bdcaa8d0Smrg 90172313efbSmrg# func_lalib_unsafe_p file 90272313efbSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 90372313efbSmrg# This function implements the same check as func_lalib_p without 90472313efbSmrg# resorting to external programs. To this end, it redirects stdin and 90572313efbSmrg# closes it afterwards, without saving the original file descriptor. 90672313efbSmrg# As a safety measure, use it only where a negative result would be 90772313efbSmrg# fatal anyway. Works if `file' does not exist. 90872313efbSmrgfunc_lalib_unsafe_p () 90972313efbSmrg{ 91072313efbSmrg lalib_p=no 91172313efbSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 91272313efbSmrg for lalib_p_l in 1 2 3 4 91372313efbSmrg do 91472313efbSmrg read lalib_p_line 91572313efbSmrg case "$lalib_p_line" in 91672313efbSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 91772313efbSmrg esac 91872313efbSmrg done 91972313efbSmrg exec 0<&5 5<&- 92072313efbSmrg fi 92172313efbSmrg test "$lalib_p" = yes 92272313efbSmrg} 923bdcaa8d0Smrg 92472313efbSmrg# func_ltwrapper_script_p file 92572313efbSmrg# True iff FILE is a libtool wrapper script 92672313efbSmrg# This function is only a basic sanity check; it will hardly flush out 92772313efbSmrg# determined imposters. 92872313efbSmrgfunc_ltwrapper_script_p () 92972313efbSmrg{ 93072313efbSmrg func_lalib_p "$1" 93172313efbSmrg} 932bdcaa8d0Smrg 93372313efbSmrg# func_ltwrapper_executable_p file 93472313efbSmrg# True iff FILE is a libtool wrapper executable 93572313efbSmrg# This function is only a basic sanity check; it will hardly flush out 93672313efbSmrg# determined imposters. 93772313efbSmrgfunc_ltwrapper_executable_p () 93872313efbSmrg{ 93972313efbSmrg func_ltwrapper_exec_suffix= 94072313efbSmrg case $1 in 94172313efbSmrg *.exe) ;; 94272313efbSmrg *) func_ltwrapper_exec_suffix=.exe ;; 94372313efbSmrg esac 94472313efbSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 94572313efbSmrg} 946bdcaa8d0Smrg 94772313efbSmrg# func_ltwrapper_scriptname file 94872313efbSmrg# Assumes file is an ltwrapper_executable 94972313efbSmrg# uses $file to determine the appropriate filename for a 95072313efbSmrg# temporary ltwrapper_script. 95172313efbSmrgfunc_ltwrapper_scriptname () 95272313efbSmrg{ 95372313efbSmrg func_ltwrapper_scriptname_result="" 95472313efbSmrg if func_ltwrapper_executable_p "$1"; then 95572313efbSmrg func_dirname_and_basename "$1" "" "." 95672313efbSmrg func_stripname '' '.exe' "$func_basename_result" 95772313efbSmrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 95872313efbSmrg fi 95972313efbSmrg} 960bdcaa8d0Smrg 96172313efbSmrg# func_ltwrapper_p file 96272313efbSmrg# True iff FILE is a libtool wrapper script or wrapper executable 96372313efbSmrg# This function is only a basic sanity check; it will hardly flush out 96472313efbSmrg# determined imposters. 96572313efbSmrgfunc_ltwrapper_p () 96672313efbSmrg{ 96772313efbSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 96872313efbSmrg} 969bdcaa8d0Smrg 970bdcaa8d0Smrg 97172313efbSmrg# func_execute_cmds commands fail_cmd 97272313efbSmrg# Execute tilde-delimited COMMANDS. 97372313efbSmrg# If FAIL_CMD is given, eval that upon failure. 97472313efbSmrg# FAIL_CMD may read-access the current command in variable CMD! 97572313efbSmrgfunc_execute_cmds () 97672313efbSmrg{ 97772313efbSmrg $opt_debug 97872313efbSmrg save_ifs=$IFS; IFS='~' 97972313efbSmrg for cmd in $1; do 98072313efbSmrg IFS=$save_ifs 98172313efbSmrg eval cmd=\"$cmd\" 98272313efbSmrg func_show_eval "$cmd" "${2-:}" 98372313efbSmrg done 98472313efbSmrg IFS=$save_ifs 98572313efbSmrg} 98672313efbSmrg 98772313efbSmrg 98872313efbSmrg# func_source file 98972313efbSmrg# Source FILE, adding directory component if necessary. 99072313efbSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 99172313efbSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 99272313efbSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 99372313efbSmrg# `FILE.' does not work on cygwin managed mounts. 99472313efbSmrgfunc_source () 99572313efbSmrg{ 99672313efbSmrg $opt_debug 99772313efbSmrg case $1 in 99872313efbSmrg */* | *\\*) . "$1" ;; 99972313efbSmrg *) . "./$1" ;; 100072313efbSmrg esac 100172313efbSmrg} 100272313efbSmrg 100372313efbSmrg 100472313efbSmrg# func_infer_tag arg 100572313efbSmrg# Infer tagged configuration to use if any are available and 100672313efbSmrg# if one wasn't chosen via the "--tag" command line option. 100772313efbSmrg# Only attempt this if the compiler in the base compile 100872313efbSmrg# command doesn't match the default compiler. 100972313efbSmrg# arg is usually of the form 'gcc ...' 101072313efbSmrgfunc_infer_tag () 101172313efbSmrg{ 101272313efbSmrg $opt_debug 101372313efbSmrg if test -n "$available_tags" && test -z "$tagname"; then 101472313efbSmrg CC_quoted= 101572313efbSmrg for arg in $CC; do 101672313efbSmrg func_quote_for_eval "$arg" 101772313efbSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 101872313efbSmrg done 101972313efbSmrg case $@ in 102072313efbSmrg # Blanks in the command may have been stripped by the calling shell, 102172313efbSmrg # but not from the CC environment variable when configure was run. 102272313efbSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 102372313efbSmrg # Blanks at the start of $base_compile will cause this to fail 102472313efbSmrg # if we don't check for them as well. 102572313efbSmrg *) 102672313efbSmrg for z in $available_tags; do 102772313efbSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 102872313efbSmrg # Evaluate the configuration. 102972313efbSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 103072313efbSmrg CC_quoted= 103172313efbSmrg for arg in $CC; do 103272313efbSmrg # Double-quote args containing other shell metacharacters. 103372313efbSmrg func_quote_for_eval "$arg" 103472313efbSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 103572313efbSmrg done 103672313efbSmrg case "$@ " in 103772313efbSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 103872313efbSmrg # The compiler in the base compile command matches 103972313efbSmrg # the one in the tagged configuration. 104072313efbSmrg # Assume this is the tagged configuration we want. 104172313efbSmrg tagname=$z 104272313efbSmrg break 104372313efbSmrg ;; 1044bdcaa8d0Smrg esac 104572313efbSmrg fi 104672313efbSmrg done 104772313efbSmrg # If $tagname still isn't set, then no tagged configuration 104872313efbSmrg # was found and let the user know that the "--tag" command 104972313efbSmrg # line option must be used. 105072313efbSmrg if test -z "$tagname"; then 105172313efbSmrg func_echo "unable to infer tagged configuration" 105272313efbSmrg func_fatal_error "specify a tag with \`--tag'" 105372313efbSmrg# else 105472313efbSmrg# func_verbose "using $tagname tagged configuration" 105572313efbSmrg fi 105672313efbSmrg ;; 105772313efbSmrg esac 105872313efbSmrg fi 105972313efbSmrg} 106072313efbSmrg 106172313efbSmrg 106272313efbSmrg 106372313efbSmrg# func_write_libtool_object output_name pic_name nonpic_name 106472313efbSmrg# Create a libtool object file (analogous to a ".la" file), 106572313efbSmrg# but don't create it if we're doing a dry run. 106672313efbSmrgfunc_write_libtool_object () 106772313efbSmrg{ 106872313efbSmrg write_libobj=${1} 106972313efbSmrg if test "$build_libtool_libs" = yes; then 107072313efbSmrg write_lobj=\'${2}\' 107172313efbSmrg else 107272313efbSmrg write_lobj=none 107372313efbSmrg fi 107472313efbSmrg 107572313efbSmrg if test "$build_old_libs" = yes; then 107672313efbSmrg write_oldobj=\'${3}\' 107772313efbSmrg else 107872313efbSmrg write_oldobj=none 107972313efbSmrg fi 108072313efbSmrg 108172313efbSmrg $opt_dry_run || { 108272313efbSmrg cat >${write_libobj}T <<EOF 108372313efbSmrg# $write_libobj - a libtool object file 108472313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 108572313efbSmrg# 108672313efbSmrg# Please DO NOT delete this file! 108772313efbSmrg# It is necessary for linking the library. 108872313efbSmrg 108972313efbSmrg# Name of the PIC object. 109072313efbSmrgpic_object=$write_lobj 109172313efbSmrg 109272313efbSmrg# Name of the non-PIC object 109372313efbSmrgnon_pic_object=$write_oldobj 109472313efbSmrg 109572313efbSmrgEOF 109672313efbSmrg $MV "${write_libobj}T" "${write_libobj}" 109772313efbSmrg } 109872313efbSmrg} 109972313efbSmrg 110072313efbSmrg# func_mode_compile arg... 110172313efbSmrgfunc_mode_compile () 110272313efbSmrg{ 110372313efbSmrg $opt_debug 110472313efbSmrg # Get the compilation command and the source file. 110572313efbSmrg base_compile= 110672313efbSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 110772313efbSmrg suppress_opt=yes 110872313efbSmrg suppress_output= 110972313efbSmrg arg_mode=normal 111072313efbSmrg libobj= 111172313efbSmrg later= 111272313efbSmrg pie_flag= 111372313efbSmrg 111472313efbSmrg for arg 111572313efbSmrg do 111672313efbSmrg case $arg_mode in 111772313efbSmrg arg ) 111872313efbSmrg # do not "continue". Instead, add this to base_compile 111972313efbSmrg lastarg="$arg" 112072313efbSmrg arg_mode=normal 112172313efbSmrg ;; 112272313efbSmrg 112372313efbSmrg target ) 112472313efbSmrg libobj="$arg" 112572313efbSmrg arg_mode=normal 112672313efbSmrg continue 112772313efbSmrg ;; 112872313efbSmrg 112972313efbSmrg normal ) 113072313efbSmrg # Accept any command-line options. 113172313efbSmrg case $arg in 113272313efbSmrg -o) 113372313efbSmrg test -n "$libobj" && \ 113472313efbSmrg func_fatal_error "you cannot specify \`-o' more than once" 113572313efbSmrg arg_mode=target 113672313efbSmrg continue 113772313efbSmrg ;; 113872313efbSmrg 113972313efbSmrg -pie | -fpie | -fPIE) 114072313efbSmrg pie_flag="$pie_flag $arg" 114172313efbSmrg continue 114272313efbSmrg ;; 114372313efbSmrg 114472313efbSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 114572313efbSmrg later="$later $arg" 114672313efbSmrg continue 114772313efbSmrg ;; 114872313efbSmrg 114972313efbSmrg -no-suppress) 115072313efbSmrg suppress_opt=no 115172313efbSmrg continue 115272313efbSmrg ;; 115372313efbSmrg 115472313efbSmrg -Xcompiler) 115572313efbSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 115672313efbSmrg continue # The current "srcfile" will either be retained or 115772313efbSmrg ;; # replaced later. I would guess that would be a bug. 115872313efbSmrg 115972313efbSmrg -Wc,*) 116072313efbSmrg func_stripname '-Wc,' '' "$arg" 116172313efbSmrg args=$func_stripname_result 116272313efbSmrg lastarg= 116372313efbSmrg save_ifs="$IFS"; IFS=',' 116472313efbSmrg for arg in $args; do 116572313efbSmrg IFS="$save_ifs" 116672313efbSmrg func_quote_for_eval "$arg" 116772313efbSmrg lastarg="$lastarg $func_quote_for_eval_result" 1168bdcaa8d0Smrg done 1169bdcaa8d0Smrg IFS="$save_ifs" 117072313efbSmrg func_stripname ' ' '' "$lastarg" 117172313efbSmrg lastarg=$func_stripname_result 1172bdcaa8d0Smrg 1173bdcaa8d0Smrg # Add the arguments to base_compile. 1174bdcaa8d0Smrg base_compile="$base_compile $lastarg" 1175bdcaa8d0Smrg continue 1176bdcaa8d0Smrg ;; 1177bdcaa8d0Smrg 117872313efbSmrg *) 1179bdcaa8d0Smrg # Accept the current argument as the source file. 1180bdcaa8d0Smrg # The previous "srcfile" becomes the current argument. 1181bdcaa8d0Smrg # 1182bdcaa8d0Smrg lastarg="$srcfile" 1183bdcaa8d0Smrg srcfile="$arg" 1184bdcaa8d0Smrg ;; 1185bdcaa8d0Smrg esac # case $arg 1186bdcaa8d0Smrg ;; 1187bdcaa8d0Smrg esac # case $arg_mode 1188bdcaa8d0Smrg 1189bdcaa8d0Smrg # Aesthetically quote the previous argument. 119072313efbSmrg func_quote_for_eval "$lastarg" 119172313efbSmrg base_compile="$base_compile $func_quote_for_eval_result" 1192bdcaa8d0Smrg done # for arg 1193bdcaa8d0Smrg 1194bdcaa8d0Smrg case $arg_mode in 1195bdcaa8d0Smrg arg) 119672313efbSmrg func_fatal_error "you must specify an argument for -Xcompile" 1197bdcaa8d0Smrg ;; 1198bdcaa8d0Smrg target) 119972313efbSmrg func_fatal_error "you must specify a target with \`-o'" 1200bdcaa8d0Smrg ;; 1201bdcaa8d0Smrg *) 1202bdcaa8d0Smrg # Get the name of the library object. 120372313efbSmrg test -z "$libobj" && { 120472313efbSmrg func_basename "$srcfile" 120572313efbSmrg libobj="$func_basename_result" 120672313efbSmrg } 1207bdcaa8d0Smrg ;; 1208bdcaa8d0Smrg esac 1209bdcaa8d0Smrg 1210bdcaa8d0Smrg # Recognize several different file suffixes. 1211bdcaa8d0Smrg # If the user specifies -o file.o, it is replaced with file.lo 1212bdcaa8d0Smrg case $libobj in 121372313efbSmrg *.[cCFSifmso] | \ 121472313efbSmrg *.ada | *.adb | *.ads | *.asm | \ 121572313efbSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 121672313efbSmrg *.[fF][09]? | *.for | *.java | *.obj | *.sx) 121772313efbSmrg func_xform "$libobj" 121872313efbSmrg libobj=$func_xform_result 121972313efbSmrg ;; 1220bdcaa8d0Smrg esac 1221bdcaa8d0Smrg 1222bdcaa8d0Smrg case $libobj in 122372313efbSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 1224bdcaa8d0Smrg *) 122572313efbSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 1226bdcaa8d0Smrg ;; 1227bdcaa8d0Smrg esac 1228bdcaa8d0Smrg 1229bdcaa8d0Smrg func_infer_tag $base_compile 1230bdcaa8d0Smrg 1231bdcaa8d0Smrg for arg in $later; do 1232bdcaa8d0Smrg case $arg in 123372313efbSmrg -shared) 123472313efbSmrg test "$build_libtool_libs" != yes && \ 123572313efbSmrg func_fatal_configuration "can not build a shared library" 123672313efbSmrg build_old_libs=no 123772313efbSmrg continue 123872313efbSmrg ;; 123972313efbSmrg 1240bdcaa8d0Smrg -static) 124172313efbSmrg build_libtool_libs=no 1242bdcaa8d0Smrg build_old_libs=yes 1243bdcaa8d0Smrg continue 1244bdcaa8d0Smrg ;; 1245bdcaa8d0Smrg 1246bdcaa8d0Smrg -prefer-pic) 1247bdcaa8d0Smrg pic_mode=yes 1248bdcaa8d0Smrg continue 1249bdcaa8d0Smrg ;; 1250bdcaa8d0Smrg 1251bdcaa8d0Smrg -prefer-non-pic) 1252bdcaa8d0Smrg pic_mode=no 1253bdcaa8d0Smrg continue 1254bdcaa8d0Smrg ;; 1255bdcaa8d0Smrg esac 1256bdcaa8d0Smrg done 1257bdcaa8d0Smrg 125872313efbSmrg func_quote_for_eval "$libobj" 125972313efbSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 126072313efbSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 126172313efbSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 126272313efbSmrg func_dirname_and_basename "$obj" "/" "" 126372313efbSmrg objname="$func_basename_result" 126472313efbSmrg xdir="$func_dirname_result" 1265bdcaa8d0Smrg lobj=${xdir}$objdir/$objname 1266bdcaa8d0Smrg 126772313efbSmrg test -z "$base_compile" && \ 126872313efbSmrg func_fatal_help "you must specify a compilation command" 1269bdcaa8d0Smrg 1270bdcaa8d0Smrg # Delete any leftover library objects. 1271bdcaa8d0Smrg if test "$build_old_libs" = yes; then 1272bdcaa8d0Smrg removelist="$obj $lobj $libobj ${libobj}T" 1273bdcaa8d0Smrg else 1274bdcaa8d0Smrg removelist="$lobj $libobj ${libobj}T" 1275bdcaa8d0Smrg fi 1276bdcaa8d0Smrg 1277bdcaa8d0Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 1278bdcaa8d0Smrg case $host_os in 127972313efbSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 1280bdcaa8d0Smrg pic_mode=default 1281bdcaa8d0Smrg ;; 1282bdcaa8d0Smrg esac 1283bdcaa8d0Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 1284bdcaa8d0Smrg # non-PIC code in shared libraries is not supported 1285bdcaa8d0Smrg pic_mode=default 1286bdcaa8d0Smrg fi 1287bdcaa8d0Smrg 1288bdcaa8d0Smrg # Calculate the filename of the output object if compiler does 1289bdcaa8d0Smrg # not support -o with -c 1290bdcaa8d0Smrg if test "$compiler_c_o" = no; then 129172313efbSmrg output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 1292bdcaa8d0Smrg lockfile="$output_obj.lock" 1293bdcaa8d0Smrg else 1294bdcaa8d0Smrg output_obj= 1295bdcaa8d0Smrg need_locks=no 1296bdcaa8d0Smrg lockfile= 1297bdcaa8d0Smrg fi 1298bdcaa8d0Smrg 1299bdcaa8d0Smrg # Lock this critical section if it is needed 1300bdcaa8d0Smrg # We use this script file to make the link, it avoids creating a new file 1301bdcaa8d0Smrg if test "$need_locks" = yes; then 130272313efbSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 130372313efbSmrg func_echo "Waiting for $lockfile to be removed" 1304bdcaa8d0Smrg sleep 2 1305bdcaa8d0Smrg done 1306bdcaa8d0Smrg elif test "$need_locks" = warn; then 1307bdcaa8d0Smrg if test -f "$lockfile"; then 130872313efbSmrg $ECHO "\ 1309bdcaa8d0Smrg*** ERROR, $lockfile exists and contains: 1310bdcaa8d0Smrg`cat $lockfile 2>/dev/null` 1311bdcaa8d0Smrg 1312bdcaa8d0SmrgThis indicates that another process is trying to use the same 1313bdcaa8d0Smrgtemporary object file, and libtool could not work around it because 1314bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together. If you 1315bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better 1316bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better 1317bdcaa8d0Smrgcompiler." 1318bdcaa8d0Smrg 131972313efbSmrg $opt_dry_run || $RM $removelist 1320bdcaa8d0Smrg exit $EXIT_FAILURE 1321bdcaa8d0Smrg fi 132272313efbSmrg removelist="$removelist $output_obj" 132372313efbSmrg $ECHO "$srcfile" > "$lockfile" 1324bdcaa8d0Smrg fi 1325bdcaa8d0Smrg 132672313efbSmrg $opt_dry_run || $RM $removelist 132772313efbSmrg removelist="$removelist $lockfile" 132872313efbSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 132972313efbSmrg 1330bdcaa8d0Smrg if test -n "$fix_srcfile_path"; then 1331bdcaa8d0Smrg eval srcfile=\"$fix_srcfile_path\" 1332bdcaa8d0Smrg fi 133372313efbSmrg func_quote_for_eval "$srcfile" 133472313efbSmrg qsrcfile=$func_quote_for_eval_result 1335bdcaa8d0Smrg 1336bdcaa8d0Smrg # Only build a PIC object if we are building libtool libraries. 1337bdcaa8d0Smrg if test "$build_libtool_libs" = yes; then 1338bdcaa8d0Smrg # Without this assignment, base_compile gets emptied. 1339bdcaa8d0Smrg fbsd_hideous_sh_bug=$base_compile 1340bdcaa8d0Smrg 1341bdcaa8d0Smrg if test "$pic_mode" != no; then 1342bdcaa8d0Smrg command="$base_compile $qsrcfile $pic_flag" 1343bdcaa8d0Smrg else 1344bdcaa8d0Smrg # Don't build PIC code 1345bdcaa8d0Smrg command="$base_compile $qsrcfile" 1346bdcaa8d0Smrg fi 1347bdcaa8d0Smrg 134872313efbSmrg func_mkdir_p "$xdir$objdir" 1349bdcaa8d0Smrg 1350bdcaa8d0Smrg if test -z "$output_obj"; then 1351bdcaa8d0Smrg # Place PIC objects in $objdir 1352bdcaa8d0Smrg command="$command -o $lobj" 1353bdcaa8d0Smrg fi 1354bdcaa8d0Smrg 135572313efbSmrg func_show_eval_locale "$command" \ 135672313efbSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 1357bdcaa8d0Smrg 1358bdcaa8d0Smrg if test "$need_locks" = warn && 1359bdcaa8d0Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 136072313efbSmrg $ECHO "\ 1361bdcaa8d0Smrg*** ERROR, $lockfile contains: 1362bdcaa8d0Smrg`cat $lockfile 2>/dev/null` 1363bdcaa8d0Smrg 1364bdcaa8d0Smrgbut it should contain: 1365bdcaa8d0Smrg$srcfile 1366bdcaa8d0Smrg 1367bdcaa8d0SmrgThis indicates that another process is trying to use the same 1368bdcaa8d0Smrgtemporary object file, and libtool could not work around it because 1369bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together. If you 1370bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better 1371bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better 1372bdcaa8d0Smrgcompiler." 1373bdcaa8d0Smrg 137472313efbSmrg $opt_dry_run || $RM $removelist 1375bdcaa8d0Smrg exit $EXIT_FAILURE 1376bdcaa8d0Smrg fi 1377bdcaa8d0Smrg 1378bdcaa8d0Smrg # Just move the object if needed, then go on to compile the next one 1379bdcaa8d0Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 138072313efbSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 138172313efbSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1382bdcaa8d0Smrg fi 1383bdcaa8d0Smrg 1384bdcaa8d0Smrg # Allow error messages only from the first compilation. 1385bdcaa8d0Smrg if test "$suppress_opt" = yes; then 138672313efbSmrg suppress_output=' >/dev/null 2>&1' 1387bdcaa8d0Smrg fi 1388bdcaa8d0Smrg fi 1389bdcaa8d0Smrg 1390bdcaa8d0Smrg # Only build a position-dependent object if we build old libraries. 1391bdcaa8d0Smrg if test "$build_old_libs" = yes; then 1392bdcaa8d0Smrg if test "$pic_mode" != yes; then 1393bdcaa8d0Smrg # Don't build PIC code 139472313efbSmrg command="$base_compile $qsrcfile$pie_flag" 1395bdcaa8d0Smrg else 1396bdcaa8d0Smrg command="$base_compile $qsrcfile $pic_flag" 1397bdcaa8d0Smrg fi 1398bdcaa8d0Smrg if test "$compiler_c_o" = yes; then 1399bdcaa8d0Smrg command="$command -o $obj" 1400bdcaa8d0Smrg fi 1401bdcaa8d0Smrg 1402bdcaa8d0Smrg # Suppress compiler output if we already did a PIC compilation. 1403bdcaa8d0Smrg command="$command$suppress_output" 140472313efbSmrg func_show_eval_locale "$command" \ 140572313efbSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1406bdcaa8d0Smrg 1407bdcaa8d0Smrg if test "$need_locks" = warn && 1408bdcaa8d0Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 140972313efbSmrg $ECHO "\ 1410bdcaa8d0Smrg*** ERROR, $lockfile contains: 1411bdcaa8d0Smrg`cat $lockfile 2>/dev/null` 1412bdcaa8d0Smrg 1413bdcaa8d0Smrgbut it should contain: 1414bdcaa8d0Smrg$srcfile 1415bdcaa8d0Smrg 1416bdcaa8d0SmrgThis indicates that another process is trying to use the same 1417bdcaa8d0Smrgtemporary object file, and libtool could not work around it because 1418bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together. If you 1419bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better 1420bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better 1421bdcaa8d0Smrgcompiler." 1422bdcaa8d0Smrg 142372313efbSmrg $opt_dry_run || $RM $removelist 1424bdcaa8d0Smrg exit $EXIT_FAILURE 1425bdcaa8d0Smrg fi 1426bdcaa8d0Smrg 1427bdcaa8d0Smrg # Just move the object if needed 1428bdcaa8d0Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 142972313efbSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 143072313efbSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1431bdcaa8d0Smrg fi 1432bdcaa8d0Smrg fi 1433bdcaa8d0Smrg 143472313efbSmrg $opt_dry_run || { 143572313efbSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 1436bdcaa8d0Smrg 143772313efbSmrg # Unlock the critical section if it was locked 143872313efbSmrg if test "$need_locks" != no; then 143972313efbSmrg removelist=$lockfile 144072313efbSmrg $RM "$lockfile" 144172313efbSmrg fi 144272313efbSmrg } 1443bdcaa8d0Smrg 1444bdcaa8d0Smrg exit $EXIT_SUCCESS 144572313efbSmrg} 1446bdcaa8d0Smrg 144772313efbSmrg$opt_help || { 144872313efbSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"} 144972313efbSmrg} 1450bdcaa8d0Smrg 145172313efbSmrgfunc_mode_help () 145272313efbSmrg{ 145372313efbSmrg # We need to display help for each of the modes. 145472313efbSmrg case $mode in 145572313efbSmrg "") 145672313efbSmrg # Generic help is extracted from the usage comments 145772313efbSmrg # at the start of this file. 145872313efbSmrg func_help 145972313efbSmrg ;; 1460bdcaa8d0Smrg 146172313efbSmrg clean) 146272313efbSmrg $ECHO \ 146372313efbSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 1464bdcaa8d0Smrg 146572313efbSmrgRemove files from the build directory. 1466bdcaa8d0Smrg 146772313efbSmrgRM is the name of the program to use to delete files associated with each FILE 146872313efbSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 146972313efbSmrgto RM. 1470bdcaa8d0Smrg 147172313efbSmrgIf FILE is a libtool library, object or program, all the files associated 147272313efbSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 147372313efbSmrg ;; 1474bdcaa8d0Smrg 147572313efbSmrg compile) 147672313efbSmrg $ECHO \ 147772313efbSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1478bdcaa8d0Smrg 147972313efbSmrgCompile a source file into a libtool library object. 1480bdcaa8d0Smrg 148172313efbSmrgThis mode accepts the following additional options: 1482bdcaa8d0Smrg 148372313efbSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 148472313efbSmrg -no-suppress do not suppress compiler output for multiple passes 148572313efbSmrg -prefer-pic try to building PIC objects only 148672313efbSmrg -prefer-non-pic try to building non-PIC objects only 148772313efbSmrg -shared do not build a \`.o' file suitable for static linking 148872313efbSmrg -static only build a \`.o' file suitable for static linking 1489bdcaa8d0Smrg 149072313efbSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 149172313efbSmrgfrom the given SOURCEFILE. 1492bdcaa8d0Smrg 149372313efbSmrgThe output file name is determined by removing the directory component from 149472313efbSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 149572313efbSmrglibrary object suffix, \`.lo'." 149672313efbSmrg ;; 1497bdcaa8d0Smrg 149872313efbSmrg execute) 149972313efbSmrg $ECHO \ 150072313efbSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 1501bdcaa8d0Smrg 150272313efbSmrgAutomatically set library path, then run a program. 1503bdcaa8d0Smrg 150472313efbSmrgThis mode accepts the following additional options: 1505bdcaa8d0Smrg 150672313efbSmrg -dlopen FILE add the directory containing FILE to the library path 1507bdcaa8d0Smrg 150872313efbSmrgThis mode sets the library path environment variable according to \`-dlopen' 150972313efbSmrgflags. 1510bdcaa8d0Smrg 151172313efbSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 151272313efbSmrginto their corresponding uninstalled binary, and any of their required library 151372313efbSmrgdirectories are added to the library path. 1514bdcaa8d0Smrg 151572313efbSmrgThen, COMMAND is executed, with ARGS as arguments." 151672313efbSmrg ;; 1517bdcaa8d0Smrg 151872313efbSmrg finish) 151972313efbSmrg $ECHO \ 152072313efbSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1521bdcaa8d0Smrg 152272313efbSmrgComplete the installation of libtool libraries. 1523bdcaa8d0Smrg 152472313efbSmrgEach LIBDIR is a directory that contains libtool libraries. 1525bdcaa8d0Smrg 152672313efbSmrgThe commands that this mode executes may require superuser privileges. Use 152772313efbSmrgthe \`--dry-run' option if you just want to see what would be executed." 152872313efbSmrg ;; 1529bdcaa8d0Smrg 153072313efbSmrg install) 153172313efbSmrg $ECHO \ 153272313efbSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1533bdcaa8d0Smrg 153472313efbSmrgInstall executables or libraries. 1535bdcaa8d0Smrg 153672313efbSmrgINSTALL-COMMAND is the installation command. The first component should be 153772313efbSmrgeither the \`install' or \`cp' program. 1538bdcaa8d0Smrg 153972313efbSmrgThe following components of INSTALL-COMMAND are treated specially: 1540bdcaa8d0Smrg 154172313efbSmrg -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1542bdcaa8d0Smrg 154372313efbSmrgThe rest of the components are interpreted as arguments to that command (only 154472313efbSmrgBSD-compatible install options are recognized)." 154572313efbSmrg ;; 1546bdcaa8d0Smrg 154772313efbSmrg link) 154872313efbSmrg $ECHO \ 154972313efbSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1550bdcaa8d0Smrg 155172313efbSmrgLink object files or libraries together to form another library, or to 155272313efbSmrgcreate an executable program. 1553bdcaa8d0Smrg 155472313efbSmrgLINK-COMMAND is a command using the C compiler that you would use to create 155572313efbSmrga program from several object files. 1556bdcaa8d0Smrg 155772313efbSmrgThe following components of LINK-COMMAND are treated specially: 1558bdcaa8d0Smrg 155972313efbSmrg -all-static do not do any dynamic linking at all 156072313efbSmrg -avoid-version do not add a version suffix if possible 156172313efbSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 156272313efbSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 156372313efbSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 156472313efbSmrg -export-symbols SYMFILE 156572313efbSmrg try to export only the symbols listed in SYMFILE 156672313efbSmrg -export-symbols-regex REGEX 156772313efbSmrg try to export only the symbols matching REGEX 156872313efbSmrg -LLIBDIR search LIBDIR for required installed libraries 156972313efbSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 157072313efbSmrg -module build a library that can dlopened 157172313efbSmrg -no-fast-install disable the fast-install mode 157272313efbSmrg -no-install link a not-installable executable 157372313efbSmrg -no-undefined declare that a library does not refer to external symbols 157472313efbSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 157572313efbSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 157672313efbSmrg -precious-files-regex REGEX 157772313efbSmrg don't remove output files matching REGEX 157872313efbSmrg -release RELEASE specify package release information 157972313efbSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 158072313efbSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 158172313efbSmrg -shared only do dynamic linking of libtool libraries 158272313efbSmrg -shrext SUFFIX override the standard shared library file extension 158372313efbSmrg -static do not do any dynamic linking of uninstalled libtool libraries 158472313efbSmrg -static-libtool-libs 158572313efbSmrg do not do any dynamic linking of libtool libraries 158672313efbSmrg -version-info CURRENT[:REVISION[:AGE]] 158772313efbSmrg specify library version info [each variable defaults to 0] 158872313efbSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 1589bdcaa8d0Smrg 159072313efbSmrgAll other options (arguments beginning with \`-') are ignored. 1591bdcaa8d0Smrg 159272313efbSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 159372313efbSmrgtreated as uninstalled libtool libraries, other files are standard or library 159472313efbSmrgobject files. 1595bdcaa8d0Smrg 159672313efbSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 159772313efbSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 159872313efbSmrgrequired, except when creating a convenience library. 1599bdcaa8d0Smrg 160072313efbSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 160172313efbSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 1602bdcaa8d0Smrg 160372313efbSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 160472313efbSmrgis created, otherwise an executable program is created." 1605bdcaa8d0Smrg ;; 1606bdcaa8d0Smrg 160772313efbSmrg uninstall) 160872313efbSmrg $ECHO \ 160972313efbSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1610bdcaa8d0Smrg 161172313efbSmrgRemove libraries from an installation directory. 1612bdcaa8d0Smrg 161372313efbSmrgRM is the name of the program to use to delete files associated with each FILE 161472313efbSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 161572313efbSmrgto RM. 1616bdcaa8d0Smrg 161772313efbSmrgIf FILE is a libtool library, all the files associated with it are deleted. 161872313efbSmrgOtherwise, only FILE itself is deleted using RM." 161972313efbSmrg ;; 1620bdcaa8d0Smrg 162172313efbSmrg *) 162272313efbSmrg func_fatal_help "invalid operation mode \`$mode'" 162372313efbSmrg ;; 162472313efbSmrg esac 1625bdcaa8d0Smrg 162672313efbSmrg $ECHO 162772313efbSmrg $ECHO "Try \`$progname --help' for more information about other modes." 1628bdcaa8d0Smrg 162972313efbSmrg exit $? 163072313efbSmrg} 1631bdcaa8d0Smrg 163272313efbSmrg # Now that we've collected a possible --mode arg, show help if necessary 163372313efbSmrg $opt_help && func_mode_help 1634bdcaa8d0Smrg 1635bdcaa8d0Smrg 163672313efbSmrg# func_mode_execute arg... 163772313efbSmrgfunc_mode_execute () 163872313efbSmrg{ 163972313efbSmrg $opt_debug 164072313efbSmrg # The first argument is the command name. 164172313efbSmrg cmd="$nonopt" 164272313efbSmrg test -z "$cmd" && \ 164372313efbSmrg func_fatal_help "you must specify a COMMAND" 1644bdcaa8d0Smrg 164572313efbSmrg # Handle -dlopen flags immediately. 164672313efbSmrg for file in $execute_dlfiles; do 164772313efbSmrg test -f "$file" \ 164872313efbSmrg || func_fatal_help "\`$file' is not a file" 1649bdcaa8d0Smrg 165072313efbSmrg dir= 165172313efbSmrg case $file in 165272313efbSmrg *.la) 165372313efbSmrg # Check to see that this really is a libtool archive. 165472313efbSmrg func_lalib_unsafe_p "$file" \ 165572313efbSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 1656bdcaa8d0Smrg 165772313efbSmrg # Read the libtool library. 165872313efbSmrg dlname= 165972313efbSmrg library_names= 166072313efbSmrg func_source "$file" 1661bdcaa8d0Smrg 166272313efbSmrg # Skip this library if it cannot be dlopened. 166372313efbSmrg if test -z "$dlname"; then 166472313efbSmrg # Warn if it was a shared library. 166572313efbSmrg test -n "$library_names" && \ 166672313efbSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 166772313efbSmrg continue 166872313efbSmrg fi 1669bdcaa8d0Smrg 167072313efbSmrg func_dirname "$file" "" "." 167172313efbSmrg dir="$func_dirname_result" 1672bdcaa8d0Smrg 167372313efbSmrg if test -f "$dir/$objdir/$dlname"; then 167472313efbSmrg dir="$dir/$objdir" 167572313efbSmrg else 167672313efbSmrg if test ! -f "$dir/$dlname"; then 167772313efbSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 167872313efbSmrg fi 167972313efbSmrg fi 1680bdcaa8d0Smrg ;; 1681bdcaa8d0Smrg 168272313efbSmrg *.lo) 168372313efbSmrg # Just add the directory containing the .lo file. 168472313efbSmrg func_dirname "$file" "" "." 168572313efbSmrg dir="$func_dirname_result" 1686bdcaa8d0Smrg ;; 1687bdcaa8d0Smrg 168872313efbSmrg *) 168972313efbSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 1690bdcaa8d0Smrg continue 1691bdcaa8d0Smrg ;; 169272313efbSmrg esac 1693bdcaa8d0Smrg 169472313efbSmrg # Get the absolute pathname. 169572313efbSmrg absdir=`cd "$dir" && pwd` 169672313efbSmrg test -n "$absdir" && dir="$absdir" 1697bdcaa8d0Smrg 169872313efbSmrg # Now add the directory to shlibpath_var. 169972313efbSmrg if eval "test -z \"\$$shlibpath_var\""; then 170072313efbSmrg eval "$shlibpath_var=\"\$dir\"" 170172313efbSmrg else 170272313efbSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 170372313efbSmrg fi 170472313efbSmrg done 1705bdcaa8d0Smrg 170672313efbSmrg # This variable tells wrapper scripts just to set shlibpath_var 170772313efbSmrg # rather than running their programs. 170872313efbSmrg libtool_execute_magic="$magic" 1709bdcaa8d0Smrg 171072313efbSmrg # Check if any of the arguments is a wrapper script. 171172313efbSmrg args= 171272313efbSmrg for file 171372313efbSmrg do 171472313efbSmrg case $file in 171572313efbSmrg -*) ;; 171672313efbSmrg *) 171772313efbSmrg # Do a test to see if this is really a libtool program. 171872313efbSmrg if func_ltwrapper_script_p "$file"; then 171972313efbSmrg func_source "$file" 172072313efbSmrg # Transform arg to wrapped name. 172172313efbSmrg file="$progdir/$program" 172272313efbSmrg elif func_ltwrapper_executable_p "$file"; then 172372313efbSmrg func_ltwrapper_scriptname "$file" 172472313efbSmrg func_source "$func_ltwrapper_scriptname_result" 172572313efbSmrg # Transform arg to wrapped name. 172672313efbSmrg file="$progdir/$program" 172772313efbSmrg fi 172872313efbSmrg ;; 172972313efbSmrg esac 173072313efbSmrg # Quote arguments (to preserve shell metacharacters). 173172313efbSmrg func_quote_for_eval "$file" 173272313efbSmrg args="$args $func_quote_for_eval_result" 173372313efbSmrg done 1734bdcaa8d0Smrg 173572313efbSmrg if test "X$opt_dry_run" = Xfalse; then 173672313efbSmrg if test -n "$shlibpath_var"; then 173772313efbSmrg # Export the shlibpath_var. 173872313efbSmrg eval "export $shlibpath_var" 173972313efbSmrg fi 1740bdcaa8d0Smrg 174172313efbSmrg # Restore saved environment variables 174272313efbSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 174372313efbSmrg do 174472313efbSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 174572313efbSmrg $lt_var=\$save_$lt_var; export $lt_var 174672313efbSmrg else 174772313efbSmrg $lt_unset $lt_var 174872313efbSmrg fi" 174972313efbSmrg done 1750bdcaa8d0Smrg 175172313efbSmrg # Now prepare to actually exec the command. 175272313efbSmrg exec_cmd="\$cmd$args" 175372313efbSmrg else 175472313efbSmrg # Display what would be done. 175572313efbSmrg if test -n "$shlibpath_var"; then 175672313efbSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 175772313efbSmrg $ECHO "export $shlibpath_var" 175872313efbSmrg fi 175972313efbSmrg $ECHO "$cmd$args" 176072313efbSmrg exit $EXIT_SUCCESS 176172313efbSmrg fi 176272313efbSmrg} 1763bdcaa8d0Smrg 176472313efbSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"} 1765bdcaa8d0Smrg 1766bdcaa8d0Smrg 176772313efbSmrg# func_mode_finish arg... 176872313efbSmrgfunc_mode_finish () 176972313efbSmrg{ 177072313efbSmrg $opt_debug 177172313efbSmrg libdirs="$nonopt" 177272313efbSmrg admincmds= 1773bdcaa8d0Smrg 177472313efbSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 177572313efbSmrg for dir 177672313efbSmrg do 177772313efbSmrg libdirs="$libdirs $dir" 177872313efbSmrg done 1779bdcaa8d0Smrg 178072313efbSmrg for libdir in $libdirs; do 178172313efbSmrg if test -n "$finish_cmds"; then 178272313efbSmrg # Do each command in the finish commands. 178372313efbSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 178472313efbSmrg'"$cmd"'"' 178572313efbSmrg fi 178672313efbSmrg if test -n "$finish_eval"; then 178772313efbSmrg # Do the single finish_eval. 178872313efbSmrg eval cmds=\"$finish_eval\" 178972313efbSmrg $opt_dry_run || eval "$cmds" || admincmds="$admincmds 179072313efbSmrg $cmds" 179172313efbSmrg fi 179272313efbSmrg done 179372313efbSmrg fi 1794bdcaa8d0Smrg 179572313efbSmrg # Exit here if they wanted silent mode. 179672313efbSmrg $opt_silent && exit $EXIT_SUCCESS 1797bdcaa8d0Smrg 179872313efbSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 179972313efbSmrg $ECHO "Libraries have been installed in:" 180072313efbSmrg for libdir in $libdirs; do 180172313efbSmrg $ECHO " $libdir" 180272313efbSmrg done 180372313efbSmrg $ECHO 180472313efbSmrg $ECHO "If you ever happen to want to link against installed libraries" 180572313efbSmrg $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 180672313efbSmrg $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 180772313efbSmrg $ECHO "flag during linking and do at least one of the following:" 180872313efbSmrg if test -n "$shlibpath_var"; then 180972313efbSmrg $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 181072313efbSmrg $ECHO " during execution" 181172313efbSmrg fi 181272313efbSmrg if test -n "$runpath_var"; then 181372313efbSmrg $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 181472313efbSmrg $ECHO " during linking" 181572313efbSmrg fi 181672313efbSmrg if test -n "$hardcode_libdir_flag_spec"; then 181772313efbSmrg libdir=LIBDIR 181872313efbSmrg eval flag=\"$hardcode_libdir_flag_spec\" 1819bdcaa8d0Smrg 182072313efbSmrg $ECHO " - use the \`$flag' linker flag" 182172313efbSmrg fi 182272313efbSmrg if test -n "$admincmds"; then 182372313efbSmrg $ECHO " - have your system administrator run these commands:$admincmds" 182472313efbSmrg fi 182572313efbSmrg if test -f /etc/ld.so.conf; then 182672313efbSmrg $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 182772313efbSmrg fi 182872313efbSmrg $ECHO 1829bdcaa8d0Smrg 183072313efbSmrg $ECHO "See any operating system documentation about shared libraries for" 183172313efbSmrg case $host in 183272313efbSmrg solaris2.[6789]|solaris2.1[0-9]) 183372313efbSmrg $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 183472313efbSmrg $ECHO "pages." 1835bdcaa8d0Smrg ;; 183672313efbSmrg *) 183772313efbSmrg $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 183872313efbSmrg ;; 183972313efbSmrg esac 184072313efbSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 184172313efbSmrg exit $EXIT_SUCCESS 184272313efbSmrg} 1843bdcaa8d0Smrg 184472313efbSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"} 1845bdcaa8d0Smrg 1846bdcaa8d0Smrg 184772313efbSmrg# func_mode_install arg... 184872313efbSmrgfunc_mode_install () 184972313efbSmrg{ 185072313efbSmrg $opt_debug 185172313efbSmrg # There may be an optional sh(1) argument at the beginning of 185272313efbSmrg # install_prog (especially on Windows NT). 185372313efbSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 185472313efbSmrg # Allow the use of GNU shtool's install command. 185572313efbSmrg $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 185672313efbSmrg # Aesthetically quote it. 185772313efbSmrg func_quote_for_eval "$nonopt" 185872313efbSmrg install_prog="$func_quote_for_eval_result " 185972313efbSmrg arg=$1 186072313efbSmrg shift 186172313efbSmrg else 186272313efbSmrg install_prog= 186372313efbSmrg arg=$nonopt 186472313efbSmrg fi 1865bdcaa8d0Smrg 186672313efbSmrg # The real first argument should be the name of the installation program. 186772313efbSmrg # Aesthetically quote it. 186872313efbSmrg func_quote_for_eval "$arg" 186972313efbSmrg install_prog="$install_prog$func_quote_for_eval_result" 187072313efbSmrg 187172313efbSmrg # We need to accept at least all the BSD install flags. 187272313efbSmrg dest= 187372313efbSmrg files= 187472313efbSmrg opts= 187572313efbSmrg prev= 187672313efbSmrg install_type= 187772313efbSmrg isdir=no 187872313efbSmrg stripme= 187972313efbSmrg for arg 188072313efbSmrg do 188172313efbSmrg if test -n "$dest"; then 188272313efbSmrg files="$files $dest" 188372313efbSmrg dest=$arg 188472313efbSmrg continue 1885bdcaa8d0Smrg fi 1886bdcaa8d0Smrg 188772313efbSmrg case $arg in 188872313efbSmrg -d) isdir=yes ;; 188972313efbSmrg -f) 189072313efbSmrg case " $install_prog " in 189172313efbSmrg *[\\\ /]cp\ *) ;; 189272313efbSmrg *) prev=$arg ;; 189372313efbSmrg esac 189472313efbSmrg ;; 189572313efbSmrg -g | -m | -o) 189672313efbSmrg prev=$arg 189772313efbSmrg ;; 189872313efbSmrg -s) 189972313efbSmrg stripme=" -s" 190072313efbSmrg continue 190172313efbSmrg ;; 190272313efbSmrg -*) 190372313efbSmrg ;; 190472313efbSmrg *) 190572313efbSmrg # If the previous option needed an argument, then skip it. 190672313efbSmrg if test -n "$prev"; then 190772313efbSmrg prev= 190872313efbSmrg else 190972313efbSmrg dest=$arg 191072313efbSmrg continue 191172313efbSmrg fi 191272313efbSmrg ;; 191372313efbSmrg esac 1914bdcaa8d0Smrg 191572313efbSmrg # Aesthetically quote the argument. 191672313efbSmrg func_quote_for_eval "$arg" 191772313efbSmrg install_prog="$install_prog $func_quote_for_eval_result" 191872313efbSmrg done 1919bdcaa8d0Smrg 192072313efbSmrg test -z "$install_prog" && \ 192172313efbSmrg func_fatal_help "you must specify an install program" 1922bdcaa8d0Smrg 192372313efbSmrg test -n "$prev" && \ 192472313efbSmrg func_fatal_help "the \`$prev' option requires an argument" 1925bdcaa8d0Smrg 192672313efbSmrg if test -z "$files"; then 192772313efbSmrg if test -z "$dest"; then 192872313efbSmrg func_fatal_help "no file or destination specified" 192972313efbSmrg else 193072313efbSmrg func_fatal_help "you must specify a destination" 1931bdcaa8d0Smrg fi 1932bdcaa8d0Smrg fi 1933bdcaa8d0Smrg 193472313efbSmrg # Strip any trailing slash from the destination. 193572313efbSmrg func_stripname '' '/' "$dest" 193672313efbSmrg dest=$func_stripname_result 1937bdcaa8d0Smrg 193872313efbSmrg # Check to see that the destination is a directory. 193972313efbSmrg test -d "$dest" && isdir=yes 194072313efbSmrg if test "$isdir" = yes; then 194172313efbSmrg destdir="$dest" 194272313efbSmrg destname= 194372313efbSmrg else 194472313efbSmrg func_dirname_and_basename "$dest" "" "." 194572313efbSmrg destdir="$func_dirname_result" 194672313efbSmrg destname="$func_basename_result" 194772313efbSmrg 194872313efbSmrg # Not a directory, so check to see that there is only one file specified. 194972313efbSmrg set dummy $files; shift 195072313efbSmrg test "$#" -gt 1 && \ 195172313efbSmrg func_fatal_help "\`$dest' is not a directory" 195272313efbSmrg fi 195372313efbSmrg case $destdir in 195472313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1955bdcaa8d0Smrg *) 195672313efbSmrg for file in $files; do 195772313efbSmrg case $file in 195872313efbSmrg *.lo) ;; 195972313efbSmrg *) 196072313efbSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 196172313efbSmrg ;; 196272313efbSmrg esac 196372313efbSmrg done 1964bdcaa8d0Smrg ;; 1965bdcaa8d0Smrg esac 1966bdcaa8d0Smrg 196772313efbSmrg # This variable tells wrapper scripts just to set variables rather 196872313efbSmrg # than running their programs. 196972313efbSmrg libtool_install_magic="$magic" 1970bdcaa8d0Smrg 197172313efbSmrg staticlibs= 197272313efbSmrg future_libdirs= 197372313efbSmrg current_libdirs= 197472313efbSmrg for file in $files; do 1975bdcaa8d0Smrg 197672313efbSmrg # Do each installation. 197772313efbSmrg case $file in 197872313efbSmrg *.$libext) 197972313efbSmrg # Do the static libraries later. 198072313efbSmrg staticlibs="$staticlibs $file" 198172313efbSmrg ;; 198272313efbSmrg 198372313efbSmrg *.la) 198472313efbSmrg # Check to see that this really is a libtool archive. 198572313efbSmrg func_lalib_unsafe_p "$file" \ 198672313efbSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 198772313efbSmrg 198872313efbSmrg library_names= 198972313efbSmrg old_library= 199072313efbSmrg relink_command= 199172313efbSmrg func_source "$file" 199272313efbSmrg 199372313efbSmrg # Add the libdir to current_libdirs if it is the destination. 199472313efbSmrg if test "X$destdir" = "X$libdir"; then 199572313efbSmrg case "$current_libdirs " in 199672313efbSmrg *" $libdir "*) ;; 199772313efbSmrg *) current_libdirs="$current_libdirs $libdir" ;; 1998bdcaa8d0Smrg esac 199972313efbSmrg else 200072313efbSmrg # Note the libdir as a future libdir. 200172313efbSmrg case "$future_libdirs " in 200272313efbSmrg *" $libdir "*) ;; 200372313efbSmrg *) future_libdirs="$future_libdirs $libdir" ;; 200472313efbSmrg esac 200572313efbSmrg fi 2006bdcaa8d0Smrg 200772313efbSmrg func_dirname "$file" "/" "" 200872313efbSmrg dir="$func_dirname_result" 200972313efbSmrg dir="$dir$objdir" 201072313efbSmrg 201172313efbSmrg if test -n "$relink_command"; then 201272313efbSmrg # Determine the prefix the user has applied to our future dir. 201372313efbSmrg inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 201472313efbSmrg 201572313efbSmrg # Don't allow the user to place us outside of our expected 201672313efbSmrg # location b/c this prevents finding dependent libraries that 201772313efbSmrg # are installed to the same prefix. 201872313efbSmrg # At present, this check doesn't affect windows .dll's that 201972313efbSmrg # are installed into $libdir/../bin (currently, that works fine) 202072313efbSmrg # but it's something to keep an eye on. 202172313efbSmrg test "$inst_prefix_dir" = "$destdir" && \ 202272313efbSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 202372313efbSmrg 202472313efbSmrg if test -n "$inst_prefix_dir"; then 202572313efbSmrg # Stick the inst_prefix_dir data into the link command. 202672313efbSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 202772313efbSmrg else 202872313efbSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 202972313efbSmrg fi 203072313efbSmrg 203172313efbSmrg func_warning "relinking \`$file'" 203272313efbSmrg func_show_eval "$relink_command" \ 203372313efbSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 203472313efbSmrg fi 203572313efbSmrg 203672313efbSmrg # See the names of the shared library. 203772313efbSmrg set dummy $library_names; shift 203872313efbSmrg if test -n "$1"; then 203972313efbSmrg realname="$1" 204072313efbSmrg shift 204172313efbSmrg 204272313efbSmrg srcname="$realname" 204372313efbSmrg test -n "$relink_command" && srcname="$realname"T 204472313efbSmrg 204572313efbSmrg # Install the shared library and build the symlinks. 204672313efbSmrg func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 204772313efbSmrg 'exit $?' 204872313efbSmrg tstripme="$stripme" 204972313efbSmrg case $host_os in 205072313efbSmrg cygwin* | mingw* | pw32* | cegcc*) 205172313efbSmrg case $realname in 205272313efbSmrg *.dll.a) 205372313efbSmrg tstripme="" 205472313efbSmrg ;; 205572313efbSmrg esac 2056bdcaa8d0Smrg ;; 2057bdcaa8d0Smrg esac 205872313efbSmrg if test -n "$tstripme" && test -n "$striplib"; then 205972313efbSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 2060bdcaa8d0Smrg fi 206172313efbSmrg 206272313efbSmrg if test "$#" -gt 0; then 206372313efbSmrg # Delete the old symlinks, and create new ones. 206472313efbSmrg # Try `ln -sf' first, because the `ln' binary might depend on 206572313efbSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 206672313efbSmrg # so we also need to try rm && ln -s. 206772313efbSmrg for linkname 206872313efbSmrg do 206972313efbSmrg test "$linkname" != "$realname" \ 207072313efbSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 2071bdcaa8d0Smrg done 2072bdcaa8d0Smrg fi 2073bdcaa8d0Smrg 207472313efbSmrg # Do each command in the postinstall commands. 207572313efbSmrg lib="$destdir/$realname" 207672313efbSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 2077bdcaa8d0Smrg fi 2078bdcaa8d0Smrg 207972313efbSmrg # Install the pseudo-library for information purposes. 208072313efbSmrg func_basename "$file" 208172313efbSmrg name="$func_basename_result" 208272313efbSmrg instname="$dir/$name"i 208372313efbSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2084bdcaa8d0Smrg 208572313efbSmrg # Maybe install the static library, too. 208672313efbSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 208772313efbSmrg ;; 2088bdcaa8d0Smrg 208972313efbSmrg *.lo) 209072313efbSmrg # Install (i.e. copy) a libtool object. 2091bdcaa8d0Smrg 209272313efbSmrg # Figure out destination file name, if it wasn't already specified. 209372313efbSmrg if test -n "$destname"; then 209472313efbSmrg destfile="$destdir/$destname" 209572313efbSmrg else 209672313efbSmrg func_basename "$file" 209772313efbSmrg destfile="$func_basename_result" 209872313efbSmrg destfile="$destdir/$destfile" 209972313efbSmrg fi 210072313efbSmrg 210172313efbSmrg # Deduce the name of the destination old-style object file. 210272313efbSmrg case $destfile in 210372313efbSmrg *.lo) 210472313efbSmrg func_lo2o "$destfile" 210572313efbSmrg staticdest=$func_lo2o_result 210672313efbSmrg ;; 210772313efbSmrg *.$objext) 210872313efbSmrg staticdest="$destfile" 210972313efbSmrg destfile= 211072313efbSmrg ;; 211172313efbSmrg *) 211272313efbSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 211372313efbSmrg ;; 2114bdcaa8d0Smrg esac 2115bdcaa8d0Smrg 211672313efbSmrg # Install the libtool object if requested. 211772313efbSmrg test -n "$destfile" && \ 211872313efbSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 211972313efbSmrg 212072313efbSmrg # Install the old object if enabled. 212172313efbSmrg if test "$build_old_libs" = yes; then 212272313efbSmrg # Deduce the name of the old-style object file. 212372313efbSmrg func_lo2o "$file" 212472313efbSmrg staticobj=$func_lo2o_result 212572313efbSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 2126bdcaa8d0Smrg fi 212772313efbSmrg exit $EXIT_SUCCESS 212872313efbSmrg ;; 2129bdcaa8d0Smrg 213072313efbSmrg *) 213172313efbSmrg # Figure out destination file name, if it wasn't already specified. 213272313efbSmrg if test -n "$destname"; then 213372313efbSmrg destfile="$destdir/$destname" 213472313efbSmrg else 213572313efbSmrg func_basename "$file" 213672313efbSmrg destfile="$func_basename_result" 213772313efbSmrg destfile="$destdir/$destfile" 213872313efbSmrg fi 213972313efbSmrg 214072313efbSmrg # If the file is missing, and there is a .exe on the end, strip it 214172313efbSmrg # because it is most likely a libtool script we actually want to 214272313efbSmrg # install 214372313efbSmrg stripped_ext="" 214472313efbSmrg case $file in 214572313efbSmrg *.exe) 214672313efbSmrg if test ! -f "$file"; then 214772313efbSmrg func_stripname '' '.exe' "$file" 214872313efbSmrg file=$func_stripname_result 214972313efbSmrg stripped_ext=".exe" 2150bdcaa8d0Smrg fi 215172313efbSmrg ;; 215272313efbSmrg esac 2153bdcaa8d0Smrg 215472313efbSmrg # Do a test to see if this is really a libtool program. 215572313efbSmrg case $host in 215672313efbSmrg *cygwin* | *mingw*) 215772313efbSmrg if func_ltwrapper_executable_p "$file"; then 215872313efbSmrg func_ltwrapper_scriptname "$file" 215972313efbSmrg wrapper=$func_ltwrapper_scriptname_result 216072313efbSmrg else 216172313efbSmrg func_stripname '' '.exe' "$file" 216272313efbSmrg wrapper=$func_stripname_result 216372313efbSmrg fi 216472313efbSmrg ;; 216572313efbSmrg *) 216672313efbSmrg wrapper=$file 216772313efbSmrg ;; 216872313efbSmrg esac 216972313efbSmrg if func_ltwrapper_script_p "$wrapper"; then 217072313efbSmrg notinst_deplibs= 217172313efbSmrg relink_command= 2172bdcaa8d0Smrg 217372313efbSmrg func_source "$wrapper" 2174bdcaa8d0Smrg 217572313efbSmrg # Check the variables that should have been set. 217672313efbSmrg test -z "$generated_by_libtool_version" && \ 217772313efbSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 217872313efbSmrg 217972313efbSmrg finalize=yes 218072313efbSmrg for lib in $notinst_deplibs; do 218172313efbSmrg # Check to see that each library is installed. 218272313efbSmrg libdir= 218372313efbSmrg if test -f "$lib"; then 218472313efbSmrg func_source "$lib" 218572313efbSmrg fi 218672313efbSmrg libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 218772313efbSmrg if test -n "$libdir" && test ! -f "$libfile"; then 218872313efbSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 218972313efbSmrg finalize=no 219072313efbSmrg fi 219172313efbSmrg done 219272313efbSmrg 219372313efbSmrg relink_command= 219472313efbSmrg func_source "$wrapper" 219572313efbSmrg 219672313efbSmrg outputname= 219772313efbSmrg if test "$fast_install" = no && test -n "$relink_command"; then 219872313efbSmrg $opt_dry_run || { 219972313efbSmrg if test "$finalize" = yes; then 220072313efbSmrg tmpdir=`func_mktempdir` 220172313efbSmrg func_basename "$file$stripped_ext" 220272313efbSmrg file="$func_basename_result" 220372313efbSmrg outputname="$tmpdir/$file" 220472313efbSmrg # Replace the output file specification. 220572313efbSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 220672313efbSmrg 220772313efbSmrg $opt_silent || { 220872313efbSmrg func_quote_for_expand "$relink_command" 220972313efbSmrg eval "func_echo $func_quote_for_expand_result" 221072313efbSmrg } 221172313efbSmrg if eval "$relink_command"; then : 221272313efbSmrg else 221372313efbSmrg func_error "error: relink \`$file' with the above command before installing it" 221472313efbSmrg $opt_dry_run || ${RM}r "$tmpdir" 221572313efbSmrg continue 221672313efbSmrg fi 221772313efbSmrg file="$outputname" 221872313efbSmrg else 221972313efbSmrg func_warning "cannot relink \`$file'" 222072313efbSmrg fi 222172313efbSmrg } 2222bdcaa8d0Smrg else 222372313efbSmrg # Install the binary that we compiled earlier. 222472313efbSmrg file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 2225bdcaa8d0Smrg fi 222672313efbSmrg fi 2227bdcaa8d0Smrg 222872313efbSmrg # remove .exe since cygwin /usr/bin/install will append another 222972313efbSmrg # one anyway 223072313efbSmrg case $install_prog,$host in 223172313efbSmrg */usr/bin/install*,*cygwin*) 223272313efbSmrg case $file:$destfile in 223372313efbSmrg *.exe:*.exe) 223472313efbSmrg # this is ok 223572313efbSmrg ;; 223672313efbSmrg *.exe:*) 223772313efbSmrg destfile=$destfile.exe 223872313efbSmrg ;; 223972313efbSmrg *:*.exe) 224072313efbSmrg func_stripname '' '.exe' "$destfile" 224172313efbSmrg destfile=$func_stripname_result 224272313efbSmrg ;; 224372313efbSmrg esac 2244bdcaa8d0Smrg ;; 2245bdcaa8d0Smrg esac 224672313efbSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 224772313efbSmrg $opt_dry_run || if test -n "$outputname"; then 224872313efbSmrg ${RM}r "$tmpdir" 224972313efbSmrg fi 225072313efbSmrg ;; 225172313efbSmrg esac 225272313efbSmrg done 2253bdcaa8d0Smrg 225472313efbSmrg for file in $staticlibs; do 225572313efbSmrg func_basename "$file" 225672313efbSmrg name="$func_basename_result" 2257bdcaa8d0Smrg 225872313efbSmrg # Set up the ranlib parameters. 225972313efbSmrg oldlib="$destdir/$name" 2260bdcaa8d0Smrg 226172313efbSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2262bdcaa8d0Smrg 226372313efbSmrg if test -n "$stripme" && test -n "$old_striplib"; then 226472313efbSmrg func_show_eval "$old_striplib $oldlib" 'exit $?' 226572313efbSmrg fi 2266bdcaa8d0Smrg 226772313efbSmrg # Do each command in the postinstall commands. 226872313efbSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 226972313efbSmrg done 2270bdcaa8d0Smrg 227172313efbSmrg test -n "$future_libdirs" && \ 227272313efbSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 2273bdcaa8d0Smrg 227472313efbSmrg if test -n "$current_libdirs"; then 227572313efbSmrg # Maybe just do a dry run. 227672313efbSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 227772313efbSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 227872313efbSmrg else 227972313efbSmrg exit $EXIT_SUCCESS 228072313efbSmrg fi 228172313efbSmrg} 2282bdcaa8d0Smrg 228372313efbSmrgtest "$mode" = install && func_mode_install ${1+"$@"} 2284bdcaa8d0Smrg 2285bdcaa8d0Smrg 228672313efbSmrg# func_generate_dlsyms outputname originator pic_p 228772313efbSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 228872313efbSmrg# a dlpreopen symbol table. 228972313efbSmrgfunc_generate_dlsyms () 229072313efbSmrg{ 229172313efbSmrg $opt_debug 229272313efbSmrg my_outputname="$1" 229372313efbSmrg my_originator="$2" 229472313efbSmrg my_pic_p="${3-no}" 229572313efbSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 229672313efbSmrg my_dlsyms= 229772313efbSmrg 229872313efbSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 229972313efbSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 230072313efbSmrg my_dlsyms="${my_outputname}S.c" 230172313efbSmrg else 230272313efbSmrg func_error "not configured to extract global symbols from dlpreopened files" 230372313efbSmrg fi 230472313efbSmrg fi 2305bdcaa8d0Smrg 230672313efbSmrg if test -n "$my_dlsyms"; then 230772313efbSmrg case $my_dlsyms in 230872313efbSmrg "") ;; 230972313efbSmrg *.c) 231072313efbSmrg # Discover the nlist of each of the dlfiles. 231172313efbSmrg nlist="$output_objdir/${my_outputname}.nm" 231272313efbSmrg 231372313efbSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 231472313efbSmrg 231572313efbSmrg # Parse the name list into a source file. 231672313efbSmrg func_verbose "creating $output_objdir/$my_dlsyms" 231772313efbSmrg 231872313efbSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 231972313efbSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 232072313efbSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 232172313efbSmrg 232272313efbSmrg#ifdef __cplusplus 232372313efbSmrgextern \"C\" { 232472313efbSmrg#endif 232572313efbSmrg 232672313efbSmrg/* External symbol declarations for the compiler. */\ 232772313efbSmrg" 232872313efbSmrg 232972313efbSmrg if test "$dlself" = yes; then 233072313efbSmrg func_verbose "generating symbol list for \`$output'" 233172313efbSmrg 233272313efbSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 233372313efbSmrg 233472313efbSmrg # Add our own program objects to the symbol list. 233572313efbSmrg progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 233672313efbSmrg for progfile in $progfiles; do 233772313efbSmrg func_verbose "extracting global C symbols from \`$progfile'" 233872313efbSmrg $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 233972313efbSmrg done 234072313efbSmrg 234172313efbSmrg if test -n "$exclude_expsyms"; then 234272313efbSmrg $opt_dry_run || { 234372313efbSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 234472313efbSmrg eval '$MV "$nlist"T "$nlist"' 234572313efbSmrg } 2346bdcaa8d0Smrg fi 2347bdcaa8d0Smrg 234872313efbSmrg if test -n "$export_symbols_regex"; then 234972313efbSmrg $opt_dry_run || { 235072313efbSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 235172313efbSmrg eval '$MV "$nlist"T "$nlist"' 235272313efbSmrg } 2353bdcaa8d0Smrg fi 235472313efbSmrg 235572313efbSmrg # Prepare the list of exported symbols 235672313efbSmrg if test -z "$export_symbols"; then 235772313efbSmrg export_symbols="$output_objdir/$outputname.exp" 235872313efbSmrg $opt_dry_run || { 235972313efbSmrg $RM $export_symbols 236072313efbSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 236172313efbSmrg case $host in 236272313efbSmrg *cygwin* | *mingw* | *cegcc* ) 236372313efbSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 236472313efbSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 236572313efbSmrg ;; 2366bdcaa8d0Smrg esac 236772313efbSmrg } 236872313efbSmrg else 236972313efbSmrg $opt_dry_run || { 237072313efbSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 237172313efbSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 237272313efbSmrg eval '$MV "$nlist"T "$nlist"' 237372313efbSmrg case $host in 237472313efbSmrg *cygwin | *mingw* | *cegcc* ) 237572313efbSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 237672313efbSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 237772313efbSmrg ;; 2378bdcaa8d0Smrg esac 237972313efbSmrg } 2380bdcaa8d0Smrg fi 238172313efbSmrg fi 2382bdcaa8d0Smrg 238372313efbSmrg for dlprefile in $dlprefiles; do 238472313efbSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 238572313efbSmrg func_basename "$dlprefile" 238672313efbSmrg name="$func_basename_result" 238772313efbSmrg $opt_dry_run || { 238872313efbSmrg eval '$ECHO ": $name " >> "$nlist"' 238972313efbSmrg eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 239072313efbSmrg } 239172313efbSmrg done 2392bdcaa8d0Smrg 239372313efbSmrg $opt_dry_run || { 239472313efbSmrg # Make sure we have at least an empty file. 239572313efbSmrg test -f "$nlist" || : > "$nlist" 2396bdcaa8d0Smrg 239772313efbSmrg if test -n "$exclude_expsyms"; then 239872313efbSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 239972313efbSmrg $MV "$nlist"T "$nlist" 2400bdcaa8d0Smrg fi 2401bdcaa8d0Smrg 240272313efbSmrg # Try sorting and uniquifying the output. 240372313efbSmrg if $GREP -v "^: " < "$nlist" | 240472313efbSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 240572313efbSmrg sort -k 3 2406bdcaa8d0Smrg else 240772313efbSmrg sort +2 240872313efbSmrg fi | 240972313efbSmrg uniq > "$nlist"S; then 241072313efbSmrg : 2411bdcaa8d0Smrg else 241272313efbSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 2413bdcaa8d0Smrg fi 2414bdcaa8d0Smrg 241572313efbSmrg if test -f "$nlist"S; then 241672313efbSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2417bdcaa8d0Smrg else 241872313efbSmrg $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 2419bdcaa8d0Smrg fi 2420bdcaa8d0Smrg 242172313efbSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 2422bdcaa8d0Smrg 242372313efbSmrg/* The mapping between symbol names and symbols. */ 242472313efbSmrgtypedef struct { 242572313efbSmrg const char *name; 242672313efbSmrg void *address; 242772313efbSmrg} lt_dlsymlist; 242872313efbSmrg" 242972313efbSmrg case $host in 243072313efbSmrg *cygwin* | *mingw* | *cegcc* ) 243172313efbSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 243272313efbSmrg/* DATA imports from DLLs on WIN32 con't be const, because 243372313efbSmrg runtime relocations are performed -- see ld's documentation 243472313efbSmrg on pseudo-relocs. */" 243572313efbSmrg lt_dlsym_const= ;; 243672313efbSmrg *osf5*) 243772313efbSmrg echo >> "$output_objdir/$my_dlsyms" "\ 243872313efbSmrg/* This system does not cope well with relocations in const data */" 243972313efbSmrg lt_dlsym_const= ;; 244072313efbSmrg *) 244172313efbSmrg lt_dlsym_const=const ;; 244272313efbSmrg esac 244372313efbSmrg 244472313efbSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 244572313efbSmrgextern $lt_dlsym_const lt_dlsymlist 244672313efbSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 244772313efbSmrg$lt_dlsym_const lt_dlsymlist 244872313efbSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 244972313efbSmrg{\ 245072313efbSmrg { \"$my_originator\", (void *) 0 }," 245172313efbSmrg 245272313efbSmrg case $need_lib_prefix in 245372313efbSmrg no) 245472313efbSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 245572313efbSmrg ;; 245672313efbSmrg *) 245772313efbSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 245872313efbSmrg ;; 245972313efbSmrg esac 246072313efbSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 246172313efbSmrg {0, (void *) 0} 246272313efbSmrg}; 246372313efbSmrg 246472313efbSmrg/* This works around a problem in FreeBSD linker */ 246572313efbSmrg#ifdef FREEBSD_WORKAROUND 246672313efbSmrgstatic const void *lt_preloaded_setup() { 246772313efbSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 246872313efbSmrg} 246972313efbSmrg#endif 247072313efbSmrg 247172313efbSmrg#ifdef __cplusplus 247272313efbSmrg} 247372313efbSmrg#endif\ 247472313efbSmrg" 247572313efbSmrg } # !$opt_dry_run 247672313efbSmrg 247772313efbSmrg pic_flag_for_symtable= 247872313efbSmrg case "$compile_command " in 247972313efbSmrg *" -static "*) ;; 248072313efbSmrg *) 248172313efbSmrg case $host in 248272313efbSmrg # compiling the symbol table file with pic_flag works around 248372313efbSmrg # a FreeBSD bug that causes programs to crash when -lm is 248472313efbSmrg # linked before any other PIC object. But we must not use 248572313efbSmrg # pic_flag when linking with -static. The problem exists in 248672313efbSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 248772313efbSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 248872313efbSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 248972313efbSmrg *-*-hpux*) 249072313efbSmrg pic_flag_for_symtable=" $pic_flag" ;; 249172313efbSmrg *) 249272313efbSmrg if test "X$my_pic_p" != Xno; then 249372313efbSmrg pic_flag_for_symtable=" $pic_flag" 2494bdcaa8d0Smrg fi 249572313efbSmrg ;; 249672313efbSmrg esac 249772313efbSmrg ;; 249872313efbSmrg esac 249972313efbSmrg symtab_cflags= 250072313efbSmrg for arg in $LTCFLAGS; do 250172313efbSmrg case $arg in 250272313efbSmrg -pie | -fpie | -fPIE) ;; 250372313efbSmrg *) symtab_cflags="$symtab_cflags $arg" ;; 250472313efbSmrg esac 250572313efbSmrg done 2506bdcaa8d0Smrg 250772313efbSmrg # Now compile the dynamic symbol file. 250872313efbSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 2509bdcaa8d0Smrg 251072313efbSmrg # Clean up the generated files. 251172313efbSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 251272313efbSmrg 251372313efbSmrg # Transform the symbol file into the correct name. 251472313efbSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 251572313efbSmrg case $host in 251672313efbSmrg *cygwin* | *mingw* | *cegcc* ) 251772313efbSmrg if test -f "$output_objdir/$my_outputname.def"; then 251872313efbSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 251972313efbSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 252072313efbSmrg else 252172313efbSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 252272313efbSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 252372313efbSmrg fi 252472313efbSmrg ;; 252572313efbSmrg *) 252672313efbSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 252772313efbSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2528bdcaa8d0Smrg ;; 2529bdcaa8d0Smrg esac 253072313efbSmrg ;; 253172313efbSmrg *) 253272313efbSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 253372313efbSmrg ;; 253472313efbSmrg esac 253572313efbSmrg else 253672313efbSmrg # We keep going just in case the user didn't refer to 253772313efbSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 253872313efbSmrg # really was required. 253972313efbSmrg 254072313efbSmrg # Nullify the symbol file. 254172313efbSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 254272313efbSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2543bdcaa8d0Smrg fi 254472313efbSmrg} 2545bdcaa8d0Smrg 254672313efbSmrg# func_win32_libid arg 254772313efbSmrg# return the library type of file 'arg' 254872313efbSmrg# 254972313efbSmrg# Need a lot of goo to handle *both* DLLs and import libs 255072313efbSmrg# Has to be a shell function in order to 'eat' the argument 255172313efbSmrg# that is supplied when $file_magic_command is called. 255272313efbSmrgfunc_win32_libid () 255372313efbSmrg{ 255472313efbSmrg $opt_debug 255572313efbSmrg win32_libid_type="unknown" 255672313efbSmrg win32_fileres=`file -L $1 2>/dev/null` 255772313efbSmrg case $win32_fileres in 255872313efbSmrg *ar\ archive\ import\ library*) # definitely import 255972313efbSmrg win32_libid_type="x86 archive import" 256072313efbSmrg ;; 256172313efbSmrg *ar\ archive*) # could be an import, or static 256272313efbSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 256372313efbSmrg $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 256472313efbSmrg win32_nmres=`eval $NM -f posix -A $1 | 256572313efbSmrg $SED -n -e ' 256672313efbSmrg 1,100{ 256772313efbSmrg / I /{ 256872313efbSmrg s,.*,import, 256972313efbSmrg p 257072313efbSmrg q 257172313efbSmrg } 257272313efbSmrg }'` 257372313efbSmrg case $win32_nmres in 257472313efbSmrg import*) win32_libid_type="x86 archive import";; 257572313efbSmrg *) win32_libid_type="x86 archive static";; 257672313efbSmrg esac 257772313efbSmrg fi 257872313efbSmrg ;; 257972313efbSmrg *DLL*) 258072313efbSmrg win32_libid_type="x86 DLL" 258172313efbSmrg ;; 258272313efbSmrg *executable*) # but shell scripts are "executable" too... 258372313efbSmrg case $win32_fileres in 258472313efbSmrg *MS\ Windows\ PE\ Intel*) 258572313efbSmrg win32_libid_type="x86 DLL" 258672313efbSmrg ;; 258772313efbSmrg esac 258872313efbSmrg ;; 258972313efbSmrg esac 259072313efbSmrg $ECHO "$win32_libid_type" 259172313efbSmrg} 2592bdcaa8d0Smrg 2593bdcaa8d0Smrg 2594bdcaa8d0Smrg 259572313efbSmrg# func_extract_an_archive dir oldlib 259672313efbSmrgfunc_extract_an_archive () 259772313efbSmrg{ 259872313efbSmrg $opt_debug 259972313efbSmrg f_ex_an_ar_dir="$1"; shift 260072313efbSmrg f_ex_an_ar_oldlib="$1" 260172313efbSmrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 260272313efbSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 260372313efbSmrg : 260472313efbSmrg else 260572313efbSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 260672313efbSmrg fi 260772313efbSmrg} 2608bdcaa8d0Smrg 2609bdcaa8d0Smrg 261072313efbSmrg# func_extract_archives gentop oldlib ... 261172313efbSmrgfunc_extract_archives () 261272313efbSmrg{ 261372313efbSmrg $opt_debug 261472313efbSmrg my_gentop="$1"; shift 261572313efbSmrg my_oldlibs=${1+"$@"} 261672313efbSmrg my_oldobjs="" 261772313efbSmrg my_xlib="" 261872313efbSmrg my_xabs="" 261972313efbSmrg my_xdir="" 2620bdcaa8d0Smrg 262172313efbSmrg for my_xlib in $my_oldlibs; do 262272313efbSmrg # Extract the objects. 262372313efbSmrg case $my_xlib in 262472313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 262572313efbSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 262672313efbSmrg esac 262772313efbSmrg func_basename "$my_xlib" 262872313efbSmrg my_xlib="$func_basename_result" 262972313efbSmrg my_xlib_u=$my_xlib 263072313efbSmrg while :; do 263172313efbSmrg case " $extracted_archives " in 263272313efbSmrg *" $my_xlib_u "*) 263372313efbSmrg func_arith $extracted_serial + 1 263472313efbSmrg extracted_serial=$func_arith_result 263572313efbSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 263672313efbSmrg *) break ;; 263772313efbSmrg esac 263872313efbSmrg done 263972313efbSmrg extracted_archives="$extracted_archives $my_xlib_u" 264072313efbSmrg my_xdir="$my_gentop/$my_xlib_u" 2641bdcaa8d0Smrg 264272313efbSmrg func_mkdir_p "$my_xdir" 2643bdcaa8d0Smrg 264472313efbSmrg case $host in 264572313efbSmrg *-darwin*) 264672313efbSmrg func_verbose "Extracting $my_xabs" 264772313efbSmrg # Do not bother doing anything if just a dry run 264872313efbSmrg $opt_dry_run || { 264972313efbSmrg darwin_orig_dir=`pwd` 265072313efbSmrg cd $my_xdir || exit $? 265172313efbSmrg darwin_archive=$my_xabs 265272313efbSmrg darwin_curdir=`pwd` 265372313efbSmrg darwin_base_archive=`basename "$darwin_archive"` 265472313efbSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 265572313efbSmrg if test -n "$darwin_arches"; then 265672313efbSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 265772313efbSmrg darwin_arch= 265872313efbSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 265972313efbSmrg for darwin_arch in $darwin_arches ; do 266072313efbSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 266172313efbSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 266272313efbSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 266372313efbSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 266472313efbSmrg cd "$darwin_curdir" 266572313efbSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 266672313efbSmrg done # $darwin_arches 266772313efbSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 266872313efbSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 266972313efbSmrg darwin_file= 267072313efbSmrg darwin_files= 267172313efbSmrg for darwin_file in $darwin_filelist; do 267272313efbSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 267372313efbSmrg $LIPO -create -output "$darwin_file" $darwin_files 267472313efbSmrg done # $darwin_filelist 267572313efbSmrg $RM -rf unfat-$$ 267672313efbSmrg cd "$darwin_orig_dir" 267772313efbSmrg else 267872313efbSmrg cd $darwin_orig_dir 267972313efbSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 268072313efbSmrg fi # $darwin_arches 268172313efbSmrg } # !$opt_dry_run 268272313efbSmrg ;; 268372313efbSmrg *) 268472313efbSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 268572313efbSmrg ;; 2686bdcaa8d0Smrg esac 268772313efbSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 268872313efbSmrg done 2689bdcaa8d0Smrg 269072313efbSmrg func_extract_archives_result="$my_oldobjs" 269172313efbSmrg} 2692bdcaa8d0Smrg 2693bdcaa8d0Smrg 2694bdcaa8d0Smrg 269572313efbSmrg# func_emit_wrapper_part1 [arg=no] 269672313efbSmrg# 269772313efbSmrg# Emit the first part of a libtool wrapper script on stdout. 269872313efbSmrg# For more information, see the description associated with 269972313efbSmrg# func_emit_wrapper(), below. 270072313efbSmrgfunc_emit_wrapper_part1 () 270172313efbSmrg{ 270272313efbSmrg func_emit_wrapper_part1_arg1=no 270372313efbSmrg if test -n "$1" ; then 270472313efbSmrg func_emit_wrapper_part1_arg1=$1 2705bdcaa8d0Smrg fi 2706bdcaa8d0Smrg 270772313efbSmrg $ECHO "\ 270872313efbSmrg#! $SHELL 2709bdcaa8d0Smrg 271072313efbSmrg# $output - temporary wrapper script for $objdir/$outputname 271172313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 271272313efbSmrg# 271372313efbSmrg# The $output program cannot be directly executed until all the libtool 271472313efbSmrg# libraries that it depends on are installed. 271572313efbSmrg# 271672313efbSmrg# This wrapper script should never be moved out of the build directory. 271772313efbSmrg# If it is, it will not operate correctly. 2718bdcaa8d0Smrg 271972313efbSmrg# Sed substitution that helps us do robust quoting. It backslashifies 272072313efbSmrg# metacharacters that are still active within double-quoted strings. 272172313efbSmrgXsed='${SED} -e 1s/^X//' 272272313efbSmrgsed_quote_subst='$sed_quote_subst' 2723bdcaa8d0Smrg 272472313efbSmrg# Be Bourne compatible 272572313efbSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 272672313efbSmrg emulate sh 272772313efbSmrg NULLCMD=: 272872313efbSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 272972313efbSmrg # is contrary to our usage. Disable this feature. 273072313efbSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 273172313efbSmrg setopt NO_GLOB_SUBST 273272313efbSmrgelse 273372313efbSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 273472313efbSmrgfi 273572313efbSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 273672313efbSmrgDUALCASE=1; export DUALCASE # for MKS sh 2737bdcaa8d0Smrg 273872313efbSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 273972313efbSmrg# if CDPATH is set. 274072313efbSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 2741bdcaa8d0Smrg 274272313efbSmrgrelink_command=\"$relink_command\" 2743bdcaa8d0Smrg 274472313efbSmrg# This environment variable determines our operation mode. 274572313efbSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 274672313efbSmrg # install mode needs the following variables: 274772313efbSmrg generated_by_libtool_version='$macro_version' 274872313efbSmrg notinst_deplibs='$notinst_deplibs' 274972313efbSmrgelse 275072313efbSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 275172313efbSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 275272313efbSmrg ECHO=\"$qecho\" 275372313efbSmrg file=\"\$0\" 275472313efbSmrg # Make sure echo works. 275572313efbSmrg if test \"X\$1\" = X--no-reexec; then 275672313efbSmrg # Discard the --no-reexec flag, and continue. 275772313efbSmrg shift 275872313efbSmrg elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 275972313efbSmrg # Yippee, \$ECHO works! 276072313efbSmrg : 276172313efbSmrg else 276272313efbSmrg # Restart under the correct shell, and then maybe \$ECHO will work. 276372313efbSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 276472313efbSmrg fi 276572313efbSmrg fi\ 276672313efbSmrg" 276772313efbSmrg $ECHO "\ 2768bdcaa8d0Smrg 276972313efbSmrg # Find the directory that this script lives in. 277072313efbSmrg thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 277172313efbSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2772bdcaa8d0Smrg 277372313efbSmrg # Follow symbolic links until we get to the real thisdir. 277472313efbSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 277572313efbSmrg while test -n \"\$file\"; do 277672313efbSmrg destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2777bdcaa8d0Smrg 277872313efbSmrg # If there was a directory component, then change thisdir. 277972313efbSmrg if test \"x\$destdir\" != \"x\$file\"; then 278072313efbSmrg case \"\$destdir\" in 278172313efbSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 278272313efbSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 278372313efbSmrg esac 278472313efbSmrg fi 2785bdcaa8d0Smrg 278672313efbSmrg file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 278772313efbSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 278872313efbSmrg done 278972313efbSmrg" 279072313efbSmrg} 279172313efbSmrg# end: func_emit_wrapper_part1 2792bdcaa8d0Smrg 279372313efbSmrg# func_emit_wrapper_part2 [arg=no] 279472313efbSmrg# 279572313efbSmrg# Emit the second part of a libtool wrapper script on stdout. 279672313efbSmrg# For more information, see the description associated with 279772313efbSmrg# func_emit_wrapper(), below. 279872313efbSmrgfunc_emit_wrapper_part2 () 279972313efbSmrg{ 280072313efbSmrg func_emit_wrapper_part2_arg1=no 280172313efbSmrg if test -n "$1" ; then 280272313efbSmrg func_emit_wrapper_part2_arg1=$1 280372313efbSmrg fi 2804bdcaa8d0Smrg 280572313efbSmrg $ECHO "\ 2806bdcaa8d0Smrg 280772313efbSmrg # Usually 'no', except on cygwin/mingw when embedded into 280872313efbSmrg # the cwrapper. 280972313efbSmrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 281072313efbSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 281172313efbSmrg # special case for '.' 281272313efbSmrg if test \"\$thisdir\" = \".\"; then 281372313efbSmrg thisdir=\`pwd\` 281472313efbSmrg fi 281572313efbSmrg # remove .libs from thisdir 281672313efbSmrg case \"\$thisdir\" in 281772313efbSmrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 281872313efbSmrg $objdir ) thisdir=. ;; 281972313efbSmrg esac 282072313efbSmrg fi 2821bdcaa8d0Smrg 282272313efbSmrg # Try to get the absolute directory name. 282372313efbSmrg absdir=\`cd \"\$thisdir\" && pwd\` 282472313efbSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 282572313efbSmrg" 2826bdcaa8d0Smrg 282772313efbSmrg if test "$fast_install" = yes; then 282872313efbSmrg $ECHO "\ 282972313efbSmrg program=lt-'$outputname'$exeext 283072313efbSmrg progdir=\"\$thisdir/$objdir\" 2831bdcaa8d0Smrg 283272313efbSmrg if test ! -f \"\$progdir/\$program\" || 283372313efbSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 283472313efbSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2835bdcaa8d0Smrg 283672313efbSmrg file=\"\$\$-\$program\" 2837bdcaa8d0Smrg 283872313efbSmrg if test ! -d \"\$progdir\"; then 283972313efbSmrg $MKDIR \"\$progdir\" 284072313efbSmrg else 284172313efbSmrg $RM \"\$progdir/\$file\" 284272313efbSmrg fi" 2843bdcaa8d0Smrg 284472313efbSmrg $ECHO "\ 2845bdcaa8d0Smrg 284672313efbSmrg # relink executable if necessary 284772313efbSmrg if test -n \"\$relink_command\"; then 284872313efbSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 284972313efbSmrg else 285072313efbSmrg $ECHO \"\$relink_command_output\" >&2 285172313efbSmrg $RM \"\$progdir/\$file\" 285272313efbSmrg exit 1 285372313efbSmrg fi 285472313efbSmrg fi 2855bdcaa8d0Smrg 285672313efbSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 285772313efbSmrg { $RM \"\$progdir/\$program\"; 285872313efbSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 285972313efbSmrg $RM \"\$progdir/\$file\" 286072313efbSmrg fi" 286172313efbSmrg else 286272313efbSmrg $ECHO "\ 286372313efbSmrg program='$outputname' 286472313efbSmrg progdir=\"\$thisdir/$objdir\" 286572313efbSmrg" 286672313efbSmrg fi 2867bdcaa8d0Smrg 286872313efbSmrg $ECHO "\ 2869bdcaa8d0Smrg 287072313efbSmrg if test -f \"\$progdir/\$program\"; then" 2871bdcaa8d0Smrg 287272313efbSmrg # Export our shlibpath_var if we have one. 287372313efbSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 287472313efbSmrg $ECHO "\ 287572313efbSmrg # Add our own library path to $shlibpath_var 287672313efbSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2877bdcaa8d0Smrg 287872313efbSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 287972313efbSmrg # The second colon is a workaround for a bug in BeOS R4 sed 288072313efbSmrg $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2881bdcaa8d0Smrg 288272313efbSmrg export $shlibpath_var 288372313efbSmrg" 2884bdcaa8d0Smrg fi 2885bdcaa8d0Smrg 288672313efbSmrg # fixup the dll searchpath if we need to. 288772313efbSmrg if test -n "$dllsearchpath"; then 288872313efbSmrg $ECHO "\ 288972313efbSmrg # Add the dll search path components to the executable PATH 289072313efbSmrg PATH=$dllsearchpath:\$PATH 289172313efbSmrg" 2892bdcaa8d0Smrg fi 2893bdcaa8d0Smrg 289472313efbSmrg $ECHO "\ 289572313efbSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 289672313efbSmrg # Run the actual program with our arguments. 289772313efbSmrg" 289872313efbSmrg case $host in 289972313efbSmrg # Backslashes separate directories on plain windows 290072313efbSmrg *-*-mingw | *-*-os2* | *-cegcc*) 290172313efbSmrg $ECHO "\ 290272313efbSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 290372313efbSmrg" 290472313efbSmrg ;; 290572313efbSmrg 290672313efbSmrg *) 290772313efbSmrg $ECHO "\ 290872313efbSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 290972313efbSmrg" 291072313efbSmrg ;; 291172313efbSmrg esac 291272313efbSmrg $ECHO "\ 291372313efbSmrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 291472313efbSmrg exit 1 291572313efbSmrg fi 291672313efbSmrg else 291772313efbSmrg # The program doesn't exist. 291872313efbSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 291972313efbSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 292072313efbSmrg $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 292172313efbSmrg exit 1 292272313efbSmrg fi 292372313efbSmrgfi\ 292472313efbSmrg" 292572313efbSmrg} 292672313efbSmrg# end: func_emit_wrapper_part2 292772313efbSmrg 292872313efbSmrg 292972313efbSmrg# func_emit_wrapper [arg=no] 293072313efbSmrg# 293172313efbSmrg# Emit a libtool wrapper script on stdout. 293272313efbSmrg# Don't directly open a file because we may want to 293372313efbSmrg# incorporate the script contents within a cygwin/mingw 293472313efbSmrg# wrapper executable. Must ONLY be called from within 293572313efbSmrg# func_mode_link because it depends on a number of variables 293672313efbSmrg# set therein. 293772313efbSmrg# 293872313efbSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 293972313efbSmrg# variable will take. If 'yes', then the emitted script 294072313efbSmrg# will assume that the directory in which it is stored is 294172313efbSmrg# the $objdir directory. This is a cygwin/mingw-specific 294272313efbSmrg# behavior. 294372313efbSmrgfunc_emit_wrapper () 294472313efbSmrg{ 294572313efbSmrg func_emit_wrapper_arg1=no 294672313efbSmrg if test -n "$1" ; then 294772313efbSmrg func_emit_wrapper_arg1=$1 2948bdcaa8d0Smrg fi 2949bdcaa8d0Smrg 295072313efbSmrg # split this up so that func_emit_cwrapperexe_src 295172313efbSmrg # can call each part independently. 295272313efbSmrg func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 295372313efbSmrg func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 295472313efbSmrg} 2955bdcaa8d0Smrg 2956bdcaa8d0Smrg 295772313efbSmrg# func_to_host_path arg 295872313efbSmrg# 295972313efbSmrg# Convert paths to host format when used with build tools. 296072313efbSmrg# Intended for use with "native" mingw (where libtool itself 296172313efbSmrg# is running under the msys shell), or in the following cross- 296272313efbSmrg# build environments: 296372313efbSmrg# $build $host 296472313efbSmrg# mingw (msys) mingw [e.g. native] 296572313efbSmrg# cygwin mingw 296672313efbSmrg# *nix + wine mingw 296772313efbSmrg# where wine is equipped with the `winepath' executable. 296872313efbSmrg# In the native mingw case, the (msys) shell automatically 296972313efbSmrg# converts paths for any non-msys applications it launches, 297072313efbSmrg# but that facility isn't available from inside the cwrapper. 297172313efbSmrg# Similar accommodations are necessary for $host mingw and 297272313efbSmrg# $build cygwin. Calling this function does no harm for other 297372313efbSmrg# $host/$build combinations not listed above. 297472313efbSmrg# 297572313efbSmrg# ARG is the path (on $build) that should be converted to 297672313efbSmrg# the proper representation for $host. The result is stored 297772313efbSmrg# in $func_to_host_path_result. 297872313efbSmrgfunc_to_host_path () 297972313efbSmrg{ 298072313efbSmrg func_to_host_path_result="$1" 298172313efbSmrg if test -n "$1" ; then 298272313efbSmrg case $host in 298372313efbSmrg *mingw* ) 298472313efbSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 298572313efbSmrg case $build in 298672313efbSmrg *mingw* ) # actually, msys 298772313efbSmrg # awkward: cmd appends spaces to result 298872313efbSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 298972313efbSmrg func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 299072313efbSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 299172313efbSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 299272313efbSmrg $SED -e "$lt_sed_naive_backslashify"` 299372313efbSmrg ;; 299472313efbSmrg *cygwin* ) 299572313efbSmrg func_to_host_path_tmp1=`cygpath -w "$1"` 299672313efbSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 299772313efbSmrg $SED -e "$lt_sed_naive_backslashify"` 299872313efbSmrg ;; 299972313efbSmrg * ) 300072313efbSmrg # Unfortunately, winepath does not exit with a non-zero 300172313efbSmrg # error code, so we are forced to check the contents of 300272313efbSmrg # stdout. On the other hand, if the command is not 300372313efbSmrg # found, the shell will set an exit code of 127 and print 300472313efbSmrg # *an error message* to stdout. So we must check for both 300572313efbSmrg # error code of zero AND non-empty stdout, which explains 300672313efbSmrg # the odd construction: 300772313efbSmrg func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 300872313efbSmrg if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 300972313efbSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 301072313efbSmrg $SED -e "$lt_sed_naive_backslashify"` 301172313efbSmrg else 301272313efbSmrg # Allow warning below. 301372313efbSmrg func_to_host_path_result="" 301472313efbSmrg fi 301572313efbSmrg ;; 301672313efbSmrg esac 301772313efbSmrg if test -z "$func_to_host_path_result" ; then 301872313efbSmrg func_error "Could not determine host path corresponding to" 301972313efbSmrg func_error " '$1'" 302072313efbSmrg func_error "Continuing, but uninstalled executables may not work." 302172313efbSmrg # Fallback: 302272313efbSmrg func_to_host_path_result="$1" 302372313efbSmrg fi 302472313efbSmrg ;; 302572313efbSmrg esac 302672313efbSmrg fi 302772313efbSmrg} 302872313efbSmrg# end: func_to_host_path 3029bdcaa8d0Smrg 303072313efbSmrg# func_to_host_pathlist arg 303172313efbSmrg# 303272313efbSmrg# Convert pathlists to host format when used with build tools. 303372313efbSmrg# See func_to_host_path(), above. This function supports the 303472313efbSmrg# following $build/$host combinations (but does no harm for 303572313efbSmrg# combinations not listed here): 303672313efbSmrg# $build $host 303772313efbSmrg# mingw (msys) mingw [e.g. native] 303872313efbSmrg# cygwin mingw 303972313efbSmrg# *nix + wine mingw 304072313efbSmrg# 304172313efbSmrg# Path separators are also converted from $build format to 304272313efbSmrg# $host format. If ARG begins or ends with a path separator 304372313efbSmrg# character, it is preserved (but converted to $host format) 304472313efbSmrg# on output. 304572313efbSmrg# 304672313efbSmrg# ARG is a pathlist (on $build) that should be converted to 304772313efbSmrg# the proper representation on $host. The result is stored 304872313efbSmrg# in $func_to_host_pathlist_result. 304972313efbSmrgfunc_to_host_pathlist () 305072313efbSmrg{ 305172313efbSmrg func_to_host_pathlist_result="$1" 305272313efbSmrg if test -n "$1" ; then 305372313efbSmrg case $host in 305472313efbSmrg *mingw* ) 305572313efbSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 305672313efbSmrg # Remove leading and trailing path separator characters from 305772313efbSmrg # ARG. msys behavior is inconsistent here, cygpath turns them 305872313efbSmrg # into '.;' and ';.', and winepath ignores them completely. 305972313efbSmrg func_to_host_pathlist_tmp2="$1" 306072313efbSmrg # Once set for this call, this variable should not be 306172313efbSmrg # reassigned. It is used in tha fallback case. 306272313efbSmrg func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 306372313efbSmrg $SED -e 's|^:*||' -e 's|:*$||'` 306472313efbSmrg case $build in 306572313efbSmrg *mingw* ) # Actually, msys. 306672313efbSmrg # Awkward: cmd appends spaces to result. 306772313efbSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 306872313efbSmrg func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 306972313efbSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 307072313efbSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 307172313efbSmrg $SED -e "$lt_sed_naive_backslashify"` 307272313efbSmrg ;; 307372313efbSmrg *cygwin* ) 307472313efbSmrg func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 307572313efbSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 307672313efbSmrg $SED -e "$lt_sed_naive_backslashify"` 307772313efbSmrg ;; 307872313efbSmrg * ) 307972313efbSmrg # unfortunately, winepath doesn't convert pathlists 308072313efbSmrg func_to_host_pathlist_result="" 308172313efbSmrg func_to_host_pathlist_oldIFS=$IFS 308272313efbSmrg IFS=: 308372313efbSmrg for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 308472313efbSmrg IFS=$func_to_host_pathlist_oldIFS 308572313efbSmrg if test -n "$func_to_host_pathlist_f" ; then 308672313efbSmrg func_to_host_path "$func_to_host_pathlist_f" 308772313efbSmrg if test -n "$func_to_host_path_result" ; then 308872313efbSmrg if test -z "$func_to_host_pathlist_result" ; then 308972313efbSmrg func_to_host_pathlist_result="$func_to_host_path_result" 309072313efbSmrg else 309172313efbSmrg func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 309272313efbSmrg fi 309372313efbSmrg fi 309472313efbSmrg fi 309572313efbSmrg IFS=: 309672313efbSmrg done 309772313efbSmrg IFS=$func_to_host_pathlist_oldIFS 309872313efbSmrg ;; 309972313efbSmrg esac 310072313efbSmrg if test -z "$func_to_host_pathlist_result" ; then 310172313efbSmrg func_error "Could not determine the host path(s) corresponding to" 310272313efbSmrg func_error " '$1'" 310372313efbSmrg func_error "Continuing, but uninstalled executables may not work." 310472313efbSmrg # Fallback. This may break if $1 contains DOS-style drive 310572313efbSmrg # specifications. The fix is not to complicate the expression 310672313efbSmrg # below, but for the user to provide a working wine installation 310772313efbSmrg # with winepath so that path translation in the cross-to-mingw 310872313efbSmrg # case works properly. 310972313efbSmrg lt_replace_pathsep_nix_to_dos="s|:|;|g" 311072313efbSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 311172313efbSmrg $SED -e "$lt_replace_pathsep_nix_to_dos"` 311272313efbSmrg fi 311372313efbSmrg # Now, add the leading and trailing path separators back 311472313efbSmrg case "$1" in 311572313efbSmrg :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 311672313efbSmrg ;; 311772313efbSmrg esac 311872313efbSmrg case "$1" in 311972313efbSmrg *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 312072313efbSmrg ;; 312172313efbSmrg esac 312272313efbSmrg ;; 312372313efbSmrg esac 312472313efbSmrg fi 312572313efbSmrg} 312672313efbSmrg# end: func_to_host_pathlist 3127bdcaa8d0Smrg 312872313efbSmrg# func_emit_cwrapperexe_src 312972313efbSmrg# emit the source code for a wrapper executable on stdout 313072313efbSmrg# Must ONLY be called from within func_mode_link because 313172313efbSmrg# it depends on a number of variable set therein. 313272313efbSmrgfunc_emit_cwrapperexe_src () 313372313efbSmrg{ 313472313efbSmrg cat <<EOF 3135bdcaa8d0Smrg 313672313efbSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 313772313efbSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3138bdcaa8d0Smrg 313972313efbSmrg The $output program cannot be directly executed until all the libtool 314072313efbSmrg libraries that it depends on are installed. 3141bdcaa8d0Smrg 314272313efbSmrg This wrapper executable should never be moved out of the build directory. 314372313efbSmrg If it is, it will not operate correctly. 314472313efbSmrg 314572313efbSmrg Currently, it simply execs the wrapper *script* "$SHELL $output", 314672313efbSmrg but could eventually absorb all of the scripts functionality and 314772313efbSmrg exec $objdir/$outputname directly. 314872313efbSmrg*/ 314972313efbSmrgEOF 315072313efbSmrg cat <<"EOF" 315172313efbSmrg#include <stdio.h> 315272313efbSmrg#include <stdlib.h> 315372313efbSmrg#ifdef _MSC_VER 315472313efbSmrg# include <direct.h> 315572313efbSmrg# include <process.h> 315672313efbSmrg# include <io.h> 315772313efbSmrg# define setmode _setmode 315872313efbSmrg#else 315972313efbSmrg# include <unistd.h> 316072313efbSmrg# include <stdint.h> 316172313efbSmrg# ifdef __CYGWIN__ 316272313efbSmrg# include <io.h> 316372313efbSmrg# define HAVE_SETENV 316472313efbSmrg# ifdef __STRICT_ANSI__ 316572313efbSmrgchar *realpath (const char *, char *); 316672313efbSmrgint putenv (char *); 316772313efbSmrgint setenv (const char *, const char *, int); 316872313efbSmrg# endif 316972313efbSmrg# endif 317072313efbSmrg#endif 317172313efbSmrg#include <malloc.h> 317272313efbSmrg#include <stdarg.h> 317372313efbSmrg#include <assert.h> 317472313efbSmrg#include <string.h> 317572313efbSmrg#include <ctype.h> 317672313efbSmrg#include <errno.h> 317772313efbSmrg#include <fcntl.h> 317872313efbSmrg#include <sys/stat.h> 317972313efbSmrg 318072313efbSmrg#if defined(PATH_MAX) 318172313efbSmrg# define LT_PATHMAX PATH_MAX 318272313efbSmrg#elif defined(MAXPATHLEN) 318372313efbSmrg# define LT_PATHMAX MAXPATHLEN 318472313efbSmrg#else 318572313efbSmrg# define LT_PATHMAX 1024 318672313efbSmrg#endif 318772313efbSmrg 318872313efbSmrg#ifndef S_IXOTH 318972313efbSmrg# define S_IXOTH 0 319072313efbSmrg#endif 319172313efbSmrg#ifndef S_IXGRP 319272313efbSmrg# define S_IXGRP 0 319372313efbSmrg#endif 319472313efbSmrg 319572313efbSmrg#ifdef _MSC_VER 319672313efbSmrg# define S_IXUSR _S_IEXEC 319772313efbSmrg# define stat _stat 319872313efbSmrg# ifndef _INTPTR_T_DEFINED 319972313efbSmrg# define intptr_t int 320072313efbSmrg# endif 320172313efbSmrg#endif 320272313efbSmrg 320372313efbSmrg#ifndef DIR_SEPARATOR 320472313efbSmrg# define DIR_SEPARATOR '/' 320572313efbSmrg# define PATH_SEPARATOR ':' 320672313efbSmrg#endif 320772313efbSmrg 320872313efbSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 320972313efbSmrg defined (__OS2__) 321072313efbSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 321172313efbSmrg# define FOPEN_WB "wb" 321272313efbSmrg# ifndef DIR_SEPARATOR_2 321372313efbSmrg# define DIR_SEPARATOR_2 '\\' 321472313efbSmrg# endif 321572313efbSmrg# ifndef PATH_SEPARATOR_2 321672313efbSmrg# define PATH_SEPARATOR_2 ';' 321772313efbSmrg# endif 321872313efbSmrg#endif 321972313efbSmrg 322072313efbSmrg#ifndef DIR_SEPARATOR_2 322172313efbSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 322272313efbSmrg#else /* DIR_SEPARATOR_2 */ 322372313efbSmrg# define IS_DIR_SEPARATOR(ch) \ 322472313efbSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 322572313efbSmrg#endif /* DIR_SEPARATOR_2 */ 322672313efbSmrg 322772313efbSmrg#ifndef PATH_SEPARATOR_2 322872313efbSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 322972313efbSmrg#else /* PATH_SEPARATOR_2 */ 323072313efbSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 323172313efbSmrg#endif /* PATH_SEPARATOR_2 */ 323272313efbSmrg 323372313efbSmrg#ifdef __CYGWIN__ 323472313efbSmrg# define FOPEN_WB "wb" 323572313efbSmrg#endif 323672313efbSmrg 323772313efbSmrg#ifndef FOPEN_WB 323872313efbSmrg# define FOPEN_WB "w" 323972313efbSmrg#endif 324072313efbSmrg#ifndef _O_BINARY 324172313efbSmrg# define _O_BINARY 0 324272313efbSmrg#endif 324372313efbSmrg 324472313efbSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 324572313efbSmrg#define XFREE(stale) do { \ 324672313efbSmrg if (stale) { free ((void *) stale); stale = 0; } \ 324772313efbSmrg} while (0) 324872313efbSmrg 324972313efbSmrg#undef LTWRAPPER_DEBUGPRINTF 325072313efbSmrg#if defined DEBUGWRAPPER 325172313efbSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 325272313efbSmrgstatic void 325372313efbSmrgltwrapper_debugprintf (const char *fmt, ...) 325472313efbSmrg{ 325572313efbSmrg va_list args; 325672313efbSmrg va_start (args, fmt); 325772313efbSmrg (void) vfprintf (stderr, fmt, args); 325872313efbSmrg va_end (args); 325972313efbSmrg} 326072313efbSmrg#else 326172313efbSmrg# define LTWRAPPER_DEBUGPRINTF(args) 326272313efbSmrg#endif 326372313efbSmrg 326472313efbSmrgconst char *program_name = NULL; 326572313efbSmrg 326672313efbSmrgvoid *xmalloc (size_t num); 326772313efbSmrgchar *xstrdup (const char *string); 326872313efbSmrgconst char *base_name (const char *name); 326972313efbSmrgchar *find_executable (const char *wrapper); 327072313efbSmrgchar *chase_symlinks (const char *pathspec); 327172313efbSmrgint make_executable (const char *path); 327272313efbSmrgint check_executable (const char *path); 327372313efbSmrgchar *strendzap (char *str, const char *pat); 327472313efbSmrgvoid lt_fatal (const char *message, ...); 327572313efbSmrgvoid lt_setenv (const char *name, const char *value); 327672313efbSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 327772313efbSmrgvoid lt_opt_process_env_set (const char *arg); 327872313efbSmrgvoid lt_opt_process_env_prepend (const char *arg); 327972313efbSmrgvoid lt_opt_process_env_append (const char *arg); 328072313efbSmrgint lt_split_name_value (const char *arg, char** name, char** value); 328172313efbSmrgvoid lt_update_exe_path (const char *name, const char *value); 328272313efbSmrgvoid lt_update_lib_path (const char *name, const char *value); 328372313efbSmrg 328472313efbSmrgstatic const char *script_text_part1 = 328572313efbSmrgEOF 328672313efbSmrg 328772313efbSmrg func_emit_wrapper_part1 yes | 328872313efbSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 328972313efbSmrg -e 's/^/ "/' -e 's/$/\\n"/' 329072313efbSmrg echo ";" 329172313efbSmrg cat <<EOF 329272313efbSmrg 329372313efbSmrgstatic const char *script_text_part2 = 329472313efbSmrgEOF 329572313efbSmrg func_emit_wrapper_part2 yes | 329672313efbSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 329772313efbSmrg -e 's/^/ "/' -e 's/$/\\n"/' 329872313efbSmrg echo ";" 329972313efbSmrg 330072313efbSmrg cat <<EOF 330172313efbSmrgconst char * MAGIC_EXE = "$magic_exe"; 330272313efbSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 330372313efbSmrgEOF 330472313efbSmrg 330572313efbSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 330672313efbSmrg func_to_host_pathlist "$temp_rpath" 330772313efbSmrg cat <<EOF 330872313efbSmrgconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 3309bdcaa8d0SmrgEOF 3310bdcaa8d0Smrg else 331172313efbSmrg cat <<"EOF" 331272313efbSmrgconst char * LIB_PATH_VALUE = ""; 331372313efbSmrgEOF 3314bdcaa8d0Smrg fi 331572313efbSmrg 331672313efbSmrg if test -n "$dllsearchpath"; then 331772313efbSmrg func_to_host_pathlist "$dllsearchpath:" 331872313efbSmrg cat <<EOF 331972313efbSmrgconst char * EXE_PATH_VARNAME = "PATH"; 332072313efbSmrgconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 332172313efbSmrgEOF 3322bdcaa8d0Smrg else 332372313efbSmrg cat <<"EOF" 332472313efbSmrgconst char * EXE_PATH_VARNAME = ""; 332572313efbSmrgconst char * EXE_PATH_VALUE = ""; 332672313efbSmrgEOF 3327bdcaa8d0Smrg fi 332872313efbSmrg 332972313efbSmrg if test "$fast_install" = yes; then 333072313efbSmrg cat <<EOF 333172313efbSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 333272313efbSmrgEOF 3333bdcaa8d0Smrg else 333472313efbSmrg cat <<EOF 333572313efbSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 333672313efbSmrgEOF 3337bdcaa8d0Smrg fi 3338bdcaa8d0Smrg 3339bdcaa8d0Smrg 334072313efbSmrg cat <<"EOF" 3341bdcaa8d0Smrg 334272313efbSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 334372313efbSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 3344bdcaa8d0Smrg 334572313efbSmrgstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 334672313efbSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 3347bdcaa8d0Smrg 334872313efbSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 3349bdcaa8d0Smrg 335072313efbSmrgstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 335172313efbSmrgstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 335272313efbSmrg /* argument is putenv-style "foo=bar", value of foo is set to bar */ 3353bdcaa8d0Smrg 335472313efbSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 335572313efbSmrgstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 335672313efbSmrg /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 3357bdcaa8d0Smrg 335872313efbSmrgstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 335972313efbSmrgstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 336072313efbSmrg /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 3361bdcaa8d0Smrg 336272313efbSmrgint 336372313efbSmrgmain (int argc, char *argv[]) 336472313efbSmrg{ 336572313efbSmrg char **newargz; 336672313efbSmrg int newargc; 336772313efbSmrg char *tmp_pathspec; 336872313efbSmrg char *actual_cwrapper_path; 336972313efbSmrg char *actual_cwrapper_name; 337072313efbSmrg char *target_name; 337172313efbSmrg char *lt_argv_zero; 337272313efbSmrg intptr_t rval = 127; 3373bdcaa8d0Smrg 337472313efbSmrg int i; 3375bdcaa8d0Smrg 337672313efbSmrg program_name = (char *) xstrdup (base_name (argv[0])); 337772313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 337872313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 3379bdcaa8d0Smrg 338072313efbSmrg /* very simple arg parsing; don't want to rely on getopt */ 338172313efbSmrg for (i = 1; i < argc; i++) 338272313efbSmrg { 338372313efbSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 338472313efbSmrg { 338572313efbSmrgEOF 338672313efbSmrg case "$host" in 338772313efbSmrg *mingw* | *cygwin* ) 338872313efbSmrg # make stdout use "unix" line endings 338972313efbSmrg echo " setmode(1,_O_BINARY);" 339072313efbSmrg ;; 339172313efbSmrg esac 3392bdcaa8d0Smrg 339372313efbSmrg cat <<"EOF" 339472313efbSmrg printf ("%s", script_text_part1); 339572313efbSmrg printf ("%s", script_text_part2); 339672313efbSmrg return 0; 339772313efbSmrg } 339872313efbSmrg } 3399bdcaa8d0Smrg 340072313efbSmrg newargz = XMALLOC (char *, argc + 1); 340172313efbSmrg tmp_pathspec = find_executable (argv[0]); 340272313efbSmrg if (tmp_pathspec == NULL) 340372313efbSmrg lt_fatal ("Couldn't find %s", argv[0]); 340472313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 340572313efbSmrg tmp_pathspec)); 340672313efbSmrg 340772313efbSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 340872313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 340972313efbSmrg actual_cwrapper_path)); 341072313efbSmrg XFREE (tmp_pathspec); 341172313efbSmrg 341272313efbSmrg actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 341372313efbSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 341472313efbSmrg 341572313efbSmrg /* wrapper name transforms */ 341672313efbSmrg strendzap (actual_cwrapper_name, ".exe"); 341772313efbSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 341872313efbSmrg XFREE (actual_cwrapper_name); 341972313efbSmrg actual_cwrapper_name = tmp_pathspec; 342072313efbSmrg tmp_pathspec = 0; 342172313efbSmrg 342272313efbSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 342372313efbSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 342472313efbSmrg strendzap (target_name, ".exe"); 342572313efbSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 342672313efbSmrg XFREE (target_name); 342772313efbSmrg target_name = tmp_pathspec; 342872313efbSmrg tmp_pathspec = 0; 342972313efbSmrg 343072313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 343172313efbSmrg target_name)); 343272313efbSmrgEOF 3433bdcaa8d0Smrg 343472313efbSmrg cat <<EOF 343572313efbSmrg newargz[0] = 343672313efbSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 343772313efbSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 343872313efbSmrg strcpy (newargz[0], actual_cwrapper_path); 343972313efbSmrg strcat (newargz[0], "$objdir"); 344072313efbSmrg strcat (newargz[0], "/"); 344172313efbSmrgEOF 3442bdcaa8d0Smrg 344372313efbSmrg cat <<"EOF" 344472313efbSmrg /* stop here, and copy so we don't have to do this twice */ 344572313efbSmrg tmp_pathspec = xstrdup (newargz[0]); 3446bdcaa8d0Smrg 344772313efbSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 344872313efbSmrg strcat (newargz[0], actual_cwrapper_name); 3449bdcaa8d0Smrg 345072313efbSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 345172313efbSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 345272313efbSmrg XFREE (tmp_pathspec); 345372313efbSmrg tmp_pathspec = NULL; 345472313efbSmrgEOF 3455bdcaa8d0Smrg 345672313efbSmrg case $host_os in 345772313efbSmrg mingw*) 345872313efbSmrg cat <<"EOF" 345972313efbSmrg { 346072313efbSmrg char* p; 346172313efbSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 346272313efbSmrg { 346372313efbSmrg *p = '/'; 346472313efbSmrg } 346572313efbSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 346672313efbSmrg { 346772313efbSmrg *p = '/'; 346872313efbSmrg } 346972313efbSmrg } 347072313efbSmrgEOF 347172313efbSmrg ;; 347272313efbSmrg esac 3473bdcaa8d0Smrg 347472313efbSmrg cat <<"EOF" 347572313efbSmrg XFREE (target_name); 347672313efbSmrg XFREE (actual_cwrapper_path); 347772313efbSmrg XFREE (actual_cwrapper_name); 3478bdcaa8d0Smrg 347972313efbSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 348072313efbSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 348172313efbSmrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 348272313efbSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 3483bdcaa8d0Smrg 348472313efbSmrg newargc=0; 348572313efbSmrg for (i = 1; i < argc; i++) 348672313efbSmrg { 348772313efbSmrg if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 348872313efbSmrg { 348972313efbSmrg if (argv[i][env_set_opt_len] == '=') 349072313efbSmrg { 349172313efbSmrg const char *p = argv[i] + env_set_opt_len + 1; 349272313efbSmrg lt_opt_process_env_set (p); 349372313efbSmrg } 349472313efbSmrg else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 349572313efbSmrg { 349672313efbSmrg lt_opt_process_env_set (argv[++i]); /* don't copy */ 349772313efbSmrg } 349872313efbSmrg else 349972313efbSmrg lt_fatal ("%s missing required argument", env_set_opt); 350072313efbSmrg continue; 350172313efbSmrg } 350272313efbSmrg if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 350372313efbSmrg { 350472313efbSmrg if (argv[i][env_prepend_opt_len] == '=') 350572313efbSmrg { 350672313efbSmrg const char *p = argv[i] + env_prepend_opt_len + 1; 350772313efbSmrg lt_opt_process_env_prepend (p); 350872313efbSmrg } 350972313efbSmrg else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 351072313efbSmrg { 351172313efbSmrg lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 351272313efbSmrg } 351372313efbSmrg else 351472313efbSmrg lt_fatal ("%s missing required argument", env_prepend_opt); 351572313efbSmrg continue; 351672313efbSmrg } 351772313efbSmrg if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 351872313efbSmrg { 351972313efbSmrg if (argv[i][env_append_opt_len] == '=') 352072313efbSmrg { 352172313efbSmrg const char *p = argv[i] + env_append_opt_len + 1; 352272313efbSmrg lt_opt_process_env_append (p); 352372313efbSmrg } 352472313efbSmrg else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 352572313efbSmrg { 352672313efbSmrg lt_opt_process_env_append (argv[++i]); /* don't copy */ 352772313efbSmrg } 352872313efbSmrg else 352972313efbSmrg lt_fatal ("%s missing required argument", env_append_opt); 353072313efbSmrg continue; 353172313efbSmrg } 353272313efbSmrg if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 353372313efbSmrg { 353472313efbSmrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 353572313efbSmrg namespace, but it is not one of the ones we know about and 353672313efbSmrg have already dealt with, above (inluding dump-script), then 353772313efbSmrg report an error. Otherwise, targets might begin to believe 353872313efbSmrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 353972313efbSmrg namespace. The first time any user complains about this, we'll 354072313efbSmrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 354172313efbSmrg or a configure.ac-settable value. 354272313efbSmrg */ 354372313efbSmrg lt_fatal ("Unrecognized option in %s namespace: '%s'", 354472313efbSmrg ltwrapper_option_prefix, argv[i]); 354572313efbSmrg } 354672313efbSmrg /* otherwise ... */ 354772313efbSmrg newargz[++newargc] = xstrdup (argv[i]); 354872313efbSmrg } 354972313efbSmrg newargz[++newargc] = NULL; 3550bdcaa8d0Smrg 355172313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 355272313efbSmrg for (i = 0; i < newargc; i++) 355372313efbSmrg { 355472313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 355572313efbSmrg } 3556bdcaa8d0Smrg 355772313efbSmrgEOF 3558bdcaa8d0Smrg 355972313efbSmrg case $host_os in 356072313efbSmrg mingw*) 356172313efbSmrg cat <<"EOF" 356272313efbSmrg /* execv doesn't actually work on mingw as expected on unix */ 356372313efbSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 356472313efbSmrg if (rval == -1) 356572313efbSmrg { 356672313efbSmrg /* failed to start process */ 356772313efbSmrg LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 356872313efbSmrg return 127; 356972313efbSmrg } 357072313efbSmrg return rval; 357172313efbSmrgEOF 357272313efbSmrg ;; 357372313efbSmrg *) 357472313efbSmrg cat <<"EOF" 357572313efbSmrg execv (lt_argv_zero, newargz); 357672313efbSmrg return rval; /* =127, but avoids unused variable warning */ 357772313efbSmrgEOF 357872313efbSmrg ;; 357972313efbSmrg esac 3580bdcaa8d0Smrg 358172313efbSmrg cat <<"EOF" 358272313efbSmrg} 3583bdcaa8d0Smrg 358472313efbSmrgvoid * 358572313efbSmrgxmalloc (size_t num) 358672313efbSmrg{ 358772313efbSmrg void *p = (void *) malloc (num); 358872313efbSmrg if (!p) 358972313efbSmrg lt_fatal ("Memory exhausted"); 3590bdcaa8d0Smrg 359172313efbSmrg return p; 359272313efbSmrg} 3593bdcaa8d0Smrg 359472313efbSmrgchar * 359572313efbSmrgxstrdup (const char *string) 359672313efbSmrg{ 359772313efbSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 359872313efbSmrg string) : NULL; 359972313efbSmrg} 3600bdcaa8d0Smrg 360172313efbSmrgconst char * 360272313efbSmrgbase_name (const char *name) 360372313efbSmrg{ 360472313efbSmrg const char *base; 3605bdcaa8d0Smrg 360672313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 360772313efbSmrg /* Skip over the disk name in MSDOS pathnames. */ 360872313efbSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 360972313efbSmrg name += 2; 361072313efbSmrg#endif 3611bdcaa8d0Smrg 361272313efbSmrg for (base = name; *name; name++) 361372313efbSmrg if (IS_DIR_SEPARATOR (*name)) 361472313efbSmrg base = name + 1; 361572313efbSmrg return base; 361672313efbSmrg} 3617bdcaa8d0Smrg 361872313efbSmrgint 361972313efbSmrgcheck_executable (const char *path) 362072313efbSmrg{ 362172313efbSmrg struct stat st; 3622bdcaa8d0Smrg 362372313efbSmrg LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 362472313efbSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 362572313efbSmrg if ((!path) || (!*path)) 362672313efbSmrg return 0; 3627bdcaa8d0Smrg 362872313efbSmrg if ((stat (path, &st) >= 0) 362972313efbSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 363072313efbSmrg return 1; 363172313efbSmrg else 363272313efbSmrg return 0; 363372313efbSmrg} 3634bdcaa8d0Smrg 363572313efbSmrgint 363672313efbSmrgmake_executable (const char *path) 363772313efbSmrg{ 363872313efbSmrg int rval = 0; 363972313efbSmrg struct stat st; 3640bdcaa8d0Smrg 364172313efbSmrg LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 364272313efbSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 364372313efbSmrg if ((!path) || (!*path)) 364472313efbSmrg return 0; 3645bdcaa8d0Smrg 364672313efbSmrg if (stat (path, &st) >= 0) 364772313efbSmrg { 364872313efbSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 364972313efbSmrg } 365072313efbSmrg return rval; 365172313efbSmrg} 3652bdcaa8d0Smrg 365372313efbSmrg/* Searches for the full path of the wrapper. Returns 365472313efbSmrg newly allocated full path name if found, NULL otherwise 365572313efbSmrg Does not chase symlinks, even on platforms that support them. 365672313efbSmrg*/ 365772313efbSmrgchar * 365872313efbSmrgfind_executable (const char *wrapper) 365972313efbSmrg{ 366072313efbSmrg int has_slash = 0; 366172313efbSmrg const char *p; 366272313efbSmrg const char *p_next; 366372313efbSmrg /* static buffer for getcwd */ 366472313efbSmrg char tmp[LT_PATHMAX + 1]; 366572313efbSmrg int tmp_len; 366672313efbSmrg char *concat_name; 3667bdcaa8d0Smrg 366872313efbSmrg LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 366972313efbSmrg wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 3670bdcaa8d0Smrg 367172313efbSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 367272313efbSmrg return NULL; 3673bdcaa8d0Smrg 367472313efbSmrg /* Absolute path? */ 367572313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 367672313efbSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 367772313efbSmrg { 367872313efbSmrg concat_name = xstrdup (wrapper); 367972313efbSmrg if (check_executable (concat_name)) 368072313efbSmrg return concat_name; 368172313efbSmrg XFREE (concat_name); 368272313efbSmrg } 368372313efbSmrg else 368472313efbSmrg { 368572313efbSmrg#endif 368672313efbSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 368772313efbSmrg { 368872313efbSmrg concat_name = xstrdup (wrapper); 368972313efbSmrg if (check_executable (concat_name)) 369072313efbSmrg return concat_name; 369172313efbSmrg XFREE (concat_name); 369272313efbSmrg } 369372313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 369472313efbSmrg } 369572313efbSmrg#endif 3696bdcaa8d0Smrg 369772313efbSmrg for (p = wrapper; *p; p++) 369872313efbSmrg if (*p == '/') 369972313efbSmrg { 370072313efbSmrg has_slash = 1; 370172313efbSmrg break; 370272313efbSmrg } 370372313efbSmrg if (!has_slash) 370472313efbSmrg { 370572313efbSmrg /* no slashes; search PATH */ 370672313efbSmrg const char *path = getenv ("PATH"); 370772313efbSmrg if (path != NULL) 370872313efbSmrg { 370972313efbSmrg for (p = path; *p; p = p_next) 371072313efbSmrg { 371172313efbSmrg const char *q; 371272313efbSmrg size_t p_len; 371372313efbSmrg for (q = p; *q; q++) 371472313efbSmrg if (IS_PATH_SEPARATOR (*q)) 371572313efbSmrg break; 371672313efbSmrg p_len = q - p; 371772313efbSmrg p_next = (*q == '\0' ? q : q + 1); 371872313efbSmrg if (p_len == 0) 371972313efbSmrg { 372072313efbSmrg /* empty path: current directory */ 372172313efbSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 372272313efbSmrg lt_fatal ("getcwd failed"); 372372313efbSmrg tmp_len = strlen (tmp); 372472313efbSmrg concat_name = 372572313efbSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 372672313efbSmrg memcpy (concat_name, tmp, tmp_len); 372772313efbSmrg concat_name[tmp_len] = '/'; 372872313efbSmrg strcpy (concat_name + tmp_len + 1, wrapper); 372972313efbSmrg } 373072313efbSmrg else 373172313efbSmrg { 373272313efbSmrg concat_name = 373372313efbSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 373472313efbSmrg memcpy (concat_name, p, p_len); 373572313efbSmrg concat_name[p_len] = '/'; 373672313efbSmrg strcpy (concat_name + p_len + 1, wrapper); 373772313efbSmrg } 373872313efbSmrg if (check_executable (concat_name)) 373972313efbSmrg return concat_name; 374072313efbSmrg XFREE (concat_name); 374172313efbSmrg } 374272313efbSmrg } 374372313efbSmrg /* not found in PATH; assume curdir */ 374472313efbSmrg } 374572313efbSmrg /* Relative path | not found in path: prepend cwd */ 374672313efbSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 374772313efbSmrg lt_fatal ("getcwd failed"); 374872313efbSmrg tmp_len = strlen (tmp); 374972313efbSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 375072313efbSmrg memcpy (concat_name, tmp, tmp_len); 375172313efbSmrg concat_name[tmp_len] = '/'; 375272313efbSmrg strcpy (concat_name + tmp_len + 1, wrapper); 3753bdcaa8d0Smrg 375472313efbSmrg if (check_executable (concat_name)) 375572313efbSmrg return concat_name; 375672313efbSmrg XFREE (concat_name); 375772313efbSmrg return NULL; 375872313efbSmrg} 3759bdcaa8d0Smrg 376072313efbSmrgchar * 376172313efbSmrgchase_symlinks (const char *pathspec) 376272313efbSmrg{ 376372313efbSmrg#ifndef S_ISLNK 376472313efbSmrg return xstrdup (pathspec); 376572313efbSmrg#else 376672313efbSmrg char buf[LT_PATHMAX]; 376772313efbSmrg struct stat s; 376872313efbSmrg char *tmp_pathspec = xstrdup (pathspec); 376972313efbSmrg char *p; 377072313efbSmrg int has_symlinks = 0; 377172313efbSmrg while (strlen (tmp_pathspec) && !has_symlinks) 377272313efbSmrg { 377372313efbSmrg LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 377472313efbSmrg tmp_pathspec)); 377572313efbSmrg if (lstat (tmp_pathspec, &s) == 0) 377672313efbSmrg { 377772313efbSmrg if (S_ISLNK (s.st_mode) != 0) 377872313efbSmrg { 377972313efbSmrg has_symlinks = 1; 378072313efbSmrg break; 378172313efbSmrg } 3782bdcaa8d0Smrg 378372313efbSmrg /* search backwards for last DIR_SEPARATOR */ 378472313efbSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 378572313efbSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 378672313efbSmrg p--; 378772313efbSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 378872313efbSmrg { 378972313efbSmrg /* no more DIR_SEPARATORS left */ 379072313efbSmrg break; 379172313efbSmrg } 379272313efbSmrg *p = '\0'; 379372313efbSmrg } 379472313efbSmrg else 379572313efbSmrg { 379672313efbSmrg char *errstr = strerror (errno); 379772313efbSmrg lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 379872313efbSmrg } 379972313efbSmrg } 380072313efbSmrg XFREE (tmp_pathspec); 3801bdcaa8d0Smrg 380272313efbSmrg if (!has_symlinks) 380372313efbSmrg { 380472313efbSmrg return xstrdup (pathspec); 380572313efbSmrg } 3806bdcaa8d0Smrg 380772313efbSmrg tmp_pathspec = realpath (pathspec, buf); 380872313efbSmrg if (tmp_pathspec == 0) 380972313efbSmrg { 381072313efbSmrg lt_fatal ("Could not follow symlinks for %s", pathspec); 381172313efbSmrg } 381272313efbSmrg return xstrdup (tmp_pathspec); 381372313efbSmrg#endif 381472313efbSmrg} 3815bdcaa8d0Smrg 381672313efbSmrgchar * 381772313efbSmrgstrendzap (char *str, const char *pat) 381872313efbSmrg{ 381972313efbSmrg size_t len, patlen; 3820bdcaa8d0Smrg 382172313efbSmrg assert (str != NULL); 382272313efbSmrg assert (pat != NULL); 3823bdcaa8d0Smrg 382472313efbSmrg len = strlen (str); 382572313efbSmrg patlen = strlen (pat); 3826bdcaa8d0Smrg 382772313efbSmrg if (patlen <= len) 382872313efbSmrg { 382972313efbSmrg str += len - patlen; 383072313efbSmrg if (strcmp (str, pat) == 0) 383172313efbSmrg *str = '\0'; 383272313efbSmrg } 383372313efbSmrg return str; 383472313efbSmrg} 3835bdcaa8d0Smrg 383672313efbSmrgstatic void 383772313efbSmrglt_error_core (int exit_status, const char *mode, 383872313efbSmrg const char *message, va_list ap) 383972313efbSmrg{ 384072313efbSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 384172313efbSmrg vfprintf (stderr, message, ap); 384272313efbSmrg fprintf (stderr, ".\n"); 3843bdcaa8d0Smrg 384472313efbSmrg if (exit_status >= 0) 384572313efbSmrg exit (exit_status); 384672313efbSmrg} 3847bdcaa8d0Smrg 384872313efbSmrgvoid 384972313efbSmrglt_fatal (const char *message, ...) 385072313efbSmrg{ 385172313efbSmrg va_list ap; 385272313efbSmrg va_start (ap, message); 385372313efbSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 385472313efbSmrg va_end (ap); 385572313efbSmrg} 3856bdcaa8d0Smrg 385772313efbSmrgvoid 385872313efbSmrglt_setenv (const char *name, const char *value) 385972313efbSmrg{ 386072313efbSmrg LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 386172313efbSmrg (name ? name : "<NULL>"), 386272313efbSmrg (value ? value : "<NULL>"))); 386372313efbSmrg { 386472313efbSmrg#ifdef HAVE_SETENV 386572313efbSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 386672313efbSmrg char *str = xstrdup (value); 386772313efbSmrg setenv (name, str, 1); 386872313efbSmrg#else 386972313efbSmrg int len = strlen (name) + 1 + strlen (value) + 1; 387072313efbSmrg char *str = XMALLOC (char, len); 387172313efbSmrg sprintf (str, "%s=%s", name, value); 387272313efbSmrg if (putenv (str) != EXIT_SUCCESS) 387372313efbSmrg { 387472313efbSmrg XFREE (str); 387572313efbSmrg } 387672313efbSmrg#endif 387772313efbSmrg } 387872313efbSmrg} 3879bdcaa8d0Smrg 388072313efbSmrgchar * 388172313efbSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 388272313efbSmrg{ 388372313efbSmrg char *new_value; 388472313efbSmrg if (orig_value && *orig_value) 388572313efbSmrg { 388672313efbSmrg int orig_value_len = strlen (orig_value); 388772313efbSmrg int add_len = strlen (add); 388872313efbSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 388972313efbSmrg if (to_end) 389072313efbSmrg { 389172313efbSmrg strcpy (new_value, orig_value); 389272313efbSmrg strcpy (new_value + orig_value_len, add); 389372313efbSmrg } 389472313efbSmrg else 389572313efbSmrg { 389672313efbSmrg strcpy (new_value, add); 389772313efbSmrg strcpy (new_value + add_len, orig_value); 389872313efbSmrg } 389972313efbSmrg } 390072313efbSmrg else 390172313efbSmrg { 390272313efbSmrg new_value = xstrdup (add); 390372313efbSmrg } 390472313efbSmrg return new_value; 390572313efbSmrg} 3906bdcaa8d0Smrg 390772313efbSmrgint 390872313efbSmrglt_split_name_value (const char *arg, char** name, char** value) 390972313efbSmrg{ 391072313efbSmrg const char *p; 391172313efbSmrg int len; 391272313efbSmrg if (!arg || !*arg) 391372313efbSmrg return 1; 3914bdcaa8d0Smrg 391572313efbSmrg p = strchr (arg, (int)'='); 3916bdcaa8d0Smrg 391772313efbSmrg if (!p) 391872313efbSmrg return 1; 3919bdcaa8d0Smrg 392072313efbSmrg *value = xstrdup (++p); 3921bdcaa8d0Smrg 392272313efbSmrg len = strlen (arg) - strlen (*value); 392372313efbSmrg *name = XMALLOC (char, len); 392472313efbSmrg strncpy (*name, arg, len-1); 392572313efbSmrg (*name)[len - 1] = '\0'; 3926bdcaa8d0Smrg 392772313efbSmrg return 0; 392872313efbSmrg} 3929bdcaa8d0Smrg 393072313efbSmrgvoid 393172313efbSmrglt_opt_process_env_set (const char *arg) 393272313efbSmrg{ 393372313efbSmrg char *name = NULL; 393472313efbSmrg char *value = NULL; 3935bdcaa8d0Smrg 393672313efbSmrg if (lt_split_name_value (arg, &name, &value) != 0) 393772313efbSmrg { 393872313efbSmrg XFREE (name); 393972313efbSmrg XFREE (value); 394072313efbSmrg lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 394172313efbSmrg } 3942bdcaa8d0Smrg 394372313efbSmrg lt_setenv (name, value); 394472313efbSmrg XFREE (name); 394572313efbSmrg XFREE (value); 394672313efbSmrg} 3947bdcaa8d0Smrg 394872313efbSmrgvoid 394972313efbSmrglt_opt_process_env_prepend (const char *arg) 395072313efbSmrg{ 395172313efbSmrg char *name = NULL; 395272313efbSmrg char *value = NULL; 395372313efbSmrg char *new_value = NULL; 3954bdcaa8d0Smrg 395572313efbSmrg if (lt_split_name_value (arg, &name, &value) != 0) 395672313efbSmrg { 395772313efbSmrg XFREE (name); 395872313efbSmrg XFREE (value); 395972313efbSmrg lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 396072313efbSmrg } 3961bdcaa8d0Smrg 396272313efbSmrg new_value = lt_extend_str (getenv (name), value, 0); 396372313efbSmrg lt_setenv (name, new_value); 396472313efbSmrg XFREE (new_value); 396572313efbSmrg XFREE (name); 396672313efbSmrg XFREE (value); 396772313efbSmrg} 3968bdcaa8d0Smrg 396972313efbSmrgvoid 397072313efbSmrglt_opt_process_env_append (const char *arg) 397172313efbSmrg{ 397272313efbSmrg char *name = NULL; 397372313efbSmrg char *value = NULL; 397472313efbSmrg char *new_value = NULL; 3975bdcaa8d0Smrg 397672313efbSmrg if (lt_split_name_value (arg, &name, &value) != 0) 397772313efbSmrg { 397872313efbSmrg XFREE (name); 397972313efbSmrg XFREE (value); 398072313efbSmrg lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 398172313efbSmrg } 3982bdcaa8d0Smrg 398372313efbSmrg new_value = lt_extend_str (getenv (name), value, 1); 398472313efbSmrg lt_setenv (name, new_value); 398572313efbSmrg XFREE (new_value); 398672313efbSmrg XFREE (name); 398772313efbSmrg XFREE (value); 398872313efbSmrg} 3989bdcaa8d0Smrg 399072313efbSmrgvoid 399172313efbSmrglt_update_exe_path (const char *name, const char *value) 399272313efbSmrg{ 399372313efbSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 399472313efbSmrg (name ? name : "<NULL>"), 399572313efbSmrg (value ? value : "<NULL>"))); 3996bdcaa8d0Smrg 399772313efbSmrg if (name && *name && value && *value) 399872313efbSmrg { 399972313efbSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 400072313efbSmrg /* some systems can't cope with a ':'-terminated path #' */ 400172313efbSmrg int len = strlen (new_value); 400272313efbSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 400372313efbSmrg { 400472313efbSmrg new_value[len-1] = '\0'; 400572313efbSmrg } 400672313efbSmrg lt_setenv (name, new_value); 400772313efbSmrg XFREE (new_value); 400872313efbSmrg } 400972313efbSmrg} 4010bdcaa8d0Smrg 401172313efbSmrgvoid 401272313efbSmrglt_update_lib_path (const char *name, const char *value) 401372313efbSmrg{ 401472313efbSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 401572313efbSmrg (name ? name : "<NULL>"), 401672313efbSmrg (value ? value : "<NULL>"))); 4017bdcaa8d0Smrg 401872313efbSmrg if (name && *name && value && *value) 401972313efbSmrg { 402072313efbSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 402172313efbSmrg lt_setenv (name, new_value); 402272313efbSmrg XFREE (new_value); 402372313efbSmrg } 402472313efbSmrg} 4025bdcaa8d0Smrg 4026bdcaa8d0Smrg 402772313efbSmrgEOF 402872313efbSmrg} 402972313efbSmrg# end: func_emit_cwrapperexe_src 4030bdcaa8d0Smrg 403172313efbSmrg# func_mode_link arg... 403272313efbSmrgfunc_mode_link () 403372313efbSmrg{ 403472313efbSmrg $opt_debug 403572313efbSmrg case $host in 403672313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 403772313efbSmrg # It is impossible to link a dll without this setting, and 403872313efbSmrg # we shouldn't force the makefile maintainer to figure out 403972313efbSmrg # which system we are compiling for in order to pass an extra 404072313efbSmrg # flag for every libtool invocation. 404172313efbSmrg # allow_undefined=no 4042bdcaa8d0Smrg 404372313efbSmrg # FIXME: Unfortunately, there are problems with the above when trying 404472313efbSmrg # to make a dll which has undefined symbols, in which case not 404572313efbSmrg # even a static library is built. For now, we need to specify 404672313efbSmrg # -no-undefined on the libtool link line when we can be certain 404772313efbSmrg # that all symbols are satisfied, otherwise we get a static library. 404872313efbSmrg allow_undefined=yes 404972313efbSmrg ;; 405072313efbSmrg *) 405172313efbSmrg allow_undefined=yes 405272313efbSmrg ;; 405372313efbSmrg esac 405472313efbSmrg libtool_args=$nonopt 405572313efbSmrg base_compile="$nonopt $@" 405672313efbSmrg compile_command=$nonopt 405772313efbSmrg finalize_command=$nonopt 4058bdcaa8d0Smrg 405972313efbSmrg compile_rpath= 406072313efbSmrg finalize_rpath= 406172313efbSmrg compile_shlibpath= 406272313efbSmrg finalize_shlibpath= 406372313efbSmrg convenience= 406472313efbSmrg old_convenience= 406572313efbSmrg deplibs= 406672313efbSmrg old_deplibs= 406772313efbSmrg compiler_flags= 406872313efbSmrg linker_flags= 406972313efbSmrg dllsearchpath= 407072313efbSmrg lib_search_path=`pwd` 407172313efbSmrg inst_prefix_dir= 407272313efbSmrg new_inherited_linker_flags= 4073bdcaa8d0Smrg 407472313efbSmrg avoid_version=no 407572313efbSmrg dlfiles= 407672313efbSmrg dlprefiles= 407772313efbSmrg dlself=no 407872313efbSmrg export_dynamic=no 407972313efbSmrg export_symbols= 408072313efbSmrg export_symbols_regex= 408172313efbSmrg generated= 408272313efbSmrg libobjs= 408372313efbSmrg ltlibs= 408472313efbSmrg module=no 408572313efbSmrg no_install=no 408672313efbSmrg objs= 408772313efbSmrg non_pic_objects= 408872313efbSmrg precious_files_regex= 408972313efbSmrg prefer_static_libs=no 409072313efbSmrg preload=no 409172313efbSmrg prev= 409272313efbSmrg prevarg= 409372313efbSmrg release= 409472313efbSmrg rpath= 409572313efbSmrg xrpath= 409672313efbSmrg perm_rpath= 409772313efbSmrg temp_rpath= 409872313efbSmrg thread_safe=no 409972313efbSmrg vinfo= 410072313efbSmrg vinfo_number=no 410172313efbSmrg weak_libs= 410272313efbSmrg single_module="${wl}-single_module" 410372313efbSmrg func_infer_tag $base_compile 4104bdcaa8d0Smrg 410572313efbSmrg # We need to know -static, to get the right output filenames. 410672313efbSmrg for arg 410772313efbSmrg do 410872313efbSmrg case $arg in 410972313efbSmrg -shared) 411072313efbSmrg test "$build_libtool_libs" != yes && \ 411172313efbSmrg func_fatal_configuration "can not build a shared library" 411272313efbSmrg build_old_libs=no 411372313efbSmrg break 411472313efbSmrg ;; 411572313efbSmrg -all-static | -static | -static-libtool-libs) 411672313efbSmrg case $arg in 411772313efbSmrg -all-static) 411872313efbSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 411972313efbSmrg func_warning "complete static linking is impossible in this configuration" 4120bdcaa8d0Smrg fi 412172313efbSmrg if test -n "$link_static_flag"; then 412272313efbSmrg dlopen_self=$dlopen_self_static 4123bdcaa8d0Smrg fi 412472313efbSmrg prefer_static_libs=yes 4125bdcaa8d0Smrg ;; 412672313efbSmrg -static) 412772313efbSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 412872313efbSmrg dlopen_self=$dlopen_self_static 412972313efbSmrg fi 413072313efbSmrg prefer_static_libs=built 413172313efbSmrg ;; 413272313efbSmrg -static-libtool-libs) 413372313efbSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 413472313efbSmrg dlopen_self=$dlopen_self_static 413572313efbSmrg fi 413672313efbSmrg prefer_static_libs=yes 4137bdcaa8d0Smrg ;; 4138bdcaa8d0Smrg esac 413972313efbSmrg build_libtool_libs=no 414072313efbSmrg build_old_libs=yes 414172313efbSmrg break 414272313efbSmrg ;; 414372313efbSmrg esac 414472313efbSmrg done 4145bdcaa8d0Smrg 414672313efbSmrg # See if our shared archives depend on static archives. 414772313efbSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 4148bdcaa8d0Smrg 414972313efbSmrg # Go through the arguments, transforming them on the way. 415072313efbSmrg while test "$#" -gt 0; do 415172313efbSmrg arg="$1" 415272313efbSmrg shift 415372313efbSmrg func_quote_for_eval "$arg" 415472313efbSmrg qarg=$func_quote_for_eval_unquoted_result 415572313efbSmrg func_append libtool_args " $func_quote_for_eval_result" 4156bdcaa8d0Smrg 415772313efbSmrg # If the previous option needs an argument, assign it. 415872313efbSmrg if test -n "$prev"; then 415972313efbSmrg case $prev in 416072313efbSmrg output) 416172313efbSmrg func_append compile_command " @OUTPUT@" 416272313efbSmrg func_append finalize_command " @OUTPUT@" 416372313efbSmrg ;; 416472313efbSmrg esac 4165bdcaa8d0Smrg 416672313efbSmrg case $prev in 416772313efbSmrg dlfiles|dlprefiles) 416872313efbSmrg if test "$preload" = no; then 416972313efbSmrg # Add the symbol object into the linking commands. 417072313efbSmrg func_append compile_command " @SYMFILE@" 417172313efbSmrg func_append finalize_command " @SYMFILE@" 417272313efbSmrg preload=yes 417372313efbSmrg fi 417472313efbSmrg case $arg in 417572313efbSmrg *.la | *.lo) ;; # We handle these cases below. 417672313efbSmrg force) 417772313efbSmrg if test "$dlself" = no; then 417872313efbSmrg dlself=needless 417972313efbSmrg export_dynamic=yes 418072313efbSmrg fi 418172313efbSmrg prev= 418272313efbSmrg continue 418372313efbSmrg ;; 418472313efbSmrg self) 418572313efbSmrg if test "$prev" = dlprefiles; then 418672313efbSmrg dlself=yes 418772313efbSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 418872313efbSmrg dlself=yes 418972313efbSmrg else 419072313efbSmrg dlself=needless 419172313efbSmrg export_dynamic=yes 419272313efbSmrg fi 419372313efbSmrg prev= 419472313efbSmrg continue 4195bdcaa8d0Smrg ;; 4196bdcaa8d0Smrg *) 419772313efbSmrg if test "$prev" = dlfiles; then 419872313efbSmrg dlfiles="$dlfiles $arg" 419972313efbSmrg else 420072313efbSmrg dlprefiles="$dlprefiles $arg" 420172313efbSmrg fi 420272313efbSmrg prev= 420372313efbSmrg continue 4204bdcaa8d0Smrg ;; 4205bdcaa8d0Smrg esac 420672313efbSmrg ;; 420772313efbSmrg expsyms) 420872313efbSmrg export_symbols="$arg" 420972313efbSmrg test -f "$arg" \ 421072313efbSmrg || func_fatal_error "symbol file \`$arg' does not exist" 421172313efbSmrg prev= 421272313efbSmrg continue 421372313efbSmrg ;; 421472313efbSmrg expsyms_regex) 421572313efbSmrg export_symbols_regex="$arg" 421672313efbSmrg prev= 421772313efbSmrg continue 421872313efbSmrg ;; 421972313efbSmrg framework) 422072313efbSmrg case $host in 422172313efbSmrg *-*-darwin*) 422272313efbSmrg case "$deplibs " in 422372313efbSmrg *" $qarg.ltframework "*) ;; 422472313efbSmrg *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 422572313efbSmrg ;; 422672313efbSmrg esac 422772313efbSmrg ;; 422872313efbSmrg esac 422972313efbSmrg prev= 423072313efbSmrg continue 423172313efbSmrg ;; 423272313efbSmrg inst_prefix) 423372313efbSmrg inst_prefix_dir="$arg" 423472313efbSmrg prev= 423572313efbSmrg continue 423672313efbSmrg ;; 423772313efbSmrg objectlist) 423872313efbSmrg if test -f "$arg"; then 423972313efbSmrg save_arg=$arg 424072313efbSmrg moreargs= 424172313efbSmrg for fil in `cat "$save_arg"` 424272313efbSmrg do 424372313efbSmrg# moreargs="$moreargs $fil" 424472313efbSmrg arg=$fil 424572313efbSmrg # A libtool-controlled object. 4246bdcaa8d0Smrg 424772313efbSmrg # Check to see that this really is a libtool object. 424872313efbSmrg if func_lalib_unsafe_p "$arg"; then 424972313efbSmrg pic_object= 425072313efbSmrg non_pic_object= 4251bdcaa8d0Smrg 425272313efbSmrg # Read the .lo file 425372313efbSmrg func_source "$arg" 4254bdcaa8d0Smrg 425572313efbSmrg if test -z "$pic_object" || 425672313efbSmrg test -z "$non_pic_object" || 425772313efbSmrg test "$pic_object" = none && 425872313efbSmrg test "$non_pic_object" = none; then 425972313efbSmrg func_fatal_error "cannot find name of object for \`$arg'" 426072313efbSmrg fi 4261bdcaa8d0Smrg 426272313efbSmrg # Extract subdirectory from the argument. 426372313efbSmrg func_dirname "$arg" "/" "" 426472313efbSmrg xdir="$func_dirname_result" 4265bdcaa8d0Smrg 426672313efbSmrg if test "$pic_object" != none; then 426772313efbSmrg # Prepend the subdirectory the object is found in. 426872313efbSmrg pic_object="$xdir$pic_object" 4269bdcaa8d0Smrg 427072313efbSmrg if test "$prev" = dlfiles; then 427172313efbSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 427272313efbSmrg dlfiles="$dlfiles $pic_object" 427372313efbSmrg prev= 427472313efbSmrg continue 427572313efbSmrg else 427672313efbSmrg # If libtool objects are unsupported, then we need to preload. 427772313efbSmrg prev=dlprefiles 427872313efbSmrg fi 427972313efbSmrg fi 4280bdcaa8d0Smrg 428172313efbSmrg # CHECK ME: I think I busted this. -Ossama 428272313efbSmrg if test "$prev" = dlprefiles; then 428372313efbSmrg # Preload the old-style object. 428472313efbSmrg dlprefiles="$dlprefiles $pic_object" 428572313efbSmrg prev= 428672313efbSmrg fi 4287bdcaa8d0Smrg 428872313efbSmrg # A PIC object. 428972313efbSmrg func_append libobjs " $pic_object" 429072313efbSmrg arg="$pic_object" 429172313efbSmrg fi 4292bdcaa8d0Smrg 429372313efbSmrg # Non-PIC object. 429472313efbSmrg if test "$non_pic_object" != none; then 429572313efbSmrg # Prepend the subdirectory the object is found in. 429672313efbSmrg non_pic_object="$xdir$non_pic_object" 4297bdcaa8d0Smrg 429872313efbSmrg # A standard non-PIC object 429972313efbSmrg func_append non_pic_objects " $non_pic_object" 430072313efbSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 430172313efbSmrg arg="$non_pic_object" 430272313efbSmrg fi 430372313efbSmrg else 430472313efbSmrg # If the PIC object exists, use it instead. 430572313efbSmrg # $xdir was prepended to $pic_object above. 430672313efbSmrg non_pic_object="$pic_object" 430772313efbSmrg func_append non_pic_objects " $non_pic_object" 430872313efbSmrg fi 430972313efbSmrg else 431072313efbSmrg # Only an error if not doing a dry-run. 431172313efbSmrg if $opt_dry_run; then 431272313efbSmrg # Extract subdirectory from the argument. 431372313efbSmrg func_dirname "$arg" "/" "" 431472313efbSmrg xdir="$func_dirname_result" 431572313efbSmrg 431672313efbSmrg func_lo2o "$arg" 431772313efbSmrg pic_object=$xdir$objdir/$func_lo2o_result 431872313efbSmrg non_pic_object=$xdir$func_lo2o_result 431972313efbSmrg func_append libobjs " $pic_object" 432072313efbSmrg func_append non_pic_objects " $non_pic_object" 432172313efbSmrg else 432272313efbSmrg func_fatal_error "\`$arg' is not a valid libtool object" 432372313efbSmrg fi 432472313efbSmrg fi 432572313efbSmrg done 432672313efbSmrg else 432772313efbSmrg func_fatal_error "link input file \`$arg' does not exist" 432872313efbSmrg fi 432972313efbSmrg arg=$save_arg 433072313efbSmrg prev= 433172313efbSmrg continue 433272313efbSmrg ;; 433372313efbSmrg precious_regex) 433472313efbSmrg precious_files_regex="$arg" 433572313efbSmrg prev= 433672313efbSmrg continue 433772313efbSmrg ;; 433872313efbSmrg release) 433972313efbSmrg release="-$arg" 434072313efbSmrg prev= 434172313efbSmrg continue 434272313efbSmrg ;; 434372313efbSmrg rpath | xrpath) 434472313efbSmrg # We need an absolute path. 434572313efbSmrg case $arg in 434672313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 434772313efbSmrg *) 434872313efbSmrg func_fatal_error "only absolute run-paths are allowed" 434972313efbSmrg ;; 435072313efbSmrg esac 435172313efbSmrg if test "$prev" = rpath; then 435272313efbSmrg case "$rpath " in 435372313efbSmrg *" $arg "*) ;; 435472313efbSmrg *) rpath="$rpath $arg" ;; 435572313efbSmrg esac 435672313efbSmrg else 435772313efbSmrg case "$xrpath " in 435872313efbSmrg *" $arg "*) ;; 435972313efbSmrg *) xrpath="$xrpath $arg" ;; 436072313efbSmrg esac 436172313efbSmrg fi 436272313efbSmrg prev= 436372313efbSmrg continue 436472313efbSmrg ;; 436572313efbSmrg shrext) 436672313efbSmrg shrext_cmds="$arg" 436772313efbSmrg prev= 436872313efbSmrg continue 436972313efbSmrg ;; 437072313efbSmrg weak) 437172313efbSmrg weak_libs="$weak_libs $arg" 437272313efbSmrg prev= 437372313efbSmrg continue 437472313efbSmrg ;; 437572313efbSmrg xcclinker) 437672313efbSmrg linker_flags="$linker_flags $qarg" 437772313efbSmrg compiler_flags="$compiler_flags $qarg" 437872313efbSmrg prev= 437972313efbSmrg func_append compile_command " $qarg" 438072313efbSmrg func_append finalize_command " $qarg" 438172313efbSmrg continue 438272313efbSmrg ;; 438372313efbSmrg xcompiler) 438472313efbSmrg compiler_flags="$compiler_flags $qarg" 438572313efbSmrg prev= 438672313efbSmrg func_append compile_command " $qarg" 438772313efbSmrg func_append finalize_command " $qarg" 438872313efbSmrg continue 438972313efbSmrg ;; 439072313efbSmrg xlinker) 439172313efbSmrg linker_flags="$linker_flags $qarg" 439272313efbSmrg compiler_flags="$compiler_flags $wl$qarg" 439372313efbSmrg prev= 439472313efbSmrg func_append compile_command " $wl$qarg" 439572313efbSmrg func_append finalize_command " $wl$qarg" 439672313efbSmrg continue 439772313efbSmrg ;; 439872313efbSmrg *) 439972313efbSmrg eval "$prev=\"\$arg\"" 440072313efbSmrg prev= 440172313efbSmrg continue 440272313efbSmrg ;; 4403bdcaa8d0Smrg esac 440472313efbSmrg fi # test -n "$prev" 4405bdcaa8d0Smrg 440672313efbSmrg prevarg="$arg" 4407bdcaa8d0Smrg 440872313efbSmrg case $arg in 440972313efbSmrg -all-static) 441072313efbSmrg if test -n "$link_static_flag"; then 441172313efbSmrg # See comment for -static flag below, for more details. 441272313efbSmrg func_append compile_command " $link_static_flag" 441372313efbSmrg func_append finalize_command " $link_static_flag" 441472313efbSmrg fi 441572313efbSmrg continue 441672313efbSmrg ;; 4417bdcaa8d0Smrg 441872313efbSmrg -allow-undefined) 441972313efbSmrg # FIXME: remove this flag sometime in the future. 442072313efbSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 442172313efbSmrg ;; 4422bdcaa8d0Smrg 442372313efbSmrg -avoid-version) 442472313efbSmrg avoid_version=yes 442572313efbSmrg continue 442672313efbSmrg ;; 4427bdcaa8d0Smrg 442872313efbSmrg -dlopen) 442972313efbSmrg prev=dlfiles 443072313efbSmrg continue 443172313efbSmrg ;; 4432bdcaa8d0Smrg 443372313efbSmrg -dlpreopen) 443472313efbSmrg prev=dlprefiles 443572313efbSmrg continue 443672313efbSmrg ;; 4437bdcaa8d0Smrg 443872313efbSmrg -export-dynamic) 443972313efbSmrg export_dynamic=yes 444072313efbSmrg continue 444172313efbSmrg ;; 4442bdcaa8d0Smrg 444372313efbSmrg -export-symbols | -export-symbols-regex) 444472313efbSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 444572313efbSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 444672313efbSmrg fi 444772313efbSmrg if test "X$arg" = "X-export-symbols"; then 444872313efbSmrg prev=expsyms 444972313efbSmrg else 445072313efbSmrg prev=expsyms_regex 445172313efbSmrg fi 445272313efbSmrg continue 445372313efbSmrg ;; 4454bdcaa8d0Smrg 445572313efbSmrg -framework) 445672313efbSmrg prev=framework 445772313efbSmrg continue 445872313efbSmrg ;; 4459bdcaa8d0Smrg 446072313efbSmrg -inst-prefix-dir) 446172313efbSmrg prev=inst_prefix 446272313efbSmrg continue 446372313efbSmrg ;; 4464bdcaa8d0Smrg 446572313efbSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 446672313efbSmrg # so, if we see these flags be careful not to treat them like -L 446772313efbSmrg -L[A-Z][A-Z]*:*) 446872313efbSmrg case $with_gcc/$host in 446972313efbSmrg no/*-*-irix* | /*-*-irix*) 447072313efbSmrg func_append compile_command " $arg" 447172313efbSmrg func_append finalize_command " $arg" 447272313efbSmrg ;; 447372313efbSmrg esac 447472313efbSmrg continue 447572313efbSmrg ;; 4476bdcaa8d0Smrg 447772313efbSmrg -L*) 447872313efbSmrg func_stripname '-L' '' "$arg" 447972313efbSmrg dir=$func_stripname_result 448072313efbSmrg if test -z "$dir"; then 448172313efbSmrg if test "$#" -gt 0; then 448272313efbSmrg func_fatal_error "require no space between \`-L' and \`$1'" 448372313efbSmrg else 448472313efbSmrg func_fatal_error "need path for \`-L' option" 448572313efbSmrg fi 448672313efbSmrg fi 448772313efbSmrg # We need an absolute path. 448872313efbSmrg case $dir in 448972313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 449072313efbSmrg *) 449172313efbSmrg absdir=`cd "$dir" && pwd` 449272313efbSmrg test -z "$absdir" && \ 449372313efbSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 449472313efbSmrg dir="$absdir" 449572313efbSmrg ;; 449672313efbSmrg esac 449772313efbSmrg case "$deplibs " in 449872313efbSmrg *" -L$dir "*) ;; 449972313efbSmrg *) 450072313efbSmrg deplibs="$deplibs -L$dir" 450172313efbSmrg lib_search_path="$lib_search_path $dir" 450272313efbSmrg ;; 450372313efbSmrg esac 450472313efbSmrg case $host in 450572313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 450672313efbSmrg testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 450772313efbSmrg case :$dllsearchpath: in 450872313efbSmrg *":$dir:"*) ;; 450972313efbSmrg ::) dllsearchpath=$dir;; 451072313efbSmrg *) dllsearchpath="$dllsearchpath:$dir";; 451172313efbSmrg esac 451272313efbSmrg case :$dllsearchpath: in 451372313efbSmrg *":$testbindir:"*) ;; 451472313efbSmrg ::) dllsearchpath=$testbindir;; 451572313efbSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 451672313efbSmrg esac 451772313efbSmrg ;; 451872313efbSmrg esac 451972313efbSmrg continue 452072313efbSmrg ;; 4521bdcaa8d0Smrg 452272313efbSmrg -l*) 452372313efbSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 452472313efbSmrg case $host in 452572313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 452672313efbSmrg # These systems don't actually have a C or math library (as such) 452772313efbSmrg continue 452872313efbSmrg ;; 452972313efbSmrg *-*-os2*) 453072313efbSmrg # These systems don't actually have a C library (as such) 453172313efbSmrg test "X$arg" = "X-lc" && continue 453272313efbSmrg ;; 453372313efbSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 453472313efbSmrg # Do not include libc due to us having libc/libc_r. 453572313efbSmrg test "X$arg" = "X-lc" && continue 453672313efbSmrg ;; 453772313efbSmrg *-*-rhapsody* | *-*-darwin1.[012]) 453872313efbSmrg # Rhapsody C and math libraries are in the System framework 453972313efbSmrg deplibs="$deplibs System.ltframework" 454072313efbSmrg continue 454172313efbSmrg ;; 454272313efbSmrg *-*-sco3.2v5* | *-*-sco5v6*) 454372313efbSmrg # Causes problems with __ctype 454472313efbSmrg test "X$arg" = "X-lc" && continue 454572313efbSmrg ;; 454672313efbSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 454772313efbSmrg # Compiler inserts libc in the correct place for threads to work 454872313efbSmrg test "X$arg" = "X-lc" && continue 454972313efbSmrg ;; 455072313efbSmrg esac 455172313efbSmrg elif test "X$arg" = "X-lc_r"; then 455272313efbSmrg case $host in 455372313efbSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 455472313efbSmrg # Do not include libc_r directly, use -pthread flag. 455572313efbSmrg continue 455672313efbSmrg ;; 455772313efbSmrg esac 455872313efbSmrg fi 455972313efbSmrg deplibs="$deplibs $arg" 456072313efbSmrg continue 456172313efbSmrg ;; 4562bdcaa8d0Smrg 456372313efbSmrg -module) 456472313efbSmrg module=yes 456572313efbSmrg continue 456672313efbSmrg ;; 4567bdcaa8d0Smrg 456872313efbSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 456972313efbSmrg # classes, name mangling, and exception handling. 457072313efbSmrg # Darwin uses the -arch flag to determine output architecture. 457172313efbSmrg -model|-arch|-isysroot) 457272313efbSmrg compiler_flags="$compiler_flags $arg" 457372313efbSmrg func_append compile_command " $arg" 457472313efbSmrg func_append finalize_command " $arg" 457572313efbSmrg prev=xcompiler 457672313efbSmrg continue 457772313efbSmrg ;; 4578bdcaa8d0Smrg 457972313efbSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 458072313efbSmrg compiler_flags="$compiler_flags $arg" 458172313efbSmrg func_append compile_command " $arg" 458272313efbSmrg func_append finalize_command " $arg" 458372313efbSmrg case "$new_inherited_linker_flags " in 458472313efbSmrg *" $arg "*) ;; 458572313efbSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 458672313efbSmrg esac 458772313efbSmrg continue 458872313efbSmrg ;; 4589bdcaa8d0Smrg 459072313efbSmrg -multi_module) 459172313efbSmrg single_module="${wl}-multi_module" 459272313efbSmrg continue 459372313efbSmrg ;; 4594bdcaa8d0Smrg 459572313efbSmrg -no-fast-install) 459672313efbSmrg fast_install=no 459772313efbSmrg continue 459872313efbSmrg ;; 4599bdcaa8d0Smrg 460072313efbSmrg -no-install) 460172313efbSmrg case $host in 460272313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 460372313efbSmrg # The PATH hackery in wrapper scripts is required on Windows 460472313efbSmrg # and Darwin in order for the loader to find any dlls it needs. 460572313efbSmrg func_warning "\`-no-install' is ignored for $host" 460672313efbSmrg func_warning "assuming \`-no-fast-install' instead" 460772313efbSmrg fast_install=no 460872313efbSmrg ;; 460972313efbSmrg *) no_install=yes ;; 461072313efbSmrg esac 461172313efbSmrg continue 461272313efbSmrg ;; 4613bdcaa8d0Smrg 461472313efbSmrg -no-undefined) 461572313efbSmrg allow_undefined=no 461672313efbSmrg continue 461772313efbSmrg ;; 4618bdcaa8d0Smrg 461972313efbSmrg -objectlist) 462072313efbSmrg prev=objectlist 462172313efbSmrg continue 462272313efbSmrg ;; 4623bdcaa8d0Smrg 462472313efbSmrg -o) prev=output ;; 4625bdcaa8d0Smrg 462672313efbSmrg -precious-files-regex) 462772313efbSmrg prev=precious_regex 462872313efbSmrg continue 462972313efbSmrg ;; 4630bdcaa8d0Smrg 463172313efbSmrg -release) 463272313efbSmrg prev=release 463372313efbSmrg continue 463472313efbSmrg ;; 4635bdcaa8d0Smrg 463672313efbSmrg -rpath) 463772313efbSmrg prev=rpath 463872313efbSmrg continue 463972313efbSmrg ;; 4640bdcaa8d0Smrg 464172313efbSmrg -R) 464272313efbSmrg prev=xrpath 464372313efbSmrg continue 464472313efbSmrg ;; 4645bdcaa8d0Smrg 464672313efbSmrg -R*) 464772313efbSmrg func_stripname '-R' '' "$arg" 464872313efbSmrg dir=$func_stripname_result 464972313efbSmrg # We need an absolute path. 465072313efbSmrg case $dir in 465172313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 465272313efbSmrg *) 465372313efbSmrg func_fatal_error "only absolute run-paths are allowed" 465472313efbSmrg ;; 465572313efbSmrg esac 465672313efbSmrg case "$xrpath " in 465772313efbSmrg *" $dir "*) ;; 465872313efbSmrg *) xrpath="$xrpath $dir" ;; 465972313efbSmrg esac 466072313efbSmrg continue 466172313efbSmrg ;; 4662bdcaa8d0Smrg 466372313efbSmrg -shared) 466472313efbSmrg # The effects of -shared are defined in a previous loop. 466572313efbSmrg continue 466672313efbSmrg ;; 4667bdcaa8d0Smrg 466872313efbSmrg -shrext) 466972313efbSmrg prev=shrext 467072313efbSmrg continue 467172313efbSmrg ;; 4672bdcaa8d0Smrg 467372313efbSmrg -static | -static-libtool-libs) 467472313efbSmrg # The effects of -static are defined in a previous loop. 467572313efbSmrg # We used to do the same as -all-static on platforms that 467672313efbSmrg # didn't have a PIC flag, but the assumption that the effects 467772313efbSmrg # would be equivalent was wrong. It would break on at least 467872313efbSmrg # Digital Unix and AIX. 467972313efbSmrg continue 468072313efbSmrg ;; 4681bdcaa8d0Smrg 468272313efbSmrg -thread-safe) 468372313efbSmrg thread_safe=yes 468472313efbSmrg continue 468572313efbSmrg ;; 4686bdcaa8d0Smrg 468772313efbSmrg -version-info) 468872313efbSmrg prev=vinfo 468972313efbSmrg continue 469072313efbSmrg ;; 4691bdcaa8d0Smrg 469272313efbSmrg -version-number) 469372313efbSmrg prev=vinfo 469472313efbSmrg vinfo_number=yes 469572313efbSmrg continue 469672313efbSmrg ;; 4697bdcaa8d0Smrg 469872313efbSmrg -weak) 469972313efbSmrg prev=weak 470072313efbSmrg continue 470172313efbSmrg ;; 4702bdcaa8d0Smrg 470372313efbSmrg -Wc,*) 470472313efbSmrg func_stripname '-Wc,' '' "$arg" 470572313efbSmrg args=$func_stripname_result 470672313efbSmrg arg= 470772313efbSmrg save_ifs="$IFS"; IFS=',' 470872313efbSmrg for flag in $args; do 470972313efbSmrg IFS="$save_ifs" 471072313efbSmrg func_quote_for_eval "$flag" 471172313efbSmrg arg="$arg $wl$func_quote_for_eval_result" 471272313efbSmrg compiler_flags="$compiler_flags $func_quote_for_eval_result" 471372313efbSmrg done 471472313efbSmrg IFS="$save_ifs" 471572313efbSmrg func_stripname ' ' '' "$arg" 471672313efbSmrg arg=$func_stripname_result 471772313efbSmrg ;; 4718bdcaa8d0Smrg 471972313efbSmrg -Wl,*) 472072313efbSmrg func_stripname '-Wl,' '' "$arg" 472172313efbSmrg args=$func_stripname_result 472272313efbSmrg arg= 472372313efbSmrg save_ifs="$IFS"; IFS=',' 472472313efbSmrg for flag in $args; do 472572313efbSmrg IFS="$save_ifs" 472672313efbSmrg func_quote_for_eval "$flag" 472772313efbSmrg arg="$arg $wl$func_quote_for_eval_result" 472872313efbSmrg compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 472972313efbSmrg linker_flags="$linker_flags $func_quote_for_eval_result" 473072313efbSmrg done 473172313efbSmrg IFS="$save_ifs" 473272313efbSmrg func_stripname ' ' '' "$arg" 473372313efbSmrg arg=$func_stripname_result 473472313efbSmrg ;; 4735bdcaa8d0Smrg 473672313efbSmrg -Xcompiler) 473772313efbSmrg prev=xcompiler 473872313efbSmrg continue 473972313efbSmrg ;; 4740bdcaa8d0Smrg 474172313efbSmrg -Xlinker) 474272313efbSmrg prev=xlinker 474372313efbSmrg continue 474472313efbSmrg ;; 4745bdcaa8d0Smrg 474672313efbSmrg -XCClinker) 474772313efbSmrg prev=xcclinker 474872313efbSmrg continue 474972313efbSmrg ;; 4750bdcaa8d0Smrg 475172313efbSmrg # -msg_* for osf cc 475272313efbSmrg -msg_*) 475372313efbSmrg func_quote_for_eval "$arg" 475472313efbSmrg arg="$func_quote_for_eval_result" 475572313efbSmrg ;; 4756bdcaa8d0Smrg 475772313efbSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 475872313efbSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 475972313efbSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 476072313efbSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 476172313efbSmrg # -q* pass through compiler args for the IBM compiler 476272313efbSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 476372313efbSmrg # compiler args for GCC 476472313efbSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 476572313efbSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 476672313efbSmrg # @file GCC response files 476772313efbSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 476872313efbSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 476972313efbSmrg func_quote_for_eval "$arg" 477072313efbSmrg arg="$func_quote_for_eval_result" 477172313efbSmrg func_append compile_command " $arg" 477272313efbSmrg func_append finalize_command " $arg" 477372313efbSmrg compiler_flags="$compiler_flags $arg" 477472313efbSmrg continue 477572313efbSmrg ;; 4776bdcaa8d0Smrg 477772313efbSmrg # Some other compiler flag. 477872313efbSmrg -* | +*) 477972313efbSmrg func_quote_for_eval "$arg" 478072313efbSmrg arg="$func_quote_for_eval_result" 478172313efbSmrg ;; 4782bdcaa8d0Smrg 478372313efbSmrg *.$objext) 478472313efbSmrg # A standard object. 478572313efbSmrg objs="$objs $arg" 478672313efbSmrg ;; 4787bdcaa8d0Smrg 478872313efbSmrg *.lo) 478972313efbSmrg # A libtool-controlled object. 4790bdcaa8d0Smrg 479172313efbSmrg # Check to see that this really is a libtool object. 479272313efbSmrg if func_lalib_unsafe_p "$arg"; then 479372313efbSmrg pic_object= 479472313efbSmrg non_pic_object= 479572313efbSmrg 479672313efbSmrg # Read the .lo file 479772313efbSmrg func_source "$arg" 479872313efbSmrg 479972313efbSmrg if test -z "$pic_object" || 480072313efbSmrg test -z "$non_pic_object" || 480172313efbSmrg test "$pic_object" = none && 480272313efbSmrg test "$non_pic_object" = none; then 480372313efbSmrg func_fatal_error "cannot find name of object for \`$arg'" 480472313efbSmrg fi 480572313efbSmrg 480672313efbSmrg # Extract subdirectory from the argument. 480772313efbSmrg func_dirname "$arg" "/" "" 480872313efbSmrg xdir="$func_dirname_result" 480972313efbSmrg 481072313efbSmrg if test "$pic_object" != none; then 481172313efbSmrg # Prepend the subdirectory the object is found in. 481272313efbSmrg pic_object="$xdir$pic_object" 481372313efbSmrg 481472313efbSmrg if test "$prev" = dlfiles; then 481572313efbSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 481672313efbSmrg dlfiles="$dlfiles $pic_object" 481772313efbSmrg prev= 481872313efbSmrg continue 481972313efbSmrg else 482072313efbSmrg # If libtool objects are unsupported, then we need to preload. 482172313efbSmrg prev=dlprefiles 482272313efbSmrg fi 482372313efbSmrg fi 482472313efbSmrg 482572313efbSmrg # CHECK ME: I think I busted this. -Ossama 482672313efbSmrg if test "$prev" = dlprefiles; then 482772313efbSmrg # Preload the old-style object. 482872313efbSmrg dlprefiles="$dlprefiles $pic_object" 482972313efbSmrg prev= 483072313efbSmrg fi 483172313efbSmrg 483272313efbSmrg # A PIC object. 483372313efbSmrg func_append libobjs " $pic_object" 483472313efbSmrg arg="$pic_object" 483572313efbSmrg fi 483672313efbSmrg 483772313efbSmrg # Non-PIC object. 483872313efbSmrg if test "$non_pic_object" != none; then 483972313efbSmrg # Prepend the subdirectory the object is found in. 484072313efbSmrg non_pic_object="$xdir$non_pic_object" 484172313efbSmrg 484272313efbSmrg # A standard non-PIC object 484372313efbSmrg func_append non_pic_objects " $non_pic_object" 484472313efbSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 484572313efbSmrg arg="$non_pic_object" 484672313efbSmrg fi 484772313efbSmrg else 484872313efbSmrg # If the PIC object exists, use it instead. 484972313efbSmrg # $xdir was prepended to $pic_object above. 485072313efbSmrg non_pic_object="$pic_object" 485172313efbSmrg func_append non_pic_objects " $non_pic_object" 485272313efbSmrg fi 485372313efbSmrg else 485472313efbSmrg # Only an error if not doing a dry-run. 485572313efbSmrg if $opt_dry_run; then 485672313efbSmrg # Extract subdirectory from the argument. 485772313efbSmrg func_dirname "$arg" "/" "" 485872313efbSmrg xdir="$func_dirname_result" 485972313efbSmrg 486072313efbSmrg func_lo2o "$arg" 486172313efbSmrg pic_object=$xdir$objdir/$func_lo2o_result 486272313efbSmrg non_pic_object=$xdir$func_lo2o_result 486372313efbSmrg func_append libobjs " $pic_object" 486472313efbSmrg func_append non_pic_objects " $non_pic_object" 486572313efbSmrg else 486672313efbSmrg func_fatal_error "\`$arg' is not a valid libtool object" 486772313efbSmrg fi 486872313efbSmrg fi 486972313efbSmrg ;; 487072313efbSmrg 487172313efbSmrg *.$libext) 487272313efbSmrg # An archive. 487372313efbSmrg deplibs="$deplibs $arg" 487472313efbSmrg old_deplibs="$old_deplibs $arg" 487572313efbSmrg continue 487672313efbSmrg ;; 487772313efbSmrg 487872313efbSmrg *.la) 487972313efbSmrg # A libtool-controlled library. 488072313efbSmrg 488172313efbSmrg if test "$prev" = dlfiles; then 488272313efbSmrg # This library was specified with -dlopen. 488372313efbSmrg dlfiles="$dlfiles $arg" 488472313efbSmrg prev= 488572313efbSmrg elif test "$prev" = dlprefiles; then 488672313efbSmrg # The library was specified with -dlpreopen. 488772313efbSmrg dlprefiles="$dlprefiles $arg" 488872313efbSmrg prev= 488972313efbSmrg else 489072313efbSmrg deplibs="$deplibs $arg" 489172313efbSmrg fi 489272313efbSmrg continue 489372313efbSmrg ;; 489472313efbSmrg 489572313efbSmrg # Some other compiler argument. 489672313efbSmrg *) 489772313efbSmrg # Unknown arguments in both finalize_command and compile_command need 489872313efbSmrg # to be aesthetically quoted because they are evaled later. 489972313efbSmrg func_quote_for_eval "$arg" 490072313efbSmrg arg="$func_quote_for_eval_result" 490172313efbSmrg ;; 490272313efbSmrg esac # arg 490372313efbSmrg 490472313efbSmrg # Now actually substitute the argument into the commands. 490572313efbSmrg if test -n "$arg"; then 490672313efbSmrg func_append compile_command " $arg" 490772313efbSmrg func_append finalize_command " $arg" 490872313efbSmrg fi 490972313efbSmrg done # argument parsing loop 491072313efbSmrg 491172313efbSmrg test -n "$prev" && \ 491272313efbSmrg func_fatal_help "the \`$prevarg' option requires an argument" 491372313efbSmrg 491472313efbSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 491572313efbSmrg eval arg=\"$export_dynamic_flag_spec\" 491672313efbSmrg func_append compile_command " $arg" 491772313efbSmrg func_append finalize_command " $arg" 491872313efbSmrg fi 491972313efbSmrg 492072313efbSmrg oldlibs= 492172313efbSmrg # calculate the name of the file, without its directory 492272313efbSmrg func_basename "$output" 492372313efbSmrg outputname="$func_basename_result" 492472313efbSmrg libobjs_save="$libobjs" 492572313efbSmrg 492672313efbSmrg if test -n "$shlibpath_var"; then 492772313efbSmrg # get the directories listed in $shlibpath_var 492872313efbSmrg eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 4929bdcaa8d0Smrg else 493072313efbSmrg shlib_search_path= 4931bdcaa8d0Smrg fi 493272313efbSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 493372313efbSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 4934bdcaa8d0Smrg 493572313efbSmrg func_dirname "$output" "/" "" 493672313efbSmrg output_objdir="$func_dirname_result$objdir" 493772313efbSmrg # Create the object directory. 493872313efbSmrg func_mkdir_p "$output_objdir" 4939bdcaa8d0Smrg 494072313efbSmrg # Determine the type of output 494172313efbSmrg case $output in 494272313efbSmrg "") 494372313efbSmrg func_fatal_help "you must specify an output file" 494472313efbSmrg ;; 494572313efbSmrg *.$libext) linkmode=oldlib ;; 494672313efbSmrg *.lo | *.$objext) linkmode=obj ;; 494772313efbSmrg *.la) linkmode=lib ;; 494872313efbSmrg *) linkmode=prog ;; # Anything else should be a program. 494972313efbSmrg esac 495072313efbSmrg 495172313efbSmrg specialdeplibs= 495272313efbSmrg 495372313efbSmrg libs= 495472313efbSmrg # Find all interdependent deplibs by searching for libraries 495572313efbSmrg # that are linked more than once (e.g. -la -lb -la) 495672313efbSmrg for deplib in $deplibs; do 495772313efbSmrg if $opt_duplicate_deps ; then 495872313efbSmrg case "$libs " in 495972313efbSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 496072313efbSmrg esac 496172313efbSmrg fi 496272313efbSmrg libs="$libs $deplib" 496372313efbSmrg done 496472313efbSmrg 496572313efbSmrg if test "$linkmode" = lib; then 496672313efbSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 496772313efbSmrg 496872313efbSmrg # Compute libraries that are listed more than once in $predeps 496972313efbSmrg # $postdeps and mark them as special (i.e., whose duplicates are 497072313efbSmrg # not to be eliminated). 497172313efbSmrg pre_post_deps= 497272313efbSmrg if $opt_duplicate_compiler_generated_deps; then 497372313efbSmrg for pre_post_dep in $predeps $postdeps; do 497472313efbSmrg case "$pre_post_deps " in 497572313efbSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 497672313efbSmrg esac 497772313efbSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 497872313efbSmrg done 497972313efbSmrg fi 498072313efbSmrg pre_post_deps= 498172313efbSmrg fi 498272313efbSmrg 498372313efbSmrg deplibs= 498472313efbSmrg newdependency_libs= 498572313efbSmrg newlib_search_path= 498672313efbSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 498772313efbSmrg notinst_deplibs= # not-installed libtool libraries 498872313efbSmrg notinst_path= # paths that contain not-installed libtool libraries 498972313efbSmrg 499072313efbSmrg case $linkmode in 499172313efbSmrg lib) 499272313efbSmrg passes="conv dlpreopen link" 499372313efbSmrg for file in $dlfiles $dlprefiles; do 499472313efbSmrg case $file in 499572313efbSmrg *.la) ;; 499672313efbSmrg *) 499772313efbSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 499872313efbSmrg ;; 499972313efbSmrg esac 500072313efbSmrg done 500172313efbSmrg ;; 500272313efbSmrg prog) 500372313efbSmrg compile_deplibs= 500472313efbSmrg finalize_deplibs= 500572313efbSmrg alldeplibs=no 500672313efbSmrg newdlfiles= 500772313efbSmrg newdlprefiles= 500872313efbSmrg passes="conv scan dlopen dlpreopen link" 500972313efbSmrg ;; 501072313efbSmrg *) passes="conv" 501172313efbSmrg ;; 501272313efbSmrg esac 501372313efbSmrg 501472313efbSmrg for pass in $passes; do 501572313efbSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 501672313efbSmrg # so that -L comes before libs that need it for instance... 501772313efbSmrg if test "$linkmode,$pass" = "lib,link"; then 501872313efbSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 501972313efbSmrg ## order, and fix it there properly 502072313efbSmrg tmp_deplibs= 502172313efbSmrg for deplib in $deplibs; do 502272313efbSmrg tmp_deplibs="$deplib $tmp_deplibs" 502372313efbSmrg done 502472313efbSmrg deplibs="$tmp_deplibs" 502572313efbSmrg fi 502672313efbSmrg 502772313efbSmrg if test "$linkmode,$pass" = "lib,link" || 502872313efbSmrg test "$linkmode,$pass" = "prog,scan"; then 502972313efbSmrg libs="$deplibs" 503072313efbSmrg deplibs= 503172313efbSmrg fi 503272313efbSmrg if test "$linkmode" = prog; then 503372313efbSmrg case $pass in 503472313efbSmrg dlopen) libs="$dlfiles" ;; 503572313efbSmrg dlpreopen) libs="$dlprefiles" ;; 503672313efbSmrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 503772313efbSmrg esac 503872313efbSmrg fi 503972313efbSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 504072313efbSmrg # Collect and forward deplibs of preopened libtool libs 504172313efbSmrg for lib in $dlprefiles; do 504272313efbSmrg # Ignore non-libtool-libs 504372313efbSmrg dependency_libs= 504472313efbSmrg case $lib in 504572313efbSmrg *.la) func_source "$lib" ;; 504672313efbSmrg esac 504772313efbSmrg 504872313efbSmrg # Collect preopened libtool deplibs, except any this library 504972313efbSmrg # has declared as weak libs 505072313efbSmrg for deplib in $dependency_libs; do 505172313efbSmrg deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 505272313efbSmrg case " $weak_libs " in 505372313efbSmrg *" $deplib_base "*) ;; 505472313efbSmrg *) deplibs="$deplibs $deplib" ;; 505572313efbSmrg esac 505672313efbSmrg done 505772313efbSmrg done 505872313efbSmrg libs="$dlprefiles" 505972313efbSmrg fi 506072313efbSmrg if test "$pass" = dlopen; then 506172313efbSmrg # Collect dlpreopened libraries 506272313efbSmrg save_deplibs="$deplibs" 506372313efbSmrg deplibs= 506472313efbSmrg fi 506572313efbSmrg 506672313efbSmrg for deplib in $libs; do 506772313efbSmrg lib= 506872313efbSmrg found=no 506972313efbSmrg case $deplib in 507072313efbSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 507172313efbSmrg if test "$linkmode,$pass" = "prog,link"; then 507272313efbSmrg compile_deplibs="$deplib $compile_deplibs" 507372313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 507472313efbSmrg else 507572313efbSmrg compiler_flags="$compiler_flags $deplib" 507672313efbSmrg if test "$linkmode" = lib ; then 507772313efbSmrg case "$new_inherited_linker_flags " in 507872313efbSmrg *" $deplib "*) ;; 507972313efbSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 508072313efbSmrg esac 508172313efbSmrg fi 508272313efbSmrg fi 508372313efbSmrg continue 508472313efbSmrg ;; 508572313efbSmrg -l*) 508672313efbSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 508772313efbSmrg func_warning "\`-l' is ignored for archives/objects" 508872313efbSmrg continue 508972313efbSmrg fi 509072313efbSmrg func_stripname '-l' '' "$deplib" 509172313efbSmrg name=$func_stripname_result 509272313efbSmrg if test "$linkmode" = lib; then 509372313efbSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 509472313efbSmrg else 509572313efbSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 509672313efbSmrg fi 509772313efbSmrg for searchdir in $searchdirs; do 509872313efbSmrg for search_ext in .la $std_shrext .so .a; do 509972313efbSmrg # Search the libtool library 510072313efbSmrg lib="$searchdir/lib${name}${search_ext}" 510172313efbSmrg if test -f "$lib"; then 510272313efbSmrg if test "$search_ext" = ".la"; then 510372313efbSmrg found=yes 510472313efbSmrg else 510572313efbSmrg found=no 510672313efbSmrg fi 510772313efbSmrg break 2 510872313efbSmrg fi 510972313efbSmrg done 511072313efbSmrg done 511172313efbSmrg if test "$found" != yes; then 511272313efbSmrg # deplib doesn't seem to be a libtool library 511372313efbSmrg if test "$linkmode,$pass" = "prog,link"; then 511472313efbSmrg compile_deplibs="$deplib $compile_deplibs" 511572313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 511672313efbSmrg else 511772313efbSmrg deplibs="$deplib $deplibs" 511872313efbSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 511972313efbSmrg fi 512072313efbSmrg continue 512172313efbSmrg else # deplib is a libtool library 512272313efbSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 512372313efbSmrg # We need to do some special things here, and not later. 512472313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 512572313efbSmrg case " $predeps $postdeps " in 512672313efbSmrg *" $deplib "*) 512772313efbSmrg if func_lalib_p "$lib"; then 512872313efbSmrg library_names= 512972313efbSmrg old_library= 513072313efbSmrg func_source "$lib" 513172313efbSmrg for l in $old_library $library_names; do 513272313efbSmrg ll="$l" 513372313efbSmrg done 513472313efbSmrg if test "X$ll" = "X$old_library" ; then # only static version available 513572313efbSmrg found=no 513672313efbSmrg func_dirname "$lib" "" "." 513772313efbSmrg ladir="$func_dirname_result" 513872313efbSmrg lib=$ladir/$old_library 513972313efbSmrg if test "$linkmode,$pass" = "prog,link"; then 514072313efbSmrg compile_deplibs="$deplib $compile_deplibs" 514172313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 514272313efbSmrg else 514372313efbSmrg deplibs="$deplib $deplibs" 514472313efbSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 514572313efbSmrg fi 514672313efbSmrg continue 514772313efbSmrg fi 514872313efbSmrg fi 514972313efbSmrg ;; 515072313efbSmrg *) ;; 515172313efbSmrg esac 515272313efbSmrg fi 515372313efbSmrg fi 515472313efbSmrg ;; # -l 515572313efbSmrg *.ltframework) 515672313efbSmrg if test "$linkmode,$pass" = "prog,link"; then 515772313efbSmrg compile_deplibs="$deplib $compile_deplibs" 515872313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 515972313efbSmrg else 516072313efbSmrg deplibs="$deplib $deplibs" 516172313efbSmrg if test "$linkmode" = lib ; then 516272313efbSmrg case "$new_inherited_linker_flags " in 516372313efbSmrg *" $deplib "*) ;; 516472313efbSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 516572313efbSmrg esac 516672313efbSmrg fi 516772313efbSmrg fi 516872313efbSmrg continue 516972313efbSmrg ;; 517072313efbSmrg -L*) 517172313efbSmrg case $linkmode in 517272313efbSmrg lib) 517372313efbSmrg deplibs="$deplib $deplibs" 517472313efbSmrg test "$pass" = conv && continue 517572313efbSmrg newdependency_libs="$deplib $newdependency_libs" 517672313efbSmrg func_stripname '-L' '' "$deplib" 517772313efbSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 517872313efbSmrg ;; 517972313efbSmrg prog) 518072313efbSmrg if test "$pass" = conv; then 518172313efbSmrg deplibs="$deplib $deplibs" 518272313efbSmrg continue 518372313efbSmrg fi 518472313efbSmrg if test "$pass" = scan; then 518572313efbSmrg deplibs="$deplib $deplibs" 518672313efbSmrg else 518772313efbSmrg compile_deplibs="$deplib $compile_deplibs" 518872313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 518972313efbSmrg fi 519072313efbSmrg func_stripname '-L' '' "$deplib" 519172313efbSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 519272313efbSmrg ;; 519372313efbSmrg *) 519472313efbSmrg func_warning "\`-L' is ignored for archives/objects" 519572313efbSmrg ;; 519672313efbSmrg esac # linkmode 519772313efbSmrg continue 519872313efbSmrg ;; # -L 519972313efbSmrg -R*) 520072313efbSmrg if test "$pass" = link; then 520172313efbSmrg func_stripname '-R' '' "$deplib" 520272313efbSmrg dir=$func_stripname_result 520372313efbSmrg # Make sure the xrpath contains only unique directories. 520472313efbSmrg case "$xrpath " in 520572313efbSmrg *" $dir "*) ;; 520672313efbSmrg *) xrpath="$xrpath $dir" ;; 520772313efbSmrg esac 520872313efbSmrg fi 520972313efbSmrg deplibs="$deplib $deplibs" 521072313efbSmrg continue 521172313efbSmrg ;; 521272313efbSmrg *.la) lib="$deplib" ;; 521372313efbSmrg *.$libext) 521472313efbSmrg if test "$pass" = conv; then 521572313efbSmrg deplibs="$deplib $deplibs" 521672313efbSmrg continue 521772313efbSmrg fi 521872313efbSmrg case $linkmode in 521972313efbSmrg lib) 522072313efbSmrg # Linking convenience modules into shared libraries is allowed, 522172313efbSmrg # but linking other static libraries is non-portable. 522272313efbSmrg case " $dlpreconveniencelibs " in 522372313efbSmrg *" $deplib "*) ;; 522472313efbSmrg *) 522572313efbSmrg valid_a_lib=no 522672313efbSmrg case $deplibs_check_method in 522772313efbSmrg match_pattern*) 522872313efbSmrg set dummy $deplibs_check_method; shift 522972313efbSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 523072313efbSmrg if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 523172313efbSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 523272313efbSmrg valid_a_lib=yes 523372313efbSmrg fi 523472313efbSmrg ;; 523572313efbSmrg pass_all) 523672313efbSmrg valid_a_lib=yes 523772313efbSmrg ;; 523872313efbSmrg esac 523972313efbSmrg if test "$valid_a_lib" != yes; then 524072313efbSmrg $ECHO 524172313efbSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 524272313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 524372313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 524472313efbSmrg $ECHO "*** shared version of the library, which you do not appear to have" 524572313efbSmrg $ECHO "*** because the file extensions .$libext of this argument makes me believe" 524672313efbSmrg $ECHO "*** that it is just a static archive that I should not use here." 524772313efbSmrg else 524872313efbSmrg $ECHO 524972313efbSmrg $ECHO "*** Warning: Linking the shared library $output against the" 525072313efbSmrg $ECHO "*** static library $deplib is not portable!" 525172313efbSmrg deplibs="$deplib $deplibs" 525272313efbSmrg fi 525372313efbSmrg ;; 525472313efbSmrg esac 525572313efbSmrg continue 525672313efbSmrg ;; 525772313efbSmrg prog) 525872313efbSmrg if test "$pass" != link; then 525972313efbSmrg deplibs="$deplib $deplibs" 526072313efbSmrg else 526172313efbSmrg compile_deplibs="$deplib $compile_deplibs" 526272313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 526372313efbSmrg fi 526472313efbSmrg continue 526572313efbSmrg ;; 526672313efbSmrg esac # linkmode 526772313efbSmrg ;; # *.$libext 526872313efbSmrg *.lo | *.$objext) 526972313efbSmrg if test "$pass" = conv; then 527072313efbSmrg deplibs="$deplib $deplibs" 527172313efbSmrg elif test "$linkmode" = prog; then 527272313efbSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 527372313efbSmrg # If there is no dlopen support or we're linking statically, 527472313efbSmrg # we need to preload. 527572313efbSmrg newdlprefiles="$newdlprefiles $deplib" 527672313efbSmrg compile_deplibs="$deplib $compile_deplibs" 527772313efbSmrg finalize_deplibs="$deplib $finalize_deplibs" 527872313efbSmrg else 527972313efbSmrg newdlfiles="$newdlfiles $deplib" 528072313efbSmrg fi 528172313efbSmrg fi 528272313efbSmrg continue 528372313efbSmrg ;; 528472313efbSmrg %DEPLIBS%) 528572313efbSmrg alldeplibs=yes 528672313efbSmrg continue 528772313efbSmrg ;; 528872313efbSmrg esac # case $deplib 528972313efbSmrg 529072313efbSmrg if test "$found" = yes || test -f "$lib"; then : 529172313efbSmrg else 529272313efbSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 529372313efbSmrg fi 529472313efbSmrg 529572313efbSmrg # Check to see that this really is a libtool archive. 529672313efbSmrg func_lalib_unsafe_p "$lib" \ 529772313efbSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 529872313efbSmrg 529972313efbSmrg func_dirname "$lib" "" "." 530072313efbSmrg ladir="$func_dirname_result" 530172313efbSmrg 530272313efbSmrg dlname= 530372313efbSmrg dlopen= 530472313efbSmrg dlpreopen= 530572313efbSmrg libdir= 530672313efbSmrg library_names= 530772313efbSmrg old_library= 530872313efbSmrg inherited_linker_flags= 530972313efbSmrg # If the library was installed with an old release of libtool, 531072313efbSmrg # it will not redefine variables installed, or shouldnotlink 531172313efbSmrg installed=yes 531272313efbSmrg shouldnotlink=no 531372313efbSmrg avoidtemprpath= 531472313efbSmrg 531572313efbSmrg 531672313efbSmrg # Read the .la file 531772313efbSmrg func_source "$lib" 531872313efbSmrg 531972313efbSmrg # Convert "-framework foo" to "foo.ltframework" 532072313efbSmrg if test -n "$inherited_linker_flags"; then 532172313efbSmrg tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 532272313efbSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 532372313efbSmrg case " $new_inherited_linker_flags " in 532472313efbSmrg *" $tmp_inherited_linker_flag "*) ;; 532572313efbSmrg *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 532672313efbSmrg esac 532772313efbSmrg done 532872313efbSmrg fi 532972313efbSmrg dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 533072313efbSmrg if test "$linkmode,$pass" = "lib,link" || 533172313efbSmrg test "$linkmode,$pass" = "prog,scan" || 533272313efbSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 533372313efbSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 533472313efbSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 533572313efbSmrg fi 533672313efbSmrg 533772313efbSmrg if test "$pass" = conv; then 533872313efbSmrg # Only check for convenience libraries 533972313efbSmrg deplibs="$lib $deplibs" 534072313efbSmrg if test -z "$libdir"; then 534172313efbSmrg if test -z "$old_library"; then 534272313efbSmrg func_fatal_error "cannot find name of link library for \`$lib'" 534372313efbSmrg fi 534472313efbSmrg # It is a libtool convenience library, so add in its objects. 534572313efbSmrg convenience="$convenience $ladir/$objdir/$old_library" 534672313efbSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 534772313efbSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 534872313efbSmrg func_fatal_error "\`$lib' is not a convenience library" 534972313efbSmrg fi 535072313efbSmrg tmp_libs= 535172313efbSmrg for deplib in $dependency_libs; do 535272313efbSmrg deplibs="$deplib $deplibs" 535372313efbSmrg if $opt_duplicate_deps ; then 535472313efbSmrg case "$tmp_libs " in 535572313efbSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 535672313efbSmrg esac 535772313efbSmrg fi 535872313efbSmrg tmp_libs="$tmp_libs $deplib" 535972313efbSmrg done 536072313efbSmrg continue 536172313efbSmrg fi # $pass = conv 536272313efbSmrg 536372313efbSmrg 536472313efbSmrg # Get the name of the library we link against. 536572313efbSmrg linklib= 536672313efbSmrg for l in $old_library $library_names; do 536772313efbSmrg linklib="$l" 536872313efbSmrg done 536972313efbSmrg if test -z "$linklib"; then 537072313efbSmrg func_fatal_error "cannot find name of link library for \`$lib'" 537172313efbSmrg fi 537272313efbSmrg 537372313efbSmrg # This library was specified with -dlopen. 537472313efbSmrg if test "$pass" = dlopen; then 537572313efbSmrg if test -z "$libdir"; then 537672313efbSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 537772313efbSmrg fi 537872313efbSmrg if test -z "$dlname" || 537972313efbSmrg test "$dlopen_support" != yes || 538072313efbSmrg test "$build_libtool_libs" = no; then 538172313efbSmrg # If there is no dlname, no dlopen support or we're linking 538272313efbSmrg # statically, we need to preload. We also need to preload any 538372313efbSmrg # dependent libraries so libltdl's deplib preloader doesn't 538472313efbSmrg # bomb out in the load deplibs phase. 538572313efbSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 538672313efbSmrg else 538772313efbSmrg newdlfiles="$newdlfiles $lib" 538872313efbSmrg fi 538972313efbSmrg continue 539072313efbSmrg fi # $pass = dlopen 539172313efbSmrg 539272313efbSmrg # We need an absolute path. 539372313efbSmrg case $ladir in 539472313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 539572313efbSmrg *) 539672313efbSmrg abs_ladir=`cd "$ladir" && pwd` 539772313efbSmrg if test -z "$abs_ladir"; then 539872313efbSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 539972313efbSmrg func_warning "passing it literally to the linker, although it might fail" 540072313efbSmrg abs_ladir="$ladir" 540172313efbSmrg fi 540272313efbSmrg ;; 540372313efbSmrg esac 540472313efbSmrg func_basename "$lib" 540572313efbSmrg laname="$func_basename_result" 540672313efbSmrg 540772313efbSmrg # Find the relevant object directory and library name. 540872313efbSmrg if test "X$installed" = Xyes; then 540972313efbSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 541072313efbSmrg func_warning "library \`$lib' was moved." 541172313efbSmrg dir="$ladir" 541272313efbSmrg absdir="$abs_ladir" 541372313efbSmrg libdir="$abs_ladir" 541472313efbSmrg else 541572313efbSmrg dir="$libdir" 541672313efbSmrg absdir="$libdir" 541772313efbSmrg fi 541872313efbSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 541972313efbSmrg else 542072313efbSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 542172313efbSmrg dir="$ladir" 542272313efbSmrg absdir="$abs_ladir" 542372313efbSmrg # Remove this search path later 542472313efbSmrg notinst_path="$notinst_path $abs_ladir" 542572313efbSmrg else 542672313efbSmrg dir="$ladir/$objdir" 542772313efbSmrg absdir="$abs_ladir/$objdir" 542872313efbSmrg # Remove this search path later 542972313efbSmrg notinst_path="$notinst_path $abs_ladir" 543072313efbSmrg fi 543172313efbSmrg fi # $installed = yes 543272313efbSmrg func_stripname 'lib' '.la' "$laname" 543372313efbSmrg name=$func_stripname_result 543472313efbSmrg 543572313efbSmrg # This library was specified with -dlpreopen. 543672313efbSmrg if test "$pass" = dlpreopen; then 543772313efbSmrg if test -z "$libdir" && test "$linkmode" = prog; then 543872313efbSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 543972313efbSmrg fi 544072313efbSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 544172313efbSmrg # are required to link). 544272313efbSmrg if test -n "$old_library"; then 544372313efbSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 544472313efbSmrg # Keep a list of preopened convenience libraries to check 544572313efbSmrg # that they are being used correctly in the link pass. 544672313efbSmrg test -z "$libdir" && \ 544772313efbSmrg dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 544872313efbSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 544972313efbSmrg elif test -n "$dlname"; then 545072313efbSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 545172313efbSmrg else 545272313efbSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 545372313efbSmrg fi 545472313efbSmrg fi # $pass = dlpreopen 545572313efbSmrg 545672313efbSmrg if test -z "$libdir"; then 545772313efbSmrg # Link the convenience library 545872313efbSmrg if test "$linkmode" = lib; then 545972313efbSmrg deplibs="$dir/$old_library $deplibs" 546072313efbSmrg elif test "$linkmode,$pass" = "prog,link"; then 546172313efbSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 546272313efbSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 546372313efbSmrg else 546472313efbSmrg deplibs="$lib $deplibs" # used for prog,scan pass 546572313efbSmrg fi 546672313efbSmrg continue 546772313efbSmrg fi 546872313efbSmrg 546972313efbSmrg 547072313efbSmrg if test "$linkmode" = prog && test "$pass" != link; then 547172313efbSmrg newlib_search_path="$newlib_search_path $ladir" 547272313efbSmrg deplibs="$lib $deplibs" 547372313efbSmrg 547472313efbSmrg linkalldeplibs=no 547572313efbSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 547672313efbSmrg test "$build_libtool_libs" = no; then 547772313efbSmrg linkalldeplibs=yes 547872313efbSmrg fi 547972313efbSmrg 548072313efbSmrg tmp_libs= 548172313efbSmrg for deplib in $dependency_libs; do 548272313efbSmrg case $deplib in 548372313efbSmrg -L*) func_stripname '-L' '' "$deplib" 548472313efbSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 548572313efbSmrg ;; 548672313efbSmrg esac 548772313efbSmrg # Need to link against all dependency_libs? 548872313efbSmrg if test "$linkalldeplibs" = yes; then 548972313efbSmrg deplibs="$deplib $deplibs" 549072313efbSmrg else 549172313efbSmrg # Need to hardcode shared library paths 549272313efbSmrg # or/and link against static libraries 549372313efbSmrg newdependency_libs="$deplib $newdependency_libs" 549472313efbSmrg fi 549572313efbSmrg if $opt_duplicate_deps ; then 549672313efbSmrg case "$tmp_libs " in 549772313efbSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 549872313efbSmrg esac 549972313efbSmrg fi 550072313efbSmrg tmp_libs="$tmp_libs $deplib" 550172313efbSmrg done # for deplib 550272313efbSmrg continue 550372313efbSmrg fi # $linkmode = prog... 550472313efbSmrg 550572313efbSmrg if test "$linkmode,$pass" = "prog,link"; then 550672313efbSmrg if test -n "$library_names" && 550772313efbSmrg { { test "$prefer_static_libs" = no || 550872313efbSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 550972313efbSmrg test -z "$old_library"; }; then 551072313efbSmrg # We need to hardcode the library path 551172313efbSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 551272313efbSmrg # Make sure the rpath contains only unique directories. 551372313efbSmrg case "$temp_rpath:" in 551472313efbSmrg *"$absdir:"*) ;; 551572313efbSmrg *) temp_rpath="$temp_rpath$absdir:" ;; 551672313efbSmrg esac 551772313efbSmrg fi 551872313efbSmrg 551972313efbSmrg # Hardcode the library path. 552072313efbSmrg # Skip directories that are in the system default run-time 552172313efbSmrg # search path. 552272313efbSmrg case " $sys_lib_dlsearch_path " in 552372313efbSmrg *" $absdir "*) ;; 552472313efbSmrg *) 552572313efbSmrg case "$compile_rpath " in 552672313efbSmrg *" $absdir "*) ;; 552772313efbSmrg *) compile_rpath="$compile_rpath $absdir" 552872313efbSmrg esac 552972313efbSmrg ;; 553072313efbSmrg esac 553172313efbSmrg case " $sys_lib_dlsearch_path " in 553272313efbSmrg *" $libdir "*) ;; 553372313efbSmrg *) 553472313efbSmrg case "$finalize_rpath " in 553572313efbSmrg *" $libdir "*) ;; 553672313efbSmrg *) finalize_rpath="$finalize_rpath $libdir" 553772313efbSmrg esac 553872313efbSmrg ;; 553972313efbSmrg esac 554072313efbSmrg fi # $linkmode,$pass = prog,link... 554172313efbSmrg 554272313efbSmrg if test "$alldeplibs" = yes && 554372313efbSmrg { test "$deplibs_check_method" = pass_all || 554472313efbSmrg { test "$build_libtool_libs" = yes && 554572313efbSmrg test -n "$library_names"; }; }; then 554672313efbSmrg # We only need to search for static libraries 554772313efbSmrg continue 554872313efbSmrg fi 554972313efbSmrg fi 555072313efbSmrg 555172313efbSmrg link_static=no # Whether the deplib will be linked statically 555272313efbSmrg use_static_libs=$prefer_static_libs 555372313efbSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 555472313efbSmrg use_static_libs=no 555572313efbSmrg fi 555672313efbSmrg if test -n "$library_names" && 555772313efbSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 555872313efbSmrg case $host in 555972313efbSmrg *cygwin* | *mingw* | *cegcc*) 556072313efbSmrg # No point in relinking DLLs because paths are not encoded 556172313efbSmrg notinst_deplibs="$notinst_deplibs $lib" 556272313efbSmrg need_relink=no 556372313efbSmrg ;; 556472313efbSmrg *) 556572313efbSmrg if test "$installed" = no; then 556672313efbSmrg notinst_deplibs="$notinst_deplibs $lib" 556772313efbSmrg need_relink=yes 556872313efbSmrg fi 556972313efbSmrg ;; 557072313efbSmrg esac 557172313efbSmrg # This is a shared library 557272313efbSmrg 557372313efbSmrg # Warn about portability, can't link against -module's on some 557472313efbSmrg # systems (darwin). Don't bleat about dlopened modules though! 557572313efbSmrg dlopenmodule="" 557672313efbSmrg for dlpremoduletest in $dlprefiles; do 557772313efbSmrg if test "X$dlpremoduletest" = "X$lib"; then 557872313efbSmrg dlopenmodule="$dlpremoduletest" 557972313efbSmrg break 558072313efbSmrg fi 558172313efbSmrg done 558272313efbSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 558372313efbSmrg $ECHO 558472313efbSmrg if test "$linkmode" = prog; then 558572313efbSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 558672313efbSmrg else 558772313efbSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 558872313efbSmrg fi 558972313efbSmrg $ECHO "*** $linklib is not portable!" 559072313efbSmrg fi 559172313efbSmrg if test "$linkmode" = lib && 559272313efbSmrg test "$hardcode_into_libs" = yes; then 559372313efbSmrg # Hardcode the library path. 559472313efbSmrg # Skip directories that are in the system default run-time 559572313efbSmrg # search path. 559672313efbSmrg case " $sys_lib_dlsearch_path " in 559772313efbSmrg *" $absdir "*) ;; 559872313efbSmrg *) 559972313efbSmrg case "$compile_rpath " in 560072313efbSmrg *" $absdir "*) ;; 560172313efbSmrg *) compile_rpath="$compile_rpath $absdir" 560272313efbSmrg esac 560372313efbSmrg ;; 560472313efbSmrg esac 560572313efbSmrg case " $sys_lib_dlsearch_path " in 560672313efbSmrg *" $libdir "*) ;; 560772313efbSmrg *) 560872313efbSmrg case "$finalize_rpath " in 560972313efbSmrg *" $libdir "*) ;; 561072313efbSmrg *) finalize_rpath="$finalize_rpath $libdir" 561172313efbSmrg esac 561272313efbSmrg ;; 561372313efbSmrg esac 561472313efbSmrg fi 561572313efbSmrg 561672313efbSmrg if test -n "$old_archive_from_expsyms_cmds"; then 561772313efbSmrg # figure out the soname 561872313efbSmrg set dummy $library_names 561972313efbSmrg shift 562072313efbSmrg realname="$1" 562172313efbSmrg shift 562272313efbSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 562372313efbSmrg # use dlname if we got it. it's perfectly good, no? 562472313efbSmrg if test -n "$dlname"; then 562572313efbSmrg soname="$dlname" 562672313efbSmrg elif test -n "$soname_spec"; then 562772313efbSmrg # bleh windows 562872313efbSmrg case $host in 562972313efbSmrg *cygwin* | mingw* | *cegcc*) 563072313efbSmrg func_arith $current - $age 563172313efbSmrg major=$func_arith_result 563272313efbSmrg versuffix="-$major" 563372313efbSmrg ;; 563472313efbSmrg esac 563572313efbSmrg eval soname=\"$soname_spec\" 563672313efbSmrg else 563772313efbSmrg soname="$realname" 563872313efbSmrg fi 563972313efbSmrg 564072313efbSmrg # Make a new name for the extract_expsyms_cmds to use 564172313efbSmrg soroot="$soname" 564272313efbSmrg func_basename "$soroot" 564372313efbSmrg soname="$func_basename_result" 564472313efbSmrg func_stripname 'lib' '.dll' "$soname" 564572313efbSmrg newlib=libimp-$func_stripname_result.a 564672313efbSmrg 564772313efbSmrg # If the library has no export list, then create one now 564872313efbSmrg if test -f "$output_objdir/$soname-def"; then : 564972313efbSmrg else 565072313efbSmrg func_verbose "extracting exported symbol list from \`$soname'" 565172313efbSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 565272313efbSmrg fi 565372313efbSmrg 565472313efbSmrg # Create $newlib 565572313efbSmrg if test -f "$output_objdir/$newlib"; then :; else 565672313efbSmrg func_verbose "generating import library for \`$soname'" 565772313efbSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 565872313efbSmrg fi 565972313efbSmrg # make sure the library variables are pointing to the new library 566072313efbSmrg dir=$output_objdir 566172313efbSmrg linklib=$newlib 566272313efbSmrg fi # test -n "$old_archive_from_expsyms_cmds" 566372313efbSmrg 566472313efbSmrg if test "$linkmode" = prog || test "$mode" != relink; then 566572313efbSmrg add_shlibpath= 566672313efbSmrg add_dir= 566772313efbSmrg add= 566872313efbSmrg lib_linked=yes 566972313efbSmrg case $hardcode_action in 567072313efbSmrg immediate | unsupported) 567172313efbSmrg if test "$hardcode_direct" = no; then 567272313efbSmrg add="$dir/$linklib" 567372313efbSmrg case $host in 567472313efbSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 567572313efbSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 567672313efbSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 567772313efbSmrg *-*-unixware7*) add_dir="-L$dir" ;; 567872313efbSmrg *-*-darwin* ) 567972313efbSmrg # if the lib is a (non-dlopened) module then we can not 568072313efbSmrg # link against it, someone is ignoring the earlier warnings 568172313efbSmrg if /usr/bin/file -L $add 2> /dev/null | 568272313efbSmrg $GREP ": [^:]* bundle" >/dev/null ; then 568372313efbSmrg if test "X$dlopenmodule" != "X$lib"; then 568472313efbSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 568572313efbSmrg if test -z "$old_library" ; then 568672313efbSmrg $ECHO 568772313efbSmrg $ECHO "*** And there doesn't seem to be a static archive available" 568872313efbSmrg $ECHO "*** The link will probably fail, sorry" 568972313efbSmrg else 569072313efbSmrg add="$dir/$old_library" 569172313efbSmrg fi 569272313efbSmrg elif test -n "$old_library"; then 569372313efbSmrg add="$dir/$old_library" 569472313efbSmrg fi 569572313efbSmrg fi 569672313efbSmrg esac 569772313efbSmrg elif test "$hardcode_minus_L" = no; then 569872313efbSmrg case $host in 569972313efbSmrg *-*-sunos*) add_shlibpath="$dir" ;; 570072313efbSmrg esac 570172313efbSmrg add_dir="-L$dir" 570272313efbSmrg add="-l$name" 570372313efbSmrg elif test "$hardcode_shlibpath_var" = no; then 570472313efbSmrg add_shlibpath="$dir" 570572313efbSmrg add="-l$name" 570672313efbSmrg else 570772313efbSmrg lib_linked=no 570872313efbSmrg fi 570972313efbSmrg ;; 571072313efbSmrg relink) 571172313efbSmrg if test "$hardcode_direct" = yes && 571272313efbSmrg test "$hardcode_direct_absolute" = no; then 571372313efbSmrg add="$dir/$linklib" 571472313efbSmrg elif test "$hardcode_minus_L" = yes; then 571572313efbSmrg add_dir="-L$dir" 571672313efbSmrg # Try looking first in the location we're being installed to. 571772313efbSmrg if test -n "$inst_prefix_dir"; then 571872313efbSmrg case $libdir in 571972313efbSmrg [\\/]*) 572072313efbSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 572172313efbSmrg ;; 572272313efbSmrg esac 572372313efbSmrg fi 572472313efbSmrg add="-l$name" 572572313efbSmrg elif test "$hardcode_shlibpath_var" = yes; then 572672313efbSmrg add_shlibpath="$dir" 572772313efbSmrg add="-l$name" 572872313efbSmrg else 572972313efbSmrg lib_linked=no 573072313efbSmrg fi 573172313efbSmrg ;; 573272313efbSmrg *) lib_linked=no ;; 573372313efbSmrg esac 573472313efbSmrg 573572313efbSmrg if test "$lib_linked" != yes; then 573672313efbSmrg func_fatal_configuration "unsupported hardcode properties" 573772313efbSmrg fi 573872313efbSmrg 573972313efbSmrg if test -n "$add_shlibpath"; then 574072313efbSmrg case :$compile_shlibpath: in 574172313efbSmrg *":$add_shlibpath:"*) ;; 574272313efbSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 574372313efbSmrg esac 574472313efbSmrg fi 574572313efbSmrg if test "$linkmode" = prog; then 574672313efbSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 574772313efbSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 574872313efbSmrg else 574972313efbSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 575072313efbSmrg test -n "$add" && deplibs="$add $deplibs" 575172313efbSmrg if test "$hardcode_direct" != yes && 575272313efbSmrg test "$hardcode_minus_L" != yes && 575372313efbSmrg test "$hardcode_shlibpath_var" = yes; then 575472313efbSmrg case :$finalize_shlibpath: in 575572313efbSmrg *":$libdir:"*) ;; 575672313efbSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 575772313efbSmrg esac 575872313efbSmrg fi 575972313efbSmrg fi 576072313efbSmrg fi 576172313efbSmrg 576272313efbSmrg if test "$linkmode" = prog || test "$mode" = relink; then 576372313efbSmrg add_shlibpath= 576472313efbSmrg add_dir= 576572313efbSmrg add= 576672313efbSmrg # Finalize command for both is simple: just hardcode it. 576772313efbSmrg if test "$hardcode_direct" = yes && 576872313efbSmrg test "$hardcode_direct_absolute" = no; then 576972313efbSmrg add="$libdir/$linklib" 577072313efbSmrg elif test "$hardcode_minus_L" = yes; then 577172313efbSmrg add_dir="-L$libdir" 577272313efbSmrg add="-l$name" 577372313efbSmrg elif test "$hardcode_shlibpath_var" = yes; then 577472313efbSmrg case :$finalize_shlibpath: in 577572313efbSmrg *":$libdir:"*) ;; 577672313efbSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 577772313efbSmrg esac 577872313efbSmrg add="-l$name" 577972313efbSmrg elif test "$hardcode_automatic" = yes; then 578072313efbSmrg if test -n "$inst_prefix_dir" && 578172313efbSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 578272313efbSmrg add="$inst_prefix_dir$libdir/$linklib" 578372313efbSmrg else 578472313efbSmrg add="$libdir/$linklib" 578572313efbSmrg fi 578672313efbSmrg else 578772313efbSmrg # We cannot seem to hardcode it, guess we'll fake it. 578872313efbSmrg add_dir="-L$libdir" 578972313efbSmrg # Try looking first in the location we're being installed to. 579072313efbSmrg if test -n "$inst_prefix_dir"; then 579172313efbSmrg case $libdir in 579272313efbSmrg [\\/]*) 579372313efbSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 579472313efbSmrg ;; 579572313efbSmrg esac 579672313efbSmrg fi 579772313efbSmrg add="-l$name" 579872313efbSmrg fi 579972313efbSmrg 580072313efbSmrg if test "$linkmode" = prog; then 580172313efbSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 580272313efbSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 580372313efbSmrg else 580472313efbSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 580572313efbSmrg test -n "$add" && deplibs="$add $deplibs" 580672313efbSmrg fi 580772313efbSmrg fi 580872313efbSmrg elif test "$linkmode" = prog; then 580972313efbSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 581072313efbSmrg # is not unsupported. This is valid on all known static and 581172313efbSmrg # shared platforms. 581272313efbSmrg if test "$hardcode_direct" != unsupported; then 581372313efbSmrg test -n "$old_library" && linklib="$old_library" 581472313efbSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 581572313efbSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 581672313efbSmrg else 581772313efbSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 581872313efbSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 581972313efbSmrg fi 582072313efbSmrg elif test "$build_libtool_libs" = yes; then 582172313efbSmrg # Not a shared library 582272313efbSmrg if test "$deplibs_check_method" != pass_all; then 582372313efbSmrg # We're trying link a shared library against a static one 582472313efbSmrg # but the system doesn't support it. 582572313efbSmrg 582672313efbSmrg # Just print a warning and add the library to dependency_libs so 582772313efbSmrg # that the program can be linked against the static library. 582872313efbSmrg $ECHO 582972313efbSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 583072313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 583172313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 583272313efbSmrg $ECHO "*** shared version of the library, which you do not appear to have." 583372313efbSmrg if test "$module" = yes; then 583472313efbSmrg $ECHO "*** But as you try to build a module library, libtool will still create " 583572313efbSmrg $ECHO "*** a static module, that should work as long as the dlopening application" 583672313efbSmrg $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 583772313efbSmrg if test -z "$global_symbol_pipe"; then 583872313efbSmrg $ECHO 583972313efbSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 584072313efbSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 584172313efbSmrg $ECHO "*** not find such a program. So, this module is probably useless." 584272313efbSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 584372313efbSmrg fi 584472313efbSmrg if test "$build_old_libs" = no; then 584572313efbSmrg build_libtool_libs=module 584672313efbSmrg build_old_libs=yes 584772313efbSmrg else 584872313efbSmrg build_libtool_libs=no 584972313efbSmrg fi 585072313efbSmrg fi 585172313efbSmrg else 585272313efbSmrg deplibs="$dir/$old_library $deplibs" 585372313efbSmrg link_static=yes 585472313efbSmrg fi 585572313efbSmrg fi # link shared/static library? 585672313efbSmrg 585772313efbSmrg if test "$linkmode" = lib; then 585872313efbSmrg if test -n "$dependency_libs" && 585972313efbSmrg { test "$hardcode_into_libs" != yes || 586072313efbSmrg test "$build_old_libs" = yes || 586172313efbSmrg test "$link_static" = yes; }; then 586272313efbSmrg # Extract -R from dependency_libs 586372313efbSmrg temp_deplibs= 586472313efbSmrg for libdir in $dependency_libs; do 586572313efbSmrg case $libdir in 586672313efbSmrg -R*) func_stripname '-R' '' "$libdir" 586772313efbSmrg temp_xrpath=$func_stripname_result 586872313efbSmrg case " $xrpath " in 586972313efbSmrg *" $temp_xrpath "*) ;; 587072313efbSmrg *) xrpath="$xrpath $temp_xrpath";; 587172313efbSmrg esac;; 587272313efbSmrg *) temp_deplibs="$temp_deplibs $libdir";; 587372313efbSmrg esac 587472313efbSmrg done 587572313efbSmrg dependency_libs="$temp_deplibs" 587672313efbSmrg fi 587772313efbSmrg 587872313efbSmrg newlib_search_path="$newlib_search_path $absdir" 587972313efbSmrg # Link against this library 588072313efbSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 588172313efbSmrg # ... and its dependency_libs 588272313efbSmrg tmp_libs= 588372313efbSmrg for deplib in $dependency_libs; do 588472313efbSmrg newdependency_libs="$deplib $newdependency_libs" 588572313efbSmrg if $opt_duplicate_deps ; then 588672313efbSmrg case "$tmp_libs " in 588772313efbSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 588872313efbSmrg esac 588972313efbSmrg fi 589072313efbSmrg tmp_libs="$tmp_libs $deplib" 589172313efbSmrg done 589272313efbSmrg 589372313efbSmrg if test "$link_all_deplibs" != no; then 589472313efbSmrg # Add the search paths of all dependency libraries 589572313efbSmrg for deplib in $dependency_libs; do 589672313efbSmrg case $deplib in 589772313efbSmrg -L*) path="$deplib" ;; 589872313efbSmrg *.la) 589972313efbSmrg func_dirname "$deplib" "" "." 590072313efbSmrg dir="$func_dirname_result" 590172313efbSmrg # We need an absolute path. 590272313efbSmrg case $dir in 590372313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 590472313efbSmrg *) 590572313efbSmrg absdir=`cd "$dir" && pwd` 590672313efbSmrg if test -z "$absdir"; then 590772313efbSmrg func_warning "cannot determine absolute directory name of \`$dir'" 590872313efbSmrg absdir="$dir" 590972313efbSmrg fi 591072313efbSmrg ;; 591172313efbSmrg esac 591272313efbSmrg if $GREP "^installed=no" $deplib > /dev/null; then 591372313efbSmrg case $host in 591472313efbSmrg *-*-darwin*) 591572313efbSmrg depdepl= 591672313efbSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 591772313efbSmrg if test -n "$deplibrary_names" ; then 591872313efbSmrg for tmp in $deplibrary_names ; do 591972313efbSmrg depdepl=$tmp 592072313efbSmrg done 592172313efbSmrg if test -f "$absdir/$objdir/$depdepl" ; then 592272313efbSmrg depdepl="$absdir/$objdir/$depdepl" 592372313efbSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 592472313efbSmrg if test -z "$darwin_install_name"; then 592572313efbSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 592672313efbSmrg fi 592772313efbSmrg compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 592872313efbSmrg linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 592972313efbSmrg path= 593072313efbSmrg fi 593172313efbSmrg fi 593272313efbSmrg ;; 593372313efbSmrg *) 593472313efbSmrg path="-L$absdir/$objdir" 593572313efbSmrg ;; 593672313efbSmrg esac 593772313efbSmrg else 593872313efbSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 593972313efbSmrg test -z "$libdir" && \ 594072313efbSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 594172313efbSmrg test "$absdir" != "$libdir" && \ 594272313efbSmrg func_warning "\`$deplib' seems to be moved" 594372313efbSmrg 594472313efbSmrg path="-L$absdir" 594572313efbSmrg fi 594672313efbSmrg ;; 594772313efbSmrg esac 594872313efbSmrg case " $deplibs " in 594972313efbSmrg *" $path "*) ;; 595072313efbSmrg *) deplibs="$path $deplibs" ;; 595172313efbSmrg esac 595272313efbSmrg done 595372313efbSmrg fi # link_all_deplibs != no 595472313efbSmrg fi # linkmode = lib 595572313efbSmrg done # for deplib in $libs 595672313efbSmrg if test "$pass" = link; then 595772313efbSmrg if test "$linkmode" = "prog"; then 595872313efbSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 595972313efbSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 596072313efbSmrg else 596172313efbSmrg compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 596272313efbSmrg fi 596372313efbSmrg fi 596472313efbSmrg dependency_libs="$newdependency_libs" 596572313efbSmrg if test "$pass" = dlpreopen; then 596672313efbSmrg # Link the dlpreopened libraries before other libraries 596772313efbSmrg for deplib in $save_deplibs; do 596872313efbSmrg deplibs="$deplib $deplibs" 596972313efbSmrg done 597072313efbSmrg fi 597172313efbSmrg if test "$pass" != dlopen; then 597272313efbSmrg if test "$pass" != conv; then 597372313efbSmrg # Make sure lib_search_path contains only unique directories. 597472313efbSmrg lib_search_path= 597572313efbSmrg for dir in $newlib_search_path; do 597672313efbSmrg case "$lib_search_path " in 597772313efbSmrg *" $dir "*) ;; 597872313efbSmrg *) lib_search_path="$lib_search_path $dir" ;; 597972313efbSmrg esac 598072313efbSmrg done 598172313efbSmrg newlib_search_path= 598272313efbSmrg fi 598372313efbSmrg 598472313efbSmrg if test "$linkmode,$pass" != "prog,link"; then 598572313efbSmrg vars="deplibs" 598672313efbSmrg else 598772313efbSmrg vars="compile_deplibs finalize_deplibs" 598872313efbSmrg fi 598972313efbSmrg for var in $vars dependency_libs; do 599072313efbSmrg # Add libraries to $var in reverse order 599172313efbSmrg eval tmp_libs=\"\$$var\" 599272313efbSmrg new_libs= 599372313efbSmrg for deplib in $tmp_libs; do 599472313efbSmrg # FIXME: Pedantically, this is the right thing to do, so 599572313efbSmrg # that some nasty dependency loop isn't accidentally 599672313efbSmrg # broken: 599772313efbSmrg #new_libs="$deplib $new_libs" 599872313efbSmrg # Pragmatically, this seems to cause very few problems in 599972313efbSmrg # practice: 600072313efbSmrg case $deplib in 600172313efbSmrg -L*) new_libs="$deplib $new_libs" ;; 600272313efbSmrg -R*) ;; 600372313efbSmrg *) 600472313efbSmrg # And here is the reason: when a library appears more 600572313efbSmrg # than once as an explicit dependence of a library, or 600672313efbSmrg # is implicitly linked in more than once by the 600772313efbSmrg # compiler, it is considered special, and multiple 600872313efbSmrg # occurrences thereof are not removed. Compare this 600972313efbSmrg # with having the same library being listed as a 601072313efbSmrg # dependency of multiple other libraries: in this case, 601172313efbSmrg # we know (pedantically, we assume) the library does not 601272313efbSmrg # need to be listed more than once, so we keep only the 601372313efbSmrg # last copy. This is not always right, but it is rare 601472313efbSmrg # enough that we require users that really mean to play 601572313efbSmrg # such unportable linking tricks to link the library 601672313efbSmrg # using -Wl,-lname, so that libtool does not consider it 601772313efbSmrg # for duplicate removal. 601872313efbSmrg case " $specialdeplibs " in 601972313efbSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 602072313efbSmrg *) 602172313efbSmrg case " $new_libs " in 602272313efbSmrg *" $deplib "*) ;; 602372313efbSmrg *) new_libs="$deplib $new_libs" ;; 602472313efbSmrg esac 602572313efbSmrg ;; 602672313efbSmrg esac 602772313efbSmrg ;; 602872313efbSmrg esac 602972313efbSmrg done 603072313efbSmrg tmp_libs= 603172313efbSmrg for deplib in $new_libs; do 603272313efbSmrg case $deplib in 603372313efbSmrg -L*) 603472313efbSmrg case " $tmp_libs " in 603572313efbSmrg *" $deplib "*) ;; 603672313efbSmrg *) tmp_libs="$tmp_libs $deplib" ;; 603772313efbSmrg esac 603872313efbSmrg ;; 603972313efbSmrg *) tmp_libs="$tmp_libs $deplib" ;; 604072313efbSmrg esac 604172313efbSmrg done 604272313efbSmrg eval $var=\"$tmp_libs\" 604372313efbSmrg done # for var 604472313efbSmrg fi 604572313efbSmrg # Last step: remove runtime libs from dependency_libs 604672313efbSmrg # (they stay in deplibs) 604772313efbSmrg tmp_libs= 604872313efbSmrg for i in $dependency_libs ; do 604972313efbSmrg case " $predeps $postdeps $compiler_lib_search_path " in 605072313efbSmrg *" $i "*) 605172313efbSmrg i="" 605272313efbSmrg ;; 605372313efbSmrg esac 605472313efbSmrg if test -n "$i" ; then 605572313efbSmrg tmp_libs="$tmp_libs $i" 605672313efbSmrg fi 605772313efbSmrg done 605872313efbSmrg dependency_libs=$tmp_libs 605972313efbSmrg done # for pass 606072313efbSmrg if test "$linkmode" = prog; then 606172313efbSmrg dlfiles="$newdlfiles" 606272313efbSmrg fi 606372313efbSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 606472313efbSmrg dlprefiles="$newdlprefiles" 606572313efbSmrg fi 606672313efbSmrg 606772313efbSmrg case $linkmode in 606872313efbSmrg oldlib) 606972313efbSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 607072313efbSmrg func_warning "\`-dlopen' is ignored for archives" 607172313efbSmrg fi 607272313efbSmrg 607372313efbSmrg case " $deplibs" in 607472313efbSmrg *\ -l* | *\ -L*) 607572313efbSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 607672313efbSmrg esac 607772313efbSmrg 607872313efbSmrg test -n "$rpath" && \ 607972313efbSmrg func_warning "\`-rpath' is ignored for archives" 608072313efbSmrg 608172313efbSmrg test -n "$xrpath" && \ 608272313efbSmrg func_warning "\`-R' is ignored for archives" 608372313efbSmrg 608472313efbSmrg test -n "$vinfo" && \ 608572313efbSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 608672313efbSmrg 608772313efbSmrg test -n "$release" && \ 608872313efbSmrg func_warning "\`-release' is ignored for archives" 608972313efbSmrg 609072313efbSmrg test -n "$export_symbols$export_symbols_regex" && \ 609172313efbSmrg func_warning "\`-export-symbols' is ignored for archives" 609272313efbSmrg 609372313efbSmrg # Now set the variables for building old libraries. 609472313efbSmrg build_libtool_libs=no 609572313efbSmrg oldlibs="$output" 609672313efbSmrg objs="$objs$old_deplibs" 609772313efbSmrg ;; 609872313efbSmrg 609972313efbSmrg lib) 610072313efbSmrg # Make sure we only generate libraries of the form `libNAME.la'. 610172313efbSmrg case $outputname in 610272313efbSmrg lib*) 610372313efbSmrg func_stripname 'lib' '.la' "$outputname" 610472313efbSmrg name=$func_stripname_result 610572313efbSmrg eval shared_ext=\"$shrext_cmds\" 610672313efbSmrg eval libname=\"$libname_spec\" 610772313efbSmrg ;; 610872313efbSmrg *) 610972313efbSmrg test "$module" = no && \ 611072313efbSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 611172313efbSmrg 611272313efbSmrg if test "$need_lib_prefix" != no; then 611372313efbSmrg # Add the "lib" prefix for modules if required 611472313efbSmrg func_stripname '' '.la' "$outputname" 611572313efbSmrg name=$func_stripname_result 611672313efbSmrg eval shared_ext=\"$shrext_cmds\" 611772313efbSmrg eval libname=\"$libname_spec\" 611872313efbSmrg else 611972313efbSmrg func_stripname '' '.la' "$outputname" 612072313efbSmrg libname=$func_stripname_result 612172313efbSmrg fi 612272313efbSmrg ;; 612372313efbSmrg esac 612472313efbSmrg 612572313efbSmrg if test -n "$objs"; then 612672313efbSmrg if test "$deplibs_check_method" != pass_all; then 612772313efbSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 612872313efbSmrg else 612972313efbSmrg $ECHO 613072313efbSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 613172313efbSmrg $ECHO "*** objects $objs is not portable!" 613272313efbSmrg libobjs="$libobjs $objs" 613372313efbSmrg fi 613472313efbSmrg fi 613572313efbSmrg 613672313efbSmrg test "$dlself" != no && \ 613772313efbSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 613872313efbSmrg 613972313efbSmrg set dummy $rpath 614072313efbSmrg shift 614172313efbSmrg test "$#" -gt 1 && \ 614272313efbSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 614372313efbSmrg 614472313efbSmrg install_libdir="$1" 614572313efbSmrg 614672313efbSmrg oldlibs= 614772313efbSmrg if test -z "$rpath"; then 614872313efbSmrg if test "$build_libtool_libs" = yes; then 614972313efbSmrg # Building a libtool convenience library. 615072313efbSmrg # Some compilers have problems with a `.al' extension so 615172313efbSmrg # convenience libraries should have the same extension an 615272313efbSmrg # archive normally would. 615372313efbSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 615472313efbSmrg build_libtool_libs=convenience 615572313efbSmrg build_old_libs=yes 615672313efbSmrg fi 615772313efbSmrg 615872313efbSmrg test -n "$vinfo" && \ 615972313efbSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 616072313efbSmrg 616172313efbSmrg test -n "$release" && \ 616272313efbSmrg func_warning "\`-release' is ignored for convenience libraries" 616372313efbSmrg else 616472313efbSmrg 616572313efbSmrg # Parse the version information argument. 616672313efbSmrg save_ifs="$IFS"; IFS=':' 616772313efbSmrg set dummy $vinfo 0 0 0 616872313efbSmrg shift 616972313efbSmrg IFS="$save_ifs" 617072313efbSmrg 617172313efbSmrg test -n "$7" && \ 617272313efbSmrg func_fatal_help "too many parameters to \`-version-info'" 617372313efbSmrg 617472313efbSmrg # convert absolute version numbers to libtool ages 617572313efbSmrg # this retains compatibility with .la files and attempts 617672313efbSmrg # to make the code below a bit more comprehensible 617772313efbSmrg 617872313efbSmrg case $vinfo_number in 617972313efbSmrg yes) 618072313efbSmrg number_major="$1" 618172313efbSmrg number_minor="$2" 618272313efbSmrg number_revision="$3" 618372313efbSmrg # 618472313efbSmrg # There are really only two kinds -- those that 618572313efbSmrg # use the current revision as the major version 618672313efbSmrg # and those that subtract age and use age as 618772313efbSmrg # a minor version. But, then there is irix 618872313efbSmrg # which has an extra 1 added just for fun 618972313efbSmrg # 619072313efbSmrg case $version_type in 619172313efbSmrg darwin|linux|osf|windows|none) 619272313efbSmrg func_arith $number_major + $number_minor 619372313efbSmrg current=$func_arith_result 619472313efbSmrg age="$number_minor" 619572313efbSmrg revision="$number_revision" 619672313efbSmrg ;; 619772313efbSmrg freebsd-aout|freebsd-elf|sunos) 619872313efbSmrg current="$number_major" 619972313efbSmrg revision="$number_minor" 620072313efbSmrg age="0" 620172313efbSmrg ;; 620272313efbSmrg irix|nonstopux) 620372313efbSmrg func_arith $number_major + $number_minor 620472313efbSmrg current=$func_arith_result 620572313efbSmrg age="$number_minor" 620672313efbSmrg revision="$number_minor" 620772313efbSmrg lt_irix_increment=no 620872313efbSmrg ;; 620972313efbSmrg esac 621072313efbSmrg ;; 621172313efbSmrg no) 621272313efbSmrg current="$1" 621372313efbSmrg revision="$2" 621472313efbSmrg age="$3" 621572313efbSmrg ;; 621672313efbSmrg esac 621772313efbSmrg 621872313efbSmrg # Check that each of the things are valid numbers. 621972313efbSmrg case $current in 622072313efbSmrg 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]) ;; 622172313efbSmrg *) 622272313efbSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 622372313efbSmrg func_fatal_error "\`$vinfo' is not valid version information" 622472313efbSmrg ;; 622572313efbSmrg esac 622672313efbSmrg 622772313efbSmrg case $revision in 622872313efbSmrg 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]) ;; 622972313efbSmrg *) 623072313efbSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 623172313efbSmrg func_fatal_error "\`$vinfo' is not valid version information" 623272313efbSmrg ;; 623372313efbSmrg esac 623472313efbSmrg 623572313efbSmrg case $age in 623672313efbSmrg 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]) ;; 623772313efbSmrg *) 623872313efbSmrg func_error "AGE \`$age' must be a nonnegative integer" 623972313efbSmrg func_fatal_error "\`$vinfo' is not valid version information" 624072313efbSmrg ;; 624172313efbSmrg esac 624272313efbSmrg 624372313efbSmrg if test "$age" -gt "$current"; then 624472313efbSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 624572313efbSmrg func_fatal_error "\`$vinfo' is not valid version information" 624672313efbSmrg fi 624772313efbSmrg 624872313efbSmrg # Calculate the version variables. 624972313efbSmrg major= 625072313efbSmrg versuffix= 625172313efbSmrg verstring= 625272313efbSmrg case $version_type in 625372313efbSmrg none) ;; 625472313efbSmrg 625572313efbSmrg darwin) 625672313efbSmrg # Like Linux, but with the current version available in 625772313efbSmrg # verstring for coding it into the library header 625872313efbSmrg func_arith $current - $age 625972313efbSmrg major=.$func_arith_result 626072313efbSmrg versuffix="$major.$age.$revision" 626172313efbSmrg # Darwin ld doesn't like 0 for these options... 626272313efbSmrg func_arith $current + 1 626372313efbSmrg minor_current=$func_arith_result 626472313efbSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 626572313efbSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 626672313efbSmrg ;; 626772313efbSmrg 626872313efbSmrg freebsd-aout) 626972313efbSmrg major=".$current" 627072313efbSmrg versuffix=".$current.$revision"; 627172313efbSmrg ;; 627272313efbSmrg 627372313efbSmrg freebsd-elf) 627472313efbSmrg major=".$current" 627572313efbSmrg versuffix=".$current" 627672313efbSmrg ;; 627772313efbSmrg 627872313efbSmrg irix | nonstopux) 627972313efbSmrg if test "X$lt_irix_increment" = "Xno"; then 628072313efbSmrg func_arith $current - $age 628172313efbSmrg else 628272313efbSmrg func_arith $current - $age + 1 628372313efbSmrg fi 628472313efbSmrg major=$func_arith_result 628572313efbSmrg 628672313efbSmrg case $version_type in 628772313efbSmrg nonstopux) verstring_prefix=nonstopux ;; 628872313efbSmrg *) verstring_prefix=sgi ;; 628972313efbSmrg esac 629072313efbSmrg verstring="$verstring_prefix$major.$revision" 629172313efbSmrg 629272313efbSmrg # Add in all the interfaces that we are compatible with. 629372313efbSmrg loop=$revision 629472313efbSmrg while test "$loop" -ne 0; do 629572313efbSmrg func_arith $revision - $loop 629672313efbSmrg iface=$func_arith_result 629772313efbSmrg func_arith $loop - 1 629872313efbSmrg loop=$func_arith_result 629972313efbSmrg verstring="$verstring_prefix$major.$iface:$verstring" 630072313efbSmrg done 630172313efbSmrg 630272313efbSmrg # Before this point, $major must not contain `.'. 630372313efbSmrg major=.$major 630472313efbSmrg versuffix="$major.$revision" 630572313efbSmrg ;; 630672313efbSmrg 630772313efbSmrg linux) 630872313efbSmrg func_arith $current - $age 630972313efbSmrg major=.$func_arith_result 631072313efbSmrg versuffix="$major.$age.$revision" 631172313efbSmrg ;; 631272313efbSmrg 631372313efbSmrg osf) 631472313efbSmrg func_arith $current - $age 631572313efbSmrg major=.$func_arith_result 631672313efbSmrg versuffix=".$current.$age.$revision" 631772313efbSmrg verstring="$current.$age.$revision" 631872313efbSmrg 631972313efbSmrg # Add in all the interfaces that we are compatible with. 632072313efbSmrg loop=$age 632172313efbSmrg while test "$loop" -ne 0; do 632272313efbSmrg func_arith $current - $loop 632372313efbSmrg iface=$func_arith_result 632472313efbSmrg func_arith $loop - 1 632572313efbSmrg loop=$func_arith_result 632672313efbSmrg verstring="$verstring:${iface}.0" 632772313efbSmrg done 632872313efbSmrg 632972313efbSmrg # Make executables depend on our current version. 633072313efbSmrg verstring="$verstring:${current}.0" 633172313efbSmrg ;; 633272313efbSmrg 633372313efbSmrg qnx) 633472313efbSmrg major=".$current" 633572313efbSmrg versuffix=".$current" 633672313efbSmrg ;; 633772313efbSmrg 633872313efbSmrg sunos) 633972313efbSmrg major=".$current" 634072313efbSmrg versuffix=".$current.$revision" 634172313efbSmrg ;; 634272313efbSmrg 634372313efbSmrg windows) 634472313efbSmrg # Use '-' rather than '.', since we only want one 634572313efbSmrg # extension on DOS 8.3 filesystems. 634672313efbSmrg func_arith $current - $age 634772313efbSmrg major=$func_arith_result 634872313efbSmrg versuffix="-$major" 634972313efbSmrg ;; 635072313efbSmrg 635172313efbSmrg *) 635272313efbSmrg func_fatal_configuration "unknown library version type \`$version_type'" 635372313efbSmrg ;; 635472313efbSmrg esac 635572313efbSmrg 635672313efbSmrg # Clear the version info if we defaulted, and they specified a release. 635772313efbSmrg if test -z "$vinfo" && test -n "$release"; then 635872313efbSmrg major= 635972313efbSmrg case $version_type in 636072313efbSmrg darwin) 636172313efbSmrg # we can't check for "0.0" in archive_cmds due to quoting 636272313efbSmrg # problems, so we reset it completely 636372313efbSmrg verstring= 636472313efbSmrg ;; 636572313efbSmrg *) 636672313efbSmrg verstring="0.0" 636772313efbSmrg ;; 636872313efbSmrg esac 636972313efbSmrg if test "$need_version" = no; then 637072313efbSmrg versuffix= 637172313efbSmrg else 637272313efbSmrg versuffix=".0.0" 637372313efbSmrg fi 637472313efbSmrg fi 637572313efbSmrg 637672313efbSmrg # Remove version info from name if versioning should be avoided 637772313efbSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 637872313efbSmrg major= 637972313efbSmrg versuffix= 638072313efbSmrg verstring="" 638172313efbSmrg fi 638272313efbSmrg 638372313efbSmrg # Check to see if the archive will have undefined symbols. 638472313efbSmrg if test "$allow_undefined" = yes; then 638572313efbSmrg if test "$allow_undefined_flag" = unsupported; then 638672313efbSmrg func_warning "undefined symbols not allowed in $host shared libraries" 638772313efbSmrg build_libtool_libs=no 638872313efbSmrg build_old_libs=yes 638972313efbSmrg fi 639072313efbSmrg else 639172313efbSmrg # Don't allow undefined symbols. 639272313efbSmrg allow_undefined_flag="$no_undefined_flag" 639372313efbSmrg fi 639472313efbSmrg 639572313efbSmrg fi 639672313efbSmrg 639772313efbSmrg func_generate_dlsyms "$libname" "$libname" "yes" 639872313efbSmrg libobjs="$libobjs $symfileobj" 639972313efbSmrg test "X$libobjs" = "X " && libobjs= 640072313efbSmrg 640172313efbSmrg if test "$mode" != relink; then 640272313efbSmrg # Remove our outputs, but don't remove object files since they 640372313efbSmrg # may have been created when compiling PIC objects. 640472313efbSmrg removelist= 640572313efbSmrg tempremovelist=`$ECHO "$output_objdir/*"` 640672313efbSmrg for p in $tempremovelist; do 640772313efbSmrg case $p in 640872313efbSmrg *.$objext | *.gcno) 640972313efbSmrg ;; 641072313efbSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 641172313efbSmrg if test "X$precious_files_regex" != "X"; then 641272313efbSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 641372313efbSmrg then 641472313efbSmrg continue 641572313efbSmrg fi 641672313efbSmrg fi 641772313efbSmrg removelist="$removelist $p" 641872313efbSmrg ;; 641972313efbSmrg *) ;; 642072313efbSmrg esac 642172313efbSmrg done 642272313efbSmrg test -n "$removelist" && \ 642372313efbSmrg func_show_eval "${RM}r \$removelist" 642472313efbSmrg fi 642572313efbSmrg 642672313efbSmrg # Now set the variables for building old libraries. 642772313efbSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 642872313efbSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 642972313efbSmrg 643072313efbSmrg # Transform .lo files to .o files. 643172313efbSmrg oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 643272313efbSmrg fi 643372313efbSmrg 643472313efbSmrg # Eliminate all temporary directories. 643572313efbSmrg #for path in $notinst_path; do 643672313efbSmrg # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 643772313efbSmrg # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 643872313efbSmrg # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 643972313efbSmrg #done 644072313efbSmrg 644172313efbSmrg if test -n "$xrpath"; then 644272313efbSmrg # If the user specified any rpath flags, then add them. 644372313efbSmrg temp_xrpath= 644472313efbSmrg for libdir in $xrpath; do 644572313efbSmrg temp_xrpath="$temp_xrpath -R$libdir" 644672313efbSmrg case "$finalize_rpath " in 644772313efbSmrg *" $libdir "*) ;; 644872313efbSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 644972313efbSmrg esac 645072313efbSmrg done 645172313efbSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 645272313efbSmrg dependency_libs="$temp_xrpath $dependency_libs" 645372313efbSmrg fi 645472313efbSmrg fi 645572313efbSmrg 645672313efbSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 645772313efbSmrg old_dlfiles="$dlfiles" 645872313efbSmrg dlfiles= 645972313efbSmrg for lib in $old_dlfiles; do 646072313efbSmrg case " $dlprefiles $dlfiles " in 646172313efbSmrg *" $lib "*) ;; 646272313efbSmrg *) dlfiles="$dlfiles $lib" ;; 646372313efbSmrg esac 646472313efbSmrg done 646572313efbSmrg 646672313efbSmrg # Make sure dlprefiles contains only unique files 646772313efbSmrg old_dlprefiles="$dlprefiles" 646872313efbSmrg dlprefiles= 646972313efbSmrg for lib in $old_dlprefiles; do 647072313efbSmrg case "$dlprefiles " in 647172313efbSmrg *" $lib "*) ;; 647272313efbSmrg *) dlprefiles="$dlprefiles $lib" ;; 647372313efbSmrg esac 647472313efbSmrg done 647572313efbSmrg 647672313efbSmrg if test "$build_libtool_libs" = yes; then 647772313efbSmrg if test -n "$rpath"; then 647872313efbSmrg case $host in 647972313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 648072313efbSmrg # these systems don't actually have a c library (as such)! 648172313efbSmrg ;; 648272313efbSmrg *-*-rhapsody* | *-*-darwin1.[012]) 648372313efbSmrg # Rhapsody C library is in the System framework 648472313efbSmrg deplibs="$deplibs System.ltframework" 648572313efbSmrg ;; 648672313efbSmrg *-*-netbsd*) 648772313efbSmrg # Don't link with libc until the a.out ld.so is fixed. 648872313efbSmrg ;; 648972313efbSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 649072313efbSmrg # Do not include libc due to us having libc/libc_r. 649172313efbSmrg ;; 649272313efbSmrg *-*-sco3.2v5* | *-*-sco5v6*) 649372313efbSmrg # Causes problems with __ctype 649472313efbSmrg ;; 649572313efbSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 649672313efbSmrg # Compiler inserts libc in the correct place for threads to work 649772313efbSmrg ;; 649872313efbSmrg *) 649972313efbSmrg # Add libc to deplibs on all other systems if necessary. 650072313efbSmrg if test "$build_libtool_need_lc" = "yes"; then 650172313efbSmrg deplibs="$deplibs -lc" 650272313efbSmrg fi 650372313efbSmrg ;; 650472313efbSmrg esac 650572313efbSmrg fi 650672313efbSmrg 650772313efbSmrg # Transform deplibs into only deplibs that can be linked in shared. 650872313efbSmrg name_save=$name 650972313efbSmrg libname_save=$libname 651072313efbSmrg release_save=$release 651172313efbSmrg versuffix_save=$versuffix 651272313efbSmrg major_save=$major 651372313efbSmrg # I'm not sure if I'm treating the release correctly. I think 651472313efbSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 651572313efbSmrg # add it in twice. Is that correct? 651672313efbSmrg release="" 651772313efbSmrg versuffix="" 651872313efbSmrg major="" 651972313efbSmrg newdeplibs= 652072313efbSmrg droppeddeps=no 652172313efbSmrg case $deplibs_check_method in 652272313efbSmrg pass_all) 652372313efbSmrg # Don't check for shared/static. Everything works. 652472313efbSmrg # This might be a little naive. We might want to check 652572313efbSmrg # whether the library exists or not. But this is on 652672313efbSmrg # osf3 & osf4 and I'm not really sure... Just 652772313efbSmrg # implementing what was already the behavior. 652872313efbSmrg newdeplibs=$deplibs 652972313efbSmrg ;; 653072313efbSmrg test_compile) 653172313efbSmrg # This code stresses the "libraries are programs" paradigm to its 653272313efbSmrg # limits. Maybe even breaks it. We compile a program, linking it 653372313efbSmrg # against the deplibs as a proxy for the library. Then we can check 653472313efbSmrg # whether they linked in statically or dynamically with ldd. 653572313efbSmrg $opt_dry_run || $RM conftest.c 653672313efbSmrg cat > conftest.c <<EOF 653772313efbSmrg int main() { return 0; } 653872313efbSmrgEOF 653972313efbSmrg $opt_dry_run || $RM conftest 654072313efbSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 654172313efbSmrg ldd_output=`ldd conftest` 654272313efbSmrg for i in $deplibs; do 654372313efbSmrg case $i in 654472313efbSmrg -l*) 654572313efbSmrg func_stripname -l '' "$i" 654672313efbSmrg name=$func_stripname_result 654772313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 654872313efbSmrg case " $predeps $postdeps " in 654972313efbSmrg *" $i "*) 655072313efbSmrg newdeplibs="$newdeplibs $i" 655172313efbSmrg i="" 655272313efbSmrg ;; 655372313efbSmrg esac 655472313efbSmrg fi 655572313efbSmrg if test -n "$i" ; then 655672313efbSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 655772313efbSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 655872313efbSmrg set dummy $deplib_matches; shift 655972313efbSmrg deplib_match=$1 656072313efbSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 656172313efbSmrg newdeplibs="$newdeplibs $i" 656272313efbSmrg else 656372313efbSmrg droppeddeps=yes 656472313efbSmrg $ECHO 656572313efbSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 656672313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 656772313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 656872313efbSmrg $ECHO "*** shared version of the library, which I believe you do not have" 656972313efbSmrg $ECHO "*** because a test_compile did reveal that the linker did not use it for" 657072313efbSmrg $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 657172313efbSmrg fi 657272313efbSmrg fi 657372313efbSmrg ;; 657472313efbSmrg *) 657572313efbSmrg newdeplibs="$newdeplibs $i" 657672313efbSmrg ;; 657772313efbSmrg esac 657872313efbSmrg done 657972313efbSmrg else 658072313efbSmrg # Error occurred in the first compile. Let's try to salvage 658172313efbSmrg # the situation: Compile a separate program for each library. 658272313efbSmrg for i in $deplibs; do 658372313efbSmrg case $i in 658472313efbSmrg -l*) 658572313efbSmrg func_stripname -l '' "$i" 658672313efbSmrg name=$func_stripname_result 658772313efbSmrg $opt_dry_run || $RM conftest 658872313efbSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 658972313efbSmrg ldd_output=`ldd conftest` 659072313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 659172313efbSmrg case " $predeps $postdeps " in 659272313efbSmrg *" $i "*) 659372313efbSmrg newdeplibs="$newdeplibs $i" 659472313efbSmrg i="" 659572313efbSmrg ;; 659672313efbSmrg esac 659772313efbSmrg fi 659872313efbSmrg if test -n "$i" ; then 659972313efbSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 660072313efbSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 660172313efbSmrg set dummy $deplib_matches; shift 660272313efbSmrg deplib_match=$1 660372313efbSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 660472313efbSmrg newdeplibs="$newdeplibs $i" 660572313efbSmrg else 660672313efbSmrg droppeddeps=yes 660772313efbSmrg $ECHO 660872313efbSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 660972313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 661072313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 661172313efbSmrg $ECHO "*** shared version of the library, which you do not appear to have" 661272313efbSmrg $ECHO "*** because a test_compile did reveal that the linker did not use this one" 661372313efbSmrg $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 661472313efbSmrg fi 661572313efbSmrg fi 661672313efbSmrg else 661772313efbSmrg droppeddeps=yes 661872313efbSmrg $ECHO 661972313efbSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 662072313efbSmrg $ECHO "*** make it link in! You will probably need to install it or some" 662172313efbSmrg $ECHO "*** library that it depends on before this library will be fully" 662272313efbSmrg $ECHO "*** functional. Installing it before continuing would be even better." 662372313efbSmrg fi 662472313efbSmrg ;; 662572313efbSmrg *) 662672313efbSmrg newdeplibs="$newdeplibs $i" 662772313efbSmrg ;; 662872313efbSmrg esac 662972313efbSmrg done 663072313efbSmrg fi 663172313efbSmrg ;; 663272313efbSmrg file_magic*) 663372313efbSmrg set dummy $deplibs_check_method; shift 663472313efbSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 663572313efbSmrg for a_deplib in $deplibs; do 663672313efbSmrg case $a_deplib in 663772313efbSmrg -l*) 663872313efbSmrg func_stripname -l '' "$a_deplib" 663972313efbSmrg name=$func_stripname_result 664072313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 664172313efbSmrg case " $predeps $postdeps " in 664272313efbSmrg *" $a_deplib "*) 664372313efbSmrg newdeplibs="$newdeplibs $a_deplib" 664472313efbSmrg a_deplib="" 664572313efbSmrg ;; 664672313efbSmrg esac 664772313efbSmrg fi 664872313efbSmrg if test -n "$a_deplib" ; then 664972313efbSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 665072313efbSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 665172313efbSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 665272313efbSmrg for potent_lib in $potential_libs; do 665372313efbSmrg # Follow soft links. 665472313efbSmrg if ls -lLd "$potent_lib" 2>/dev/null | 665572313efbSmrg $GREP " -> " >/dev/null; then 665672313efbSmrg continue 665772313efbSmrg fi 665872313efbSmrg # The statement above tries to avoid entering an 665972313efbSmrg # endless loop below, in case of cyclic links. 666072313efbSmrg # We might still enter an endless loop, since a link 666172313efbSmrg # loop can be closed while we follow links, 666272313efbSmrg # but so what? 666372313efbSmrg potlib="$potent_lib" 666472313efbSmrg while test -h "$potlib" 2>/dev/null; do 666572313efbSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 666672313efbSmrg case $potliblink in 666772313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 666872313efbSmrg *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 666972313efbSmrg esac 667072313efbSmrg done 667172313efbSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 667272313efbSmrg $SED -e 10q | 667372313efbSmrg $EGREP "$file_magic_regex" > /dev/null; then 667472313efbSmrg newdeplibs="$newdeplibs $a_deplib" 667572313efbSmrg a_deplib="" 667672313efbSmrg break 2 667772313efbSmrg fi 667872313efbSmrg done 667972313efbSmrg done 668072313efbSmrg fi 668172313efbSmrg if test -n "$a_deplib" ; then 668272313efbSmrg droppeddeps=yes 668372313efbSmrg $ECHO 668472313efbSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 668572313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 668672313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 668772313efbSmrg $ECHO "*** shared version of the library, which you do not appear to have" 668872313efbSmrg $ECHO "*** because I did check the linker path looking for a file starting" 668972313efbSmrg if test -z "$potlib" ; then 669072313efbSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 669172313efbSmrg else 669272313efbSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 669372313efbSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 669472313efbSmrg fi 669572313efbSmrg fi 669672313efbSmrg ;; 669772313efbSmrg *) 669872313efbSmrg # Add a -L argument. 669972313efbSmrg newdeplibs="$newdeplibs $a_deplib" 670072313efbSmrg ;; 670172313efbSmrg esac 670272313efbSmrg done # Gone through all deplibs. 670372313efbSmrg ;; 670472313efbSmrg match_pattern*) 670572313efbSmrg set dummy $deplibs_check_method; shift 670672313efbSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 670772313efbSmrg for a_deplib in $deplibs; do 670872313efbSmrg case $a_deplib in 670972313efbSmrg -l*) 671072313efbSmrg func_stripname -l '' "$a_deplib" 671172313efbSmrg name=$func_stripname_result 671272313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 671372313efbSmrg case " $predeps $postdeps " in 671472313efbSmrg *" $a_deplib "*) 671572313efbSmrg newdeplibs="$newdeplibs $a_deplib" 671672313efbSmrg a_deplib="" 671772313efbSmrg ;; 671872313efbSmrg esac 671972313efbSmrg fi 672072313efbSmrg if test -n "$a_deplib" ; then 672172313efbSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 672272313efbSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 672372313efbSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 672472313efbSmrg for potent_lib in $potential_libs; do 672572313efbSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 672672313efbSmrg if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 672772313efbSmrg $EGREP "$match_pattern_regex" > /dev/null; then 672872313efbSmrg newdeplibs="$newdeplibs $a_deplib" 672972313efbSmrg a_deplib="" 673072313efbSmrg break 2 673172313efbSmrg fi 673272313efbSmrg done 673372313efbSmrg done 673472313efbSmrg fi 673572313efbSmrg if test -n "$a_deplib" ; then 673672313efbSmrg droppeddeps=yes 673772313efbSmrg $ECHO 673872313efbSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 673972313efbSmrg $ECHO "*** I have the capability to make that library automatically link in when" 674072313efbSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 674172313efbSmrg $ECHO "*** shared version of the library, which you do not appear to have" 674272313efbSmrg $ECHO "*** because I did check the linker path looking for a file starting" 674372313efbSmrg if test -z "$potlib" ; then 674472313efbSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 674572313efbSmrg else 674672313efbSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 674772313efbSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 674872313efbSmrg fi 674972313efbSmrg fi 675072313efbSmrg ;; 675172313efbSmrg *) 675272313efbSmrg # Add a -L argument. 675372313efbSmrg newdeplibs="$newdeplibs $a_deplib" 675472313efbSmrg ;; 675572313efbSmrg esac 675672313efbSmrg done # Gone through all deplibs. 675772313efbSmrg ;; 675872313efbSmrg none | unknown | *) 675972313efbSmrg newdeplibs="" 676072313efbSmrg tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 676172313efbSmrg -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 676272313efbSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 676372313efbSmrg for i in $predeps $postdeps ; do 676472313efbSmrg # can't use Xsed below, because $i might contain '/' 676572313efbSmrg tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 676672313efbSmrg done 676772313efbSmrg fi 676872313efbSmrg if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 676972313efbSmrg $GREP . >/dev/null; then 677072313efbSmrg $ECHO 677172313efbSmrg if test "X$deplibs_check_method" = "Xnone"; then 677272313efbSmrg $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 677372313efbSmrg else 677472313efbSmrg $ECHO "*** Warning: inter-library dependencies are not known to be supported." 677572313efbSmrg fi 677672313efbSmrg $ECHO "*** All declared inter-library dependencies are being dropped." 677772313efbSmrg droppeddeps=yes 677872313efbSmrg fi 677972313efbSmrg ;; 678072313efbSmrg esac 678172313efbSmrg versuffix=$versuffix_save 678272313efbSmrg major=$major_save 678372313efbSmrg release=$release_save 678472313efbSmrg libname=$libname_save 678572313efbSmrg name=$name_save 678672313efbSmrg 678772313efbSmrg case $host in 678872313efbSmrg *-*-rhapsody* | *-*-darwin1.[012]) 678972313efbSmrg # On Rhapsody replace the C library with the System framework 679072313efbSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 679172313efbSmrg ;; 679272313efbSmrg esac 679372313efbSmrg 679472313efbSmrg if test "$droppeddeps" = yes; then 679572313efbSmrg if test "$module" = yes; then 679672313efbSmrg $ECHO 679772313efbSmrg $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 679872313efbSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 679972313efbSmrg $ECHO "*** a static module, that should work as long as the dlopening" 680072313efbSmrg $ECHO "*** application is linked with the -dlopen flag." 680172313efbSmrg if test -z "$global_symbol_pipe"; then 680272313efbSmrg $ECHO 680372313efbSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 680472313efbSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 680572313efbSmrg $ECHO "*** not find such a program. So, this module is probably useless." 680672313efbSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 680772313efbSmrg fi 680872313efbSmrg if test "$build_old_libs" = no; then 680972313efbSmrg oldlibs="$output_objdir/$libname.$libext" 681072313efbSmrg build_libtool_libs=module 681172313efbSmrg build_old_libs=yes 681272313efbSmrg else 681372313efbSmrg build_libtool_libs=no 681472313efbSmrg fi 681572313efbSmrg else 681672313efbSmrg $ECHO "*** The inter-library dependencies that have been dropped here will be" 681772313efbSmrg $ECHO "*** automatically added whenever a program is linked with this library" 681872313efbSmrg $ECHO "*** or is declared to -dlopen it." 681972313efbSmrg 682072313efbSmrg if test "$allow_undefined" = no; then 682172313efbSmrg $ECHO 682272313efbSmrg $ECHO "*** Since this library must not contain undefined symbols," 682372313efbSmrg $ECHO "*** because either the platform does not support them or" 682472313efbSmrg $ECHO "*** it was explicitly requested with -no-undefined," 682572313efbSmrg $ECHO "*** libtool will only create a static version of it." 682672313efbSmrg if test "$build_old_libs" = no; then 682772313efbSmrg oldlibs="$output_objdir/$libname.$libext" 682872313efbSmrg build_libtool_libs=module 682972313efbSmrg build_old_libs=yes 683072313efbSmrg else 683172313efbSmrg build_libtool_libs=no 683272313efbSmrg fi 683372313efbSmrg fi 683472313efbSmrg fi 683572313efbSmrg fi 683672313efbSmrg # Done checking deplibs! 683772313efbSmrg deplibs=$newdeplibs 683872313efbSmrg fi 683972313efbSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 684072313efbSmrg case $host in 684172313efbSmrg *-*-darwin*) 684272313efbSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 684372313efbSmrg new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 684472313efbSmrg deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 684572313efbSmrg ;; 684672313efbSmrg esac 684772313efbSmrg 684872313efbSmrg # move library search paths that coincide with paths to not yet 684972313efbSmrg # installed libraries to the beginning of the library search list 685072313efbSmrg new_libs= 685172313efbSmrg for path in $notinst_path; do 685272313efbSmrg case " $new_libs " in 685372313efbSmrg *" -L$path/$objdir "*) ;; 685472313efbSmrg *) 685572313efbSmrg case " $deplibs " in 685672313efbSmrg *" -L$path/$objdir "*) 685772313efbSmrg new_libs="$new_libs -L$path/$objdir" ;; 685872313efbSmrg esac 685972313efbSmrg ;; 686072313efbSmrg esac 686172313efbSmrg done 686272313efbSmrg for deplib in $deplibs; do 686372313efbSmrg case $deplib in 686472313efbSmrg -L*) 686572313efbSmrg case " $new_libs " in 686672313efbSmrg *" $deplib "*) ;; 686772313efbSmrg *) new_libs="$new_libs $deplib" ;; 686872313efbSmrg esac 686972313efbSmrg ;; 687072313efbSmrg *) new_libs="$new_libs $deplib" ;; 687172313efbSmrg esac 687272313efbSmrg done 687372313efbSmrg deplibs="$new_libs" 687472313efbSmrg 687572313efbSmrg # All the library-specific variables (install_libdir is set above). 687672313efbSmrg library_names= 687772313efbSmrg old_library= 687872313efbSmrg dlname= 687972313efbSmrg 688072313efbSmrg # Test again, we may have decided not to build it any more 688172313efbSmrg if test "$build_libtool_libs" = yes; then 688272313efbSmrg if test "$hardcode_into_libs" = yes; then 688372313efbSmrg # Hardcode the library paths 688472313efbSmrg hardcode_libdirs= 688572313efbSmrg dep_rpath= 688672313efbSmrg rpath="$finalize_rpath" 688772313efbSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 688872313efbSmrg for libdir in $rpath; do 688972313efbSmrg if test -n "$hardcode_libdir_flag_spec"; then 689072313efbSmrg if test -n "$hardcode_libdir_separator"; then 689172313efbSmrg if test -z "$hardcode_libdirs"; then 689272313efbSmrg hardcode_libdirs="$libdir" 689372313efbSmrg else 689472313efbSmrg # Just accumulate the unique libdirs. 689572313efbSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 689672313efbSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 689772313efbSmrg ;; 689872313efbSmrg *) 689972313efbSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 690072313efbSmrg ;; 690172313efbSmrg esac 690272313efbSmrg fi 690372313efbSmrg else 690472313efbSmrg eval flag=\"$hardcode_libdir_flag_spec\" 690572313efbSmrg dep_rpath="$dep_rpath $flag" 690672313efbSmrg fi 690772313efbSmrg elif test -n "$runpath_var"; then 690872313efbSmrg case "$perm_rpath " in 690972313efbSmrg *" $libdir "*) ;; 691072313efbSmrg *) perm_rpath="$perm_rpath $libdir" ;; 691172313efbSmrg esac 691272313efbSmrg fi 691372313efbSmrg done 691472313efbSmrg # Substitute the hardcoded libdirs into the rpath. 691572313efbSmrg if test -n "$hardcode_libdir_separator" && 691672313efbSmrg test -n "$hardcode_libdirs"; then 691772313efbSmrg libdir="$hardcode_libdirs" 691872313efbSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 691972313efbSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 692072313efbSmrg else 692172313efbSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 692272313efbSmrg fi 692372313efbSmrg fi 692472313efbSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 692572313efbSmrg # We should set the runpath_var. 692672313efbSmrg rpath= 692772313efbSmrg for dir in $perm_rpath; do 692872313efbSmrg rpath="$rpath$dir:" 692972313efbSmrg done 693072313efbSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 693172313efbSmrg fi 693272313efbSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 693372313efbSmrg fi 6934bdcaa8d0Smrg 693572313efbSmrg shlibpath="$finalize_shlibpath" 693672313efbSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 693772313efbSmrg if test -n "$shlibpath"; then 693872313efbSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 693972313efbSmrg fi 6940bdcaa8d0Smrg 694172313efbSmrg # Get the real and link names of the library. 694272313efbSmrg eval shared_ext=\"$shrext_cmds\" 694372313efbSmrg eval library_names=\"$library_names_spec\" 694472313efbSmrg set dummy $library_names 694572313efbSmrg shift 694672313efbSmrg realname="$1" 694772313efbSmrg shift 6948bdcaa8d0Smrg 694972313efbSmrg if test -n "$soname_spec"; then 695072313efbSmrg eval soname=\"$soname_spec\" 695172313efbSmrg else 695272313efbSmrg soname="$realname" 695372313efbSmrg fi 695472313efbSmrg if test -z "$dlname"; then 695572313efbSmrg dlname=$soname 695672313efbSmrg fi 6957bdcaa8d0Smrg 695872313efbSmrg lib="$output_objdir/$realname" 695972313efbSmrg linknames= 696072313efbSmrg for link 696172313efbSmrg do 696272313efbSmrg linknames="$linknames $link" 696372313efbSmrg done 6964bdcaa8d0Smrg 696572313efbSmrg # Use standard objects if they are pic 696672313efbSmrg test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 696772313efbSmrg test "X$libobjs" = "X " && libobjs= 6968bdcaa8d0Smrg 696972313efbSmrg delfiles= 697072313efbSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 697172313efbSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 697272313efbSmrg export_symbols="$output_objdir/$libname.uexp" 697372313efbSmrg delfiles="$delfiles $export_symbols" 697472313efbSmrg fi 6975bdcaa8d0Smrg 697672313efbSmrg orig_export_symbols= 697772313efbSmrg case $host_os in 697872313efbSmrg cygwin* | mingw* | cegcc*) 697972313efbSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 698072313efbSmrg # exporting using user supplied symfile 698172313efbSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 698272313efbSmrg # and it's NOT already a .def file. Must figure out 698372313efbSmrg # which of the given symbols are data symbols and tag 698472313efbSmrg # them as such. So, trigger use of export_symbols_cmds. 698572313efbSmrg # export_symbols gets reassigned inside the "prepare 698672313efbSmrg # the list of exported symbols" if statement, so the 698772313efbSmrg # include_expsyms logic still works. 698872313efbSmrg orig_export_symbols="$export_symbols" 698972313efbSmrg export_symbols= 699072313efbSmrg always_export_symbols=yes 699172313efbSmrg fi 699272313efbSmrg fi 699372313efbSmrg ;; 699472313efbSmrg esac 6995bdcaa8d0Smrg 699672313efbSmrg # Prepare the list of exported symbols 699772313efbSmrg if test -z "$export_symbols"; then 699872313efbSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 699972313efbSmrg func_verbose "generating symbol list for \`$libname.la'" 700072313efbSmrg export_symbols="$output_objdir/$libname.exp" 700172313efbSmrg $opt_dry_run || $RM $export_symbols 700272313efbSmrg cmds=$export_symbols_cmds 700372313efbSmrg save_ifs="$IFS"; IFS='~' 700472313efbSmrg for cmd in $cmds; do 700572313efbSmrg IFS="$save_ifs" 700672313efbSmrg eval cmd=\"$cmd\" 700772313efbSmrg func_len " $cmd" 700872313efbSmrg len=$func_len_result 700972313efbSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 701072313efbSmrg func_show_eval "$cmd" 'exit $?' 701172313efbSmrg skipped_export=false 701272313efbSmrg else 701372313efbSmrg # The command line is too long to execute in one step. 701472313efbSmrg func_verbose "using reloadable object file for export list..." 701572313efbSmrg skipped_export=: 701672313efbSmrg # Break out early, otherwise skipped_export may be 701772313efbSmrg # set to false by a later but shorter cmd. 701872313efbSmrg break 701972313efbSmrg fi 702072313efbSmrg done 702172313efbSmrg IFS="$save_ifs" 702272313efbSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 702372313efbSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 702472313efbSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 702572313efbSmrg fi 702672313efbSmrg fi 702772313efbSmrg fi 7028bdcaa8d0Smrg 702972313efbSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 703072313efbSmrg tmp_export_symbols="$export_symbols" 703172313efbSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 703272313efbSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 703372313efbSmrg fi 7034bdcaa8d0Smrg 703572313efbSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 703672313efbSmrg # The given exports_symbols file has to be filtered, so filter it. 703772313efbSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 703872313efbSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 703972313efbSmrg # 's' commands which not all seds can handle. GNU sed should be fine 704072313efbSmrg # though. Also, the filter scales superlinearly with the number of 704172313efbSmrg # global variables. join(1) would be nice here, but unfortunately 704272313efbSmrg # isn't a blessed tool. 704372313efbSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 704472313efbSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 704572313efbSmrg export_symbols=$output_objdir/$libname.def 704672313efbSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7047bdcaa8d0Smrg fi 7048bdcaa8d0Smrg 704972313efbSmrg tmp_deplibs= 705072313efbSmrg for test_deplib in $deplibs; do 705172313efbSmrg case " $convenience " in 705272313efbSmrg *" $test_deplib "*) ;; 705372313efbSmrg *) 705472313efbSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 705572313efbSmrg ;; 705672313efbSmrg esac 705772313efbSmrg done 705872313efbSmrg deplibs="$tmp_deplibs" 7059bdcaa8d0Smrg 706072313efbSmrg if test -n "$convenience"; then 706172313efbSmrg if test -n "$whole_archive_flag_spec" && 706272313efbSmrg test "$compiler_needs_object" = yes && 706372313efbSmrg test -z "$libobjs"; then 706472313efbSmrg # extract the archives, so we have objects to list. 706572313efbSmrg # TODO: could optimize this to just extract one archive. 706672313efbSmrg whole_archive_flag_spec= 706772313efbSmrg fi 706872313efbSmrg if test -n "$whole_archive_flag_spec"; then 706972313efbSmrg save_libobjs=$libobjs 707072313efbSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 707172313efbSmrg test "X$libobjs" = "X " && libobjs= 707272313efbSmrg else 707372313efbSmrg gentop="$output_objdir/${outputname}x" 707472313efbSmrg generated="$generated $gentop" 7075bdcaa8d0Smrg 707672313efbSmrg func_extract_archives $gentop $convenience 707772313efbSmrg libobjs="$libobjs $func_extract_archives_result" 707872313efbSmrg test "X$libobjs" = "X " && libobjs= 707972313efbSmrg fi 708072313efbSmrg fi 7081bdcaa8d0Smrg 708272313efbSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 708372313efbSmrg eval flag=\"$thread_safe_flag_spec\" 708472313efbSmrg linker_flags="$linker_flags $flag" 708572313efbSmrg fi 7086bdcaa8d0Smrg 708772313efbSmrg # Make a backup of the uninstalled library when relinking 708872313efbSmrg if test "$mode" = relink; then 708972313efbSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 7090bdcaa8d0Smrg fi 7091bdcaa8d0Smrg 709272313efbSmrg # Do each of the archive commands. 709372313efbSmrg if test "$module" = yes && test -n "$module_cmds" ; then 709472313efbSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 709572313efbSmrg eval test_cmds=\"$module_expsym_cmds\" 709672313efbSmrg cmds=$module_expsym_cmds 709772313efbSmrg else 709872313efbSmrg eval test_cmds=\"$module_cmds\" 709972313efbSmrg cmds=$module_cmds 710072313efbSmrg fi 710172313efbSmrg else 710272313efbSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 710372313efbSmrg eval test_cmds=\"$archive_expsym_cmds\" 710472313efbSmrg cmds=$archive_expsym_cmds 710572313efbSmrg else 710672313efbSmrg eval test_cmds=\"$archive_cmds\" 710772313efbSmrg cmds=$archive_cmds 710872313efbSmrg fi 7109bdcaa8d0Smrg fi 7110bdcaa8d0Smrg 711172313efbSmrg if test "X$skipped_export" != "X:" && 711272313efbSmrg func_len " $test_cmds" && 711372313efbSmrg len=$func_len_result && 711472313efbSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 711572313efbSmrg : 711672313efbSmrg else 711772313efbSmrg # The command line is too long to link in one step, link piecewise 711872313efbSmrg # or, if using GNU ld and skipped_export is not :, use a linker 711972313efbSmrg # script. 7120bdcaa8d0Smrg 712172313efbSmrg # Save the value of $output and $libobjs because we want to 712272313efbSmrg # use them later. If we have whole_archive_flag_spec, we 712372313efbSmrg # want to use save_libobjs as it was before 712472313efbSmrg # whole_archive_flag_spec was expanded, because we can't 712572313efbSmrg # assume the linker understands whole_archive_flag_spec. 712672313efbSmrg # This may have to be revisited, in case too many 712772313efbSmrg # convenience libraries get linked in and end up exceeding 712872313efbSmrg # the spec. 712972313efbSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 713072313efbSmrg save_libobjs=$libobjs 713172313efbSmrg fi 713272313efbSmrg save_output=$output 713372313efbSmrg output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 7134bdcaa8d0Smrg 713572313efbSmrg # Clear the reloadable object creation command queue and 713672313efbSmrg # initialize k to one. 713772313efbSmrg test_cmds= 713872313efbSmrg concat_cmds= 713972313efbSmrg objlist= 714072313efbSmrg last_robj= 714172313efbSmrg k=1 7142bdcaa8d0Smrg 714372313efbSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 714472313efbSmrg output=${output_objdir}/${output_la}.lnkscript 714572313efbSmrg func_verbose "creating GNU ld script: $output" 714672313efbSmrg $ECHO 'INPUT (' > $output 714772313efbSmrg for obj in $save_libobjs 714872313efbSmrg do 714972313efbSmrg $ECHO "$obj" >> $output 715072313efbSmrg done 715172313efbSmrg $ECHO ')' >> $output 715272313efbSmrg delfiles="$delfiles $output" 715372313efbSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 715472313efbSmrg output=${output_objdir}/${output_la}.lnk 715572313efbSmrg func_verbose "creating linker input file list: $output" 715672313efbSmrg : > $output 715772313efbSmrg set x $save_libobjs 715872313efbSmrg shift 715972313efbSmrg firstobj= 716072313efbSmrg if test "$compiler_needs_object" = yes; then 716172313efbSmrg firstobj="$1 " 716272313efbSmrg shift 716372313efbSmrg fi 716472313efbSmrg for obj 716572313efbSmrg do 716672313efbSmrg $ECHO "$obj" >> $output 716772313efbSmrg done 716872313efbSmrg delfiles="$delfiles $output" 716972313efbSmrg output=$firstobj\"$file_list_spec$output\" 717072313efbSmrg else 717172313efbSmrg if test -n "$save_libobjs"; then 717272313efbSmrg func_verbose "creating reloadable object files..." 717372313efbSmrg output=$output_objdir/$output_la-${k}.$objext 717472313efbSmrg eval test_cmds=\"$reload_cmds\" 717572313efbSmrg func_len " $test_cmds" 717672313efbSmrg len0=$func_len_result 717772313efbSmrg len=$len0 717872313efbSmrg 717972313efbSmrg # Loop over the list of objects to be linked. 718072313efbSmrg for obj in $save_libobjs 718172313efbSmrg do 718272313efbSmrg func_len " $obj" 718372313efbSmrg func_arith $len + $func_len_result 718472313efbSmrg len=$func_arith_result 718572313efbSmrg if test "X$objlist" = X || 718672313efbSmrg test "$len" -lt "$max_cmd_len"; then 718772313efbSmrg func_append objlist " $obj" 718872313efbSmrg else 718972313efbSmrg # The command $test_cmds is almost too long, add a 719072313efbSmrg # command to the queue. 719172313efbSmrg if test "$k" -eq 1 ; then 719272313efbSmrg # The first file doesn't have a previous command to add. 719372313efbSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 719472313efbSmrg else 719572313efbSmrg # All subsequent reloadable object files will link in 719672313efbSmrg # the last one created. 719772313efbSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 719872313efbSmrg fi 719972313efbSmrg last_robj=$output_objdir/$output_la-${k}.$objext 720072313efbSmrg func_arith $k + 1 720172313efbSmrg k=$func_arith_result 720272313efbSmrg output=$output_objdir/$output_la-${k}.$objext 720372313efbSmrg objlist=$obj 720472313efbSmrg func_len " $last_robj" 720572313efbSmrg func_arith $len0 + $func_len_result 720672313efbSmrg len=$func_arith_result 720772313efbSmrg fi 720872313efbSmrg done 720972313efbSmrg # Handle the remaining objects by creating one last 721072313efbSmrg # reloadable object file. All subsequent reloadable object 721172313efbSmrg # files will link in the last one created. 721272313efbSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 721372313efbSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 721472313efbSmrg if test -n "$last_robj"; then 721572313efbSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 721672313efbSmrg fi 721772313efbSmrg delfiles="$delfiles $output" 7218bdcaa8d0Smrg 721972313efbSmrg else 722072313efbSmrg output= 722172313efbSmrg fi 7222bdcaa8d0Smrg 722372313efbSmrg if ${skipped_export-false}; then 722472313efbSmrg func_verbose "generating symbol list for \`$libname.la'" 722572313efbSmrg export_symbols="$output_objdir/$libname.exp" 722672313efbSmrg $opt_dry_run || $RM $export_symbols 722772313efbSmrg libobjs=$output 722872313efbSmrg # Append the command to create the export file. 722972313efbSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 723072313efbSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 723172313efbSmrg if test -n "$last_robj"; then 723272313efbSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 723372313efbSmrg fi 723472313efbSmrg fi 7235bdcaa8d0Smrg 723672313efbSmrg test -n "$save_libobjs" && 723772313efbSmrg func_verbose "creating a temporary reloadable object file: $output" 7238bdcaa8d0Smrg 723972313efbSmrg # Loop through the commands generated above and execute them. 724072313efbSmrg save_ifs="$IFS"; IFS='~' 724172313efbSmrg for cmd in $concat_cmds; do 724272313efbSmrg IFS="$save_ifs" 724372313efbSmrg $opt_silent || { 724472313efbSmrg func_quote_for_expand "$cmd" 724572313efbSmrg eval "func_echo $func_quote_for_expand_result" 724672313efbSmrg } 724772313efbSmrg $opt_dry_run || eval "$cmd" || { 724872313efbSmrg lt_exit=$? 724972313efbSmrg 725072313efbSmrg # Restore the uninstalled library and exit 725172313efbSmrg if test "$mode" = relink; then 725272313efbSmrg ( cd "$output_objdir" && \ 725372313efbSmrg $RM "${realname}T" && \ 725472313efbSmrg $MV "${realname}U" "$realname" ) 725572313efbSmrg fi 7256bdcaa8d0Smrg 725772313efbSmrg exit $lt_exit 725872313efbSmrg } 725972313efbSmrg done 726072313efbSmrg IFS="$save_ifs" 726172313efbSmrg 726272313efbSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 726372313efbSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 726472313efbSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7265bdcaa8d0Smrg fi 7266bdcaa8d0Smrg fi 7267bdcaa8d0Smrg 726872313efbSmrg if ${skipped_export-false}; then 726972313efbSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 727072313efbSmrg tmp_export_symbols="$export_symbols" 727172313efbSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 727272313efbSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 727372313efbSmrg fi 7274bdcaa8d0Smrg 727572313efbSmrg if test -n "$orig_export_symbols"; then 727672313efbSmrg # The given exports_symbols file has to be filtered, so filter it. 727772313efbSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 727872313efbSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 727972313efbSmrg # 's' commands which not all seds can handle. GNU sed should be fine 728072313efbSmrg # though. Also, the filter scales superlinearly with the number of 728172313efbSmrg # global variables. join(1) would be nice here, but unfortunately 728272313efbSmrg # isn't a blessed tool. 728372313efbSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 728472313efbSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 728572313efbSmrg export_symbols=$output_objdir/$libname.def 728672313efbSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 728772313efbSmrg fi 728872313efbSmrg fi 7289bdcaa8d0Smrg 729072313efbSmrg libobjs=$output 729172313efbSmrg # Restore the value of output. 729272313efbSmrg output=$save_output 7293bdcaa8d0Smrg 729472313efbSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 729572313efbSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 729672313efbSmrg test "X$libobjs" = "X " && libobjs= 729772313efbSmrg fi 729872313efbSmrg # Expand the library linking commands again to reset the 729972313efbSmrg # value of $libobjs for piecewise linking. 730072313efbSmrg 730172313efbSmrg # Do each of the archive commands. 730272313efbSmrg if test "$module" = yes && test -n "$module_cmds" ; then 730372313efbSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 730472313efbSmrg cmds=$module_expsym_cmds 7305bdcaa8d0Smrg else 730672313efbSmrg cmds=$module_cmds 7307bdcaa8d0Smrg fi 7308bdcaa8d0Smrg else 730972313efbSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 731072313efbSmrg cmds=$archive_expsym_cmds 731172313efbSmrg else 731272313efbSmrg cmds=$archive_cmds 731372313efbSmrg fi 7314bdcaa8d0Smrg fi 7315bdcaa8d0Smrg fi 7316bdcaa8d0Smrg 731772313efbSmrg if test -n "$delfiles"; then 731872313efbSmrg # Append the command to remove temporary files to $cmds. 731972313efbSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 732072313efbSmrg fi 7321bdcaa8d0Smrg 732272313efbSmrg # Add any objects from preloaded convenience libraries 732372313efbSmrg if test -n "$dlprefiles"; then 732472313efbSmrg gentop="$output_objdir/${outputname}x" 732572313efbSmrg generated="$generated $gentop" 7326bdcaa8d0Smrg 732772313efbSmrg func_extract_archives $gentop $dlprefiles 732872313efbSmrg libobjs="$libobjs $func_extract_archives_result" 732972313efbSmrg test "X$libobjs" = "X " && libobjs= 7330bdcaa8d0Smrg fi 7331bdcaa8d0Smrg 733272313efbSmrg save_ifs="$IFS"; IFS='~' 733372313efbSmrg for cmd in $cmds; do 733472313efbSmrg IFS="$save_ifs" 733572313efbSmrg eval cmd=\"$cmd\" 733672313efbSmrg $opt_silent || { 733772313efbSmrg func_quote_for_expand "$cmd" 733872313efbSmrg eval "func_echo $func_quote_for_expand_result" 733972313efbSmrg } 734072313efbSmrg $opt_dry_run || eval "$cmd" || { 734172313efbSmrg lt_exit=$? 7342bdcaa8d0Smrg 734372313efbSmrg # Restore the uninstalled library and exit 734472313efbSmrg if test "$mode" = relink; then 734572313efbSmrg ( cd "$output_objdir" && \ 734672313efbSmrg $RM "${realname}T" && \ 734772313efbSmrg $MV "${realname}U" "$realname" ) 734872313efbSmrg fi 734972313efbSmrg 735072313efbSmrg exit $lt_exit 735172313efbSmrg } 735272313efbSmrg done 735372313efbSmrg IFS="$save_ifs" 735472313efbSmrg 735572313efbSmrg # Restore the uninstalled library and exit 735672313efbSmrg if test "$mode" = relink; then 735772313efbSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 735872313efbSmrg 735972313efbSmrg if test -n "$convenience"; then 736072313efbSmrg if test -z "$whole_archive_flag_spec"; then 736172313efbSmrg func_show_eval '${RM}r "$gentop"' 7362bdcaa8d0Smrg fi 7363bdcaa8d0Smrg fi 7364bdcaa8d0Smrg 736572313efbSmrg exit $EXIT_SUCCESS 736672313efbSmrg fi 7367bdcaa8d0Smrg 736872313efbSmrg # Create links to the real library. 736972313efbSmrg for linkname in $linknames; do 737072313efbSmrg if test "$realname" != "$linkname"; then 737172313efbSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 737272313efbSmrg fi 737372313efbSmrg done 737472313efbSmrg 737572313efbSmrg # If -module or -export-dynamic was specified, set the dlname. 737672313efbSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 737772313efbSmrg # On all known operating systems, these are identical. 737872313efbSmrg dlname="$soname" 737972313efbSmrg fi 738072313efbSmrg fi 738172313efbSmrg ;; 738272313efbSmrg 738372313efbSmrg obj) 738472313efbSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 738572313efbSmrg func_warning "\`-dlopen' is ignored for objects" 738672313efbSmrg fi 738772313efbSmrg 738872313efbSmrg case " $deplibs" in 738972313efbSmrg *\ -l* | *\ -L*) 739072313efbSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 739172313efbSmrg esac 739272313efbSmrg 739372313efbSmrg test -n "$rpath" && \ 739472313efbSmrg func_warning "\`-rpath' is ignored for objects" 739572313efbSmrg 739672313efbSmrg test -n "$xrpath" && \ 739772313efbSmrg func_warning "\`-R' is ignored for objects" 739872313efbSmrg 739972313efbSmrg test -n "$vinfo" && \ 740072313efbSmrg func_warning "\`-version-info' is ignored for objects" 740172313efbSmrg 740272313efbSmrg test -n "$release" && \ 740372313efbSmrg func_warning "\`-release' is ignored for objects" 740472313efbSmrg 740572313efbSmrg case $output in 740672313efbSmrg *.lo) 740772313efbSmrg test -n "$objs$old_deplibs" && \ 740872313efbSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 740972313efbSmrg 741072313efbSmrg libobj=$output 741172313efbSmrg func_lo2o "$libobj" 741272313efbSmrg obj=$func_lo2o_result 741372313efbSmrg ;; 741472313efbSmrg *) 741572313efbSmrg libobj= 741672313efbSmrg obj="$output" 741772313efbSmrg ;; 741872313efbSmrg esac 741972313efbSmrg 742072313efbSmrg # Delete the old objects. 742172313efbSmrg $opt_dry_run || $RM $obj $libobj 742272313efbSmrg 742372313efbSmrg # Objects from convenience libraries. This assumes 742472313efbSmrg # single-version convenience libraries. Whenever we create 742572313efbSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 742672313efbSmrg # the extraction. 742772313efbSmrg reload_conv_objs= 742872313efbSmrg gentop= 742972313efbSmrg # reload_cmds runs $LD directly, so let us get rid of 743072313efbSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 743172313efbSmrg # turning comma into space.. 743272313efbSmrg wl= 743372313efbSmrg 743472313efbSmrg if test -n "$convenience"; then 743572313efbSmrg if test -n "$whole_archive_flag_spec"; then 743672313efbSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 743772313efbSmrg reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 743872313efbSmrg else 743972313efbSmrg gentop="$output_objdir/${obj}x" 744072313efbSmrg generated="$generated $gentop" 744172313efbSmrg 744272313efbSmrg func_extract_archives $gentop $convenience 744372313efbSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 744472313efbSmrg fi 744572313efbSmrg fi 7446bdcaa8d0Smrg 744772313efbSmrg # Create the old-style object. 744872313efbSmrg 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 7449bdcaa8d0Smrg 745072313efbSmrg output="$obj" 745172313efbSmrg func_execute_cmds "$reload_cmds" 'exit $?' 7452bdcaa8d0Smrg 745372313efbSmrg # Exit if we aren't doing a library object file. 745472313efbSmrg if test -z "$libobj"; then 745572313efbSmrg if test -n "$gentop"; then 745672313efbSmrg func_show_eval '${RM}r "$gentop"' 745772313efbSmrg fi 7458bdcaa8d0Smrg 745972313efbSmrg exit $EXIT_SUCCESS 746072313efbSmrg fi 7461bdcaa8d0Smrg 746272313efbSmrg if test "$build_libtool_libs" != yes; then 746372313efbSmrg if test -n "$gentop"; then 746472313efbSmrg func_show_eval '${RM}r "$gentop"' 746572313efbSmrg fi 7466bdcaa8d0Smrg 746772313efbSmrg # Create an invalid libtool object if no PIC, so that we don't 746872313efbSmrg # accidentally link it into a program. 746972313efbSmrg # $show "echo timestamp > $libobj" 747072313efbSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 747172313efbSmrg exit $EXIT_SUCCESS 747272313efbSmrg fi 7473bdcaa8d0Smrg 747472313efbSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 747572313efbSmrg # Only do commands if we really have different PIC objects. 747672313efbSmrg reload_objs="$libobjs $reload_conv_objs" 747772313efbSmrg output="$libobj" 747872313efbSmrg func_execute_cmds "$reload_cmds" 'exit $?' 7479bdcaa8d0Smrg fi 7480bdcaa8d0Smrg 748172313efbSmrg if test -n "$gentop"; then 748272313efbSmrg func_show_eval '${RM}r "$gentop"' 748372313efbSmrg fi 7484bdcaa8d0Smrg 748572313efbSmrg exit $EXIT_SUCCESS 748672313efbSmrg ;; 7487bdcaa8d0Smrg 748872313efbSmrg prog) 748972313efbSmrg case $host in 749072313efbSmrg *cygwin*) func_stripname '' '.exe' "$output" 749172313efbSmrg output=$func_stripname_result.exe;; 7492bdcaa8d0Smrg esac 749372313efbSmrg test -n "$vinfo" && \ 749472313efbSmrg func_warning "\`-version-info' is ignored for programs" 7495bdcaa8d0Smrg 749672313efbSmrg test -n "$release" && \ 749772313efbSmrg func_warning "\`-release' is ignored for programs" 7498bdcaa8d0Smrg 749972313efbSmrg test "$preload" = yes \ 750072313efbSmrg && test "$dlopen_support" = unknown \ 750172313efbSmrg && test "$dlopen_self" = unknown \ 750272313efbSmrg && test "$dlopen_self_static" = unknown && \ 750372313efbSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 7504bdcaa8d0Smrg 750572313efbSmrg case $host in 750672313efbSmrg *-*-rhapsody* | *-*-darwin1.[012]) 750772313efbSmrg # On Rhapsody replace the C library is the System framework 750872313efbSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 750972313efbSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 7510bdcaa8d0Smrg ;; 7511bdcaa8d0Smrg esac 7512bdcaa8d0Smrg 751372313efbSmrg case $host in 751472313efbSmrg *-*-darwin*) 751572313efbSmrg # Don't allow lazy linking, it breaks C++ global constructors 751672313efbSmrg # But is supposedly fixed on 10.4 or later (yay!). 751772313efbSmrg if test "$tagname" = CXX ; then 751872313efbSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 751972313efbSmrg 10.[0123]) 752072313efbSmrg compile_command="$compile_command ${wl}-bind_at_load" 752172313efbSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 752272313efbSmrg ;; 752372313efbSmrg esac 752472313efbSmrg fi 752572313efbSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 752672313efbSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 752772313efbSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7528bdcaa8d0Smrg ;; 7529bdcaa8d0Smrg esac 7530bdcaa8d0Smrg 7531bdcaa8d0Smrg 753272313efbSmrg # move library search paths that coincide with paths to not yet 753372313efbSmrg # installed libraries to the beginning of the library search list 753472313efbSmrg new_libs= 753572313efbSmrg for path in $notinst_path; do 753672313efbSmrg case " $new_libs " in 753772313efbSmrg *" -L$path/$objdir "*) ;; 7538bdcaa8d0Smrg *) 753972313efbSmrg case " $compile_deplibs " in 754072313efbSmrg *" -L$path/$objdir "*) 754172313efbSmrg new_libs="$new_libs -L$path/$objdir" ;; 754272313efbSmrg esac 7543bdcaa8d0Smrg ;; 7544bdcaa8d0Smrg esac 7545bdcaa8d0Smrg done 754672313efbSmrg for deplib in $compile_deplibs; do 754772313efbSmrg case $deplib in 754872313efbSmrg -L*) 754972313efbSmrg case " $new_libs " in 755072313efbSmrg *" $deplib "*) ;; 755172313efbSmrg *) new_libs="$new_libs $deplib" ;; 755272313efbSmrg esac 755372313efbSmrg ;; 755472313efbSmrg *) new_libs="$new_libs $deplib" ;; 755572313efbSmrg esac 755672313efbSmrg done 755772313efbSmrg compile_deplibs="$new_libs" 7558bdcaa8d0Smrg 7559bdcaa8d0Smrg 756072313efbSmrg compile_command="$compile_command $compile_deplibs" 756172313efbSmrg finalize_command="$finalize_command $finalize_deplibs" 7562bdcaa8d0Smrg 756372313efbSmrg if test -n "$rpath$xrpath"; then 756472313efbSmrg # If the user specified any rpath flags, then add them. 756572313efbSmrg for libdir in $rpath $xrpath; do 756672313efbSmrg # This is the magic to use -rpath. 756772313efbSmrg case "$finalize_rpath " in 756872313efbSmrg *" $libdir "*) ;; 756972313efbSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 757072313efbSmrg esac 757172313efbSmrg done 757272313efbSmrg fi 7573bdcaa8d0Smrg 757472313efbSmrg # Now hardcode the library paths 757572313efbSmrg rpath= 757672313efbSmrg hardcode_libdirs= 757772313efbSmrg for libdir in $compile_rpath $finalize_rpath; do 757872313efbSmrg if test -n "$hardcode_libdir_flag_spec"; then 757972313efbSmrg if test -n "$hardcode_libdir_separator"; then 758072313efbSmrg if test -z "$hardcode_libdirs"; then 758172313efbSmrg hardcode_libdirs="$libdir" 758272313efbSmrg else 758372313efbSmrg # Just accumulate the unique libdirs. 758472313efbSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 758572313efbSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 758672313efbSmrg ;; 758772313efbSmrg *) 758872313efbSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 758972313efbSmrg ;; 759072313efbSmrg esac 759172313efbSmrg fi 759272313efbSmrg else 759372313efbSmrg eval flag=\"$hardcode_libdir_flag_spec\" 759472313efbSmrg rpath="$rpath $flag" 759572313efbSmrg fi 759672313efbSmrg elif test -n "$runpath_var"; then 759772313efbSmrg case "$perm_rpath " in 7598bdcaa8d0Smrg *" $libdir "*) ;; 759972313efbSmrg *) perm_rpath="$perm_rpath $libdir" ;; 7600bdcaa8d0Smrg esac 760172313efbSmrg fi 760272313efbSmrg case $host in 760372313efbSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 760472313efbSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 760572313efbSmrg case :$dllsearchpath: in 760672313efbSmrg *":$libdir:"*) ;; 760772313efbSmrg ::) dllsearchpath=$libdir;; 760872313efbSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 760972313efbSmrg esac 761072313efbSmrg case :$dllsearchpath: in 761172313efbSmrg *":$testbindir:"*) ;; 761272313efbSmrg ::) dllsearchpath=$testbindir;; 761372313efbSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 761472313efbSmrg esac 761572313efbSmrg ;; 761672313efbSmrg esac 761772313efbSmrg done 761872313efbSmrg # Substitute the hardcoded libdirs into the rpath. 761972313efbSmrg if test -n "$hardcode_libdir_separator" && 762072313efbSmrg test -n "$hardcode_libdirs"; then 762172313efbSmrg libdir="$hardcode_libdirs" 762272313efbSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 762372313efbSmrg fi 762472313efbSmrg compile_rpath="$rpath" 762572313efbSmrg 762672313efbSmrg rpath= 762772313efbSmrg hardcode_libdirs= 762872313efbSmrg for libdir in $finalize_rpath; do 762972313efbSmrg if test -n "$hardcode_libdir_flag_spec"; then 763072313efbSmrg if test -n "$hardcode_libdir_separator"; then 763172313efbSmrg if test -z "$hardcode_libdirs"; then 763272313efbSmrg hardcode_libdirs="$libdir" 763372313efbSmrg else 763472313efbSmrg # Just accumulate the unique libdirs. 763572313efbSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 763672313efbSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 763772313efbSmrg ;; 763872313efbSmrg *) 763972313efbSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 764072313efbSmrg ;; 764172313efbSmrg esac 764272313efbSmrg fi 764372313efbSmrg else 764472313efbSmrg eval flag=\"$hardcode_libdir_flag_spec\" 764572313efbSmrg rpath="$rpath $flag" 764672313efbSmrg fi 764772313efbSmrg elif test -n "$runpath_var"; then 764872313efbSmrg case "$finalize_perm_rpath " in 7649bdcaa8d0Smrg *" $libdir "*) ;; 765072313efbSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 7651bdcaa8d0Smrg esac 7652bdcaa8d0Smrg fi 765372313efbSmrg done 765472313efbSmrg # Substitute the hardcoded libdirs into the rpath. 765572313efbSmrg if test -n "$hardcode_libdir_separator" && 765672313efbSmrg test -n "$hardcode_libdirs"; then 765772313efbSmrg libdir="$hardcode_libdirs" 765872313efbSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 765972313efbSmrg fi 766072313efbSmrg finalize_rpath="$rpath" 7661bdcaa8d0Smrg 766272313efbSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 766372313efbSmrg # Transform all the library objects into standard objects. 766472313efbSmrg compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 766572313efbSmrg finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 766672313efbSmrg fi 7667bdcaa8d0Smrg 766872313efbSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 7669bdcaa8d0Smrg 767072313efbSmrg # template prelinking step 767172313efbSmrg if test -n "$prelink_cmds"; then 767272313efbSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 767372313efbSmrg fi 7674bdcaa8d0Smrg 767572313efbSmrg wrappers_required=yes 767672313efbSmrg case $host in 767772313efbSmrg *cygwin* | *mingw* ) 767872313efbSmrg if test "$build_libtool_libs" != yes; then 767972313efbSmrg wrappers_required=no 768072313efbSmrg fi 768172313efbSmrg ;; 768272313efbSmrg *cegcc) 768372313efbSmrg # Disable wrappers for cegcc, we are cross compiling anyway. 768472313efbSmrg wrappers_required=no 768572313efbSmrg ;; 768672313efbSmrg *) 768772313efbSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 768872313efbSmrg wrappers_required=no 768972313efbSmrg fi 769072313efbSmrg ;; 769172313efbSmrg esac 769272313efbSmrg if test "$wrappers_required" = no; then 769372313efbSmrg # Replace the output file specification. 769472313efbSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 769572313efbSmrg link_command="$compile_command$compile_rpath" 7696bdcaa8d0Smrg 769772313efbSmrg # We have no uninstalled library dependencies, so finalize right now. 769872313efbSmrg exit_status=0 769972313efbSmrg func_show_eval "$link_command" 'exit_status=$?' 7700bdcaa8d0Smrg 770172313efbSmrg # Delete the generated files. 770272313efbSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 770372313efbSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 770472313efbSmrg fi 7705bdcaa8d0Smrg 770672313efbSmrg exit $exit_status 770772313efbSmrg fi 7708bdcaa8d0Smrg 770972313efbSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 771072313efbSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 771172313efbSmrg fi 771272313efbSmrg if test -n "$finalize_shlibpath"; then 771372313efbSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 771472313efbSmrg fi 7715bdcaa8d0Smrg 771672313efbSmrg compile_var= 771772313efbSmrg finalize_var= 771872313efbSmrg if test -n "$runpath_var"; then 771972313efbSmrg if test -n "$perm_rpath"; then 772072313efbSmrg # We should set the runpath_var. 772172313efbSmrg rpath= 772272313efbSmrg for dir in $perm_rpath; do 772372313efbSmrg rpath="$rpath$dir:" 7724bdcaa8d0Smrg done 772572313efbSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 7726bdcaa8d0Smrg fi 772772313efbSmrg if test -n "$finalize_perm_rpath"; then 772872313efbSmrg # We should set the runpath_var. 772972313efbSmrg rpath= 773072313efbSmrg for dir in $finalize_perm_rpath; do 773172313efbSmrg rpath="$rpath$dir:" 773272313efbSmrg done 773372313efbSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 773472313efbSmrg fi 773572313efbSmrg fi 7736bdcaa8d0Smrg 773772313efbSmrg if test "$no_install" = yes; then 773872313efbSmrg # We don't need to create a wrapper script. 773972313efbSmrg link_command="$compile_var$compile_command$compile_rpath" 774072313efbSmrg # Replace the output file specification. 774172313efbSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 774272313efbSmrg # Delete the old output file. 774372313efbSmrg $opt_dry_run || $RM $output 774472313efbSmrg # Link the executable and exit 774572313efbSmrg func_show_eval "$link_command" 'exit $?' 774672313efbSmrg exit $EXIT_SUCCESS 774772313efbSmrg fi 7748bdcaa8d0Smrg 774972313efbSmrg if test "$hardcode_action" = relink; then 775072313efbSmrg # Fast installation is not supported 775172313efbSmrg link_command="$compile_var$compile_command$compile_rpath" 775272313efbSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 7753bdcaa8d0Smrg 775472313efbSmrg func_warning "this platform does not like uninstalled shared libraries" 775572313efbSmrg func_warning "\`$output' will be relinked during installation" 775672313efbSmrg else 775772313efbSmrg if test "$fast_install" != no; then 775872313efbSmrg link_command="$finalize_var$compile_command$finalize_rpath" 775972313efbSmrg if test "$fast_install" = yes; then 776072313efbSmrg relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 776172313efbSmrg else 776272313efbSmrg # fast_install is set to needless 776372313efbSmrg relink_command= 776472313efbSmrg fi 7765bdcaa8d0Smrg else 776672313efbSmrg link_command="$compile_var$compile_command$compile_rpath" 776772313efbSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 7768bdcaa8d0Smrg fi 776972313efbSmrg fi 7770bdcaa8d0Smrg 777172313efbSmrg # Replace the output file specification. 777272313efbSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 7773bdcaa8d0Smrg 777472313efbSmrg # Delete the old output files. 777572313efbSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 7776bdcaa8d0Smrg 777772313efbSmrg func_show_eval "$link_command" 'exit $?' 7778bdcaa8d0Smrg 777972313efbSmrg # Now create the wrapper script. 778072313efbSmrg func_verbose "creating $output" 7781bdcaa8d0Smrg 778272313efbSmrg # Quote the relink command for shipping. 778372313efbSmrg if test -n "$relink_command"; then 778472313efbSmrg # Preserve any variables that may affect compiler behavior 778572313efbSmrg for var in $variables_saved_for_relink; do 778672313efbSmrg if eval test -z \"\${$var+set}\"; then 778772313efbSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 778872313efbSmrg elif eval var_value=\$$var; test -z "$var_value"; then 778972313efbSmrg relink_command="$var=; export $var; $relink_command" 779072313efbSmrg else 779172313efbSmrg func_quote_for_eval "$var_value" 779272313efbSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 779372313efbSmrg fi 779472313efbSmrg done 779572313efbSmrg relink_command="(cd `pwd`; $relink_command)" 779672313efbSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 779772313efbSmrg fi 7798bdcaa8d0Smrg 779972313efbSmrg # Quote $ECHO for shipping. 780072313efbSmrg if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 780172313efbSmrg case $progpath in 780272313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 780372313efbSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 7804bdcaa8d0Smrg esac 780572313efbSmrg qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 780672313efbSmrg else 780772313efbSmrg qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 780872313efbSmrg fi 7809bdcaa8d0Smrg 781072313efbSmrg # Only actually do things if not in dry run mode. 781172313efbSmrg $opt_dry_run || { 781272313efbSmrg # win32 will think the script is a binary if it has 781372313efbSmrg # a .exe suffix, so we strip it off here. 781472313efbSmrg case $output in 781572313efbSmrg *.exe) func_stripname '' '.exe' "$output" 781672313efbSmrg output=$func_stripname_result ;; 781772313efbSmrg esac 781872313efbSmrg # test for cygwin because mv fails w/o .exe extensions 7819bdcaa8d0Smrg case $host in 782072313efbSmrg *cygwin*) 782172313efbSmrg exeext=.exe 782272313efbSmrg func_stripname '' '.exe' "$outputname" 782372313efbSmrg outputname=$func_stripname_result ;; 782472313efbSmrg *) exeext= ;; 7825bdcaa8d0Smrg esac 782672313efbSmrg case $host in 782772313efbSmrg *cygwin* | *mingw* ) 782872313efbSmrg func_dirname_and_basename "$output" "" "." 782972313efbSmrg output_name=$func_basename_result 783072313efbSmrg output_path=$func_dirname_result 783172313efbSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 783272313efbSmrg cwrapper="$output_path/$output_name.exe" 783372313efbSmrg $RM $cwrappersource $cwrapper 783472313efbSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 783572313efbSmrg 783672313efbSmrg func_emit_cwrapperexe_src > $cwrappersource 783772313efbSmrg 783872313efbSmrg # The wrapper executable is built using the $host compiler, 783972313efbSmrg # because it contains $host paths and files. If cross- 784072313efbSmrg # compiling, it, like the target executable, must be 784172313efbSmrg # executed on the $host or under an emulation environment. 784272313efbSmrg $opt_dry_run || { 784372313efbSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 784472313efbSmrg $STRIP $cwrapper 784572313efbSmrg } 7846bdcaa8d0Smrg 784772313efbSmrg # Now, create the wrapper script for func_source use: 784872313efbSmrg func_ltwrapper_scriptname $cwrapper 784972313efbSmrg $RM $func_ltwrapper_scriptname_result 785072313efbSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 785172313efbSmrg $opt_dry_run || { 785272313efbSmrg # note: this script will not be executed, so do not chmod. 785372313efbSmrg if test "x$build" = "x$host" ; then 785472313efbSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 7855bdcaa8d0Smrg else 785672313efbSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 7857bdcaa8d0Smrg fi 785872313efbSmrg } 785972313efbSmrg ;; 786072313efbSmrg * ) 786172313efbSmrg $RM $output 786272313efbSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 7863bdcaa8d0Smrg 786472313efbSmrg func_emit_wrapper no > $output 786572313efbSmrg chmod +x $output 7866bdcaa8d0Smrg ;; 7867bdcaa8d0Smrg esac 786872313efbSmrg } 786972313efbSmrg exit $EXIT_SUCCESS 787072313efbSmrg ;; 787172313efbSmrg esac 7872bdcaa8d0Smrg 787372313efbSmrg # See if we need to build an old-fashioned archive. 787472313efbSmrg for oldlib in $oldlibs; do 7875bdcaa8d0Smrg 787672313efbSmrg if test "$build_libtool_libs" = convenience; then 787772313efbSmrg oldobjs="$libobjs_save $symfileobj" 787872313efbSmrg addlibs="$convenience" 787972313efbSmrg build_libtool_libs=no 788072313efbSmrg else 788172313efbSmrg if test "$build_libtool_libs" = module; then 788272313efbSmrg oldobjs="$libobjs_save" 788372313efbSmrg build_libtool_libs=no 788472313efbSmrg else 788572313efbSmrg oldobjs="$old_deplibs $non_pic_objects" 788672313efbSmrg if test "$preload" = yes && test -f "$symfileobj"; then 788772313efbSmrg oldobjs="$oldobjs $symfileobj" 788872313efbSmrg fi 788972313efbSmrg fi 789072313efbSmrg addlibs="$old_convenience" 7891bdcaa8d0Smrg fi 7892bdcaa8d0Smrg 789372313efbSmrg if test -n "$addlibs"; then 789472313efbSmrg gentop="$output_objdir/${outputname}x" 789572313efbSmrg generated="$generated $gentop" 7896bdcaa8d0Smrg 789772313efbSmrg func_extract_archives $gentop $addlibs 789872313efbSmrg oldobjs="$oldobjs $func_extract_archives_result" 789972313efbSmrg fi 7900bdcaa8d0Smrg 790172313efbSmrg # Do each command in the archive commands. 790272313efbSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 790372313efbSmrg cmds=$old_archive_from_new_cmds 790472313efbSmrg else 7905bdcaa8d0Smrg 790672313efbSmrg # Add any objects from preloaded convenience libraries 790772313efbSmrg if test -n "$dlprefiles"; then 790872313efbSmrg gentop="$output_objdir/${outputname}x" 790972313efbSmrg generated="$generated $gentop" 7910bdcaa8d0Smrg 791172313efbSmrg func_extract_archives $gentop $dlprefiles 791272313efbSmrg oldobjs="$oldobjs $func_extract_archives_result" 791372313efbSmrg fi 7914bdcaa8d0Smrg 791572313efbSmrg # POSIX demands no paths to be encoded in archives. We have 791672313efbSmrg # to avoid creating archives with duplicate basenames if we 791772313efbSmrg # might have to extract them afterwards, e.g., when creating a 791872313efbSmrg # static archive out of a convenience library, or when linking 791972313efbSmrg # the entirety of a libtool archive into another (currently 792072313efbSmrg # not supported by libtool). 792172313efbSmrg if (for obj in $oldobjs 792272313efbSmrg do 792372313efbSmrg func_basename "$obj" 792472313efbSmrg $ECHO "$func_basename_result" 792572313efbSmrg done | sort | sort -uc >/dev/null 2>&1); then 792672313efbSmrg : 792772313efbSmrg else 792872313efbSmrg $ECHO "copying selected object files to avoid basename conflicts..." 792972313efbSmrg gentop="$output_objdir/${outputname}x" 793072313efbSmrg generated="$generated $gentop" 793172313efbSmrg func_mkdir_p "$gentop" 793272313efbSmrg save_oldobjs=$oldobjs 793372313efbSmrg oldobjs= 793472313efbSmrg counter=1 793572313efbSmrg for obj in $save_oldobjs 793672313efbSmrg do 793772313efbSmrg func_basename "$obj" 793872313efbSmrg objbase="$func_basename_result" 793972313efbSmrg case " $oldobjs " in 794072313efbSmrg " ") oldobjs=$obj ;; 794172313efbSmrg *[\ /]"$objbase "*) 794272313efbSmrg while :; do 794372313efbSmrg # Make sure we don't pick an alternate name that also 794472313efbSmrg # overlaps. 794572313efbSmrg newobj=lt$counter-$objbase 794672313efbSmrg func_arith $counter + 1 794772313efbSmrg counter=$func_arith_result 794872313efbSmrg case " $oldobjs " in 794972313efbSmrg *[\ /]"$newobj "*) ;; 795072313efbSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 795172313efbSmrg esac 795272313efbSmrg done 795372313efbSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 795472313efbSmrg oldobjs="$oldobjs $gentop/$newobj" 795572313efbSmrg ;; 795672313efbSmrg *) oldobjs="$oldobjs $obj" ;; 795772313efbSmrg esac 7958bdcaa8d0Smrg done 7959bdcaa8d0Smrg fi 796072313efbSmrg eval cmds=\"$old_archive_cmds\" 7961bdcaa8d0Smrg 796272313efbSmrg func_len " $cmds" 796372313efbSmrg len=$func_len_result 796472313efbSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 796572313efbSmrg cmds=$old_archive_cmds 796672313efbSmrg else 796772313efbSmrg # the command line is too long to link in one step, link in parts 796872313efbSmrg func_verbose "using piecewise archive linking..." 796972313efbSmrg save_RANLIB=$RANLIB 797072313efbSmrg RANLIB=: 797172313efbSmrg objlist= 797272313efbSmrg concat_cmds= 797372313efbSmrg save_oldobjs=$oldobjs 797472313efbSmrg oldobjs= 797572313efbSmrg # Is there a better way of finding the last object in the list? 797672313efbSmrg for obj in $save_oldobjs 797772313efbSmrg do 797872313efbSmrg last_oldobj=$obj 797972313efbSmrg done 798072313efbSmrg eval test_cmds=\"$old_archive_cmds\" 798172313efbSmrg func_len " $test_cmds" 798272313efbSmrg len0=$func_len_result 798372313efbSmrg len=$len0 798472313efbSmrg for obj in $save_oldobjs 798572313efbSmrg do 798672313efbSmrg func_len " $obj" 798772313efbSmrg func_arith $len + $func_len_result 798872313efbSmrg len=$func_arith_result 798972313efbSmrg func_append objlist " $obj" 799072313efbSmrg if test "$len" -lt "$max_cmd_len"; then 799172313efbSmrg : 799272313efbSmrg else 799372313efbSmrg # the above command should be used before it gets too long 799472313efbSmrg oldobjs=$objlist 799572313efbSmrg if test "$obj" = "$last_oldobj" ; then 799672313efbSmrg RANLIB=$save_RANLIB 799772313efbSmrg fi 799872313efbSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 799972313efbSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 800072313efbSmrg objlist= 800172313efbSmrg len=$len0 800272313efbSmrg fi 800372313efbSmrg done 800472313efbSmrg RANLIB=$save_RANLIB 800572313efbSmrg oldobjs=$objlist 800672313efbSmrg if test "X$oldobjs" = "X" ; then 800772313efbSmrg eval cmds=\"\$concat_cmds\" 800872313efbSmrg else 800972313efbSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 801072313efbSmrg fi 801172313efbSmrg fi 801272313efbSmrg fi 801372313efbSmrg func_execute_cmds "$cmds" 'exit $?' 8014bdcaa8d0Smrg done 8015bdcaa8d0Smrg 801672313efbSmrg test -n "$generated" && \ 801772313efbSmrg func_show_eval "${RM}r$generated" 8018bdcaa8d0Smrg 801972313efbSmrg # Now create the libtool archive. 802072313efbSmrg case $output in 802172313efbSmrg *.la) 802272313efbSmrg old_library= 802372313efbSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 802472313efbSmrg func_verbose "creating $output" 8025bdcaa8d0Smrg 802672313efbSmrg # Preserve any variables that may affect compiler behavior 802772313efbSmrg for var in $variables_saved_for_relink; do 802872313efbSmrg if eval test -z \"\${$var+set}\"; then 802972313efbSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 803072313efbSmrg elif eval var_value=\$$var; test -z "$var_value"; then 803172313efbSmrg relink_command="$var=; export $var; $relink_command" 8032bdcaa8d0Smrg else 803372313efbSmrg func_quote_for_eval "$var_value" 803472313efbSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 8035bdcaa8d0Smrg fi 803672313efbSmrg done 803772313efbSmrg # Quote the link command for shipping. 803872313efbSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 803972313efbSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 804072313efbSmrg if test "$hardcode_automatic" = yes ; then 804172313efbSmrg relink_command= 804272313efbSmrg fi 8043bdcaa8d0Smrg 804472313efbSmrg # Only create the output if not a dry run. 804572313efbSmrg $opt_dry_run || { 804672313efbSmrg for installed in no yes; do 804772313efbSmrg if test "$installed" = yes; then 804872313efbSmrg if test -z "$install_libdir"; then 804972313efbSmrg break 805072313efbSmrg fi 805172313efbSmrg output="$output_objdir/$outputname"i 805272313efbSmrg # Replace all uninstalled libtool libraries with the installed ones 805372313efbSmrg newdependency_libs= 805472313efbSmrg for deplib in $dependency_libs; do 805572313efbSmrg case $deplib in 805672313efbSmrg *.la) 805772313efbSmrg func_basename "$deplib" 805872313efbSmrg name="$func_basename_result" 805972313efbSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 806072313efbSmrg test -z "$libdir" && \ 806172313efbSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 806272313efbSmrg newdependency_libs="$newdependency_libs $libdir/$name" 806372313efbSmrg ;; 806472313efbSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 806572313efbSmrg esac 806672313efbSmrg done 806772313efbSmrg dependency_libs="$newdependency_libs" 806872313efbSmrg newdlfiles= 806972313efbSmrg 807072313efbSmrg for lib in $dlfiles; do 807172313efbSmrg case $lib in 807272313efbSmrg *.la) 807372313efbSmrg func_basename "$lib" 807472313efbSmrg name="$func_basename_result" 807572313efbSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 807672313efbSmrg test -z "$libdir" && \ 807772313efbSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 807872313efbSmrg newdlfiles="$newdlfiles $libdir/$name" 807972313efbSmrg ;; 808072313efbSmrg *) newdlfiles="$newdlfiles $lib" ;; 808172313efbSmrg esac 808272313efbSmrg done 808372313efbSmrg dlfiles="$newdlfiles" 808472313efbSmrg newdlprefiles= 808572313efbSmrg for lib in $dlprefiles; do 808672313efbSmrg case $lib in 808772313efbSmrg *.la) 808872313efbSmrg # Only pass preopened files to the pseudo-archive (for 808972313efbSmrg # eventual linking with the app. that links it) if we 809072313efbSmrg # didn't already link the preopened objects directly into 809172313efbSmrg # the library: 809272313efbSmrg func_basename "$lib" 809372313efbSmrg name="$func_basename_result" 809472313efbSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 809572313efbSmrg test -z "$libdir" && \ 809672313efbSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 809772313efbSmrg newdlprefiles="$newdlprefiles $libdir/$name" 809872313efbSmrg ;; 809972313efbSmrg esac 810072313efbSmrg done 810172313efbSmrg dlprefiles="$newdlprefiles" 810272313efbSmrg else 810372313efbSmrg newdlfiles= 810472313efbSmrg for lib in $dlfiles; do 810572313efbSmrg case $lib in 810672313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 810772313efbSmrg *) abs=`pwd`"/$lib" ;; 810872313efbSmrg esac 810972313efbSmrg newdlfiles="$newdlfiles $abs" 811072313efbSmrg done 811172313efbSmrg dlfiles="$newdlfiles" 811272313efbSmrg newdlprefiles= 811372313efbSmrg for lib in $dlprefiles; do 811472313efbSmrg case $lib in 811572313efbSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 811672313efbSmrg *) abs=`pwd`"/$lib" ;; 811772313efbSmrg esac 811872313efbSmrg newdlprefiles="$newdlprefiles $abs" 811972313efbSmrg done 812072313efbSmrg dlprefiles="$newdlprefiles" 812172313efbSmrg fi 812272313efbSmrg $RM $output 812372313efbSmrg # place dlname in correct position for cygwin 812472313efbSmrg tdlname=$dlname 812572313efbSmrg case $host,$output,$installed,$module,$dlname in 812672313efbSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 812772313efbSmrg esac 812872313efbSmrg $ECHO > $output "\ 812972313efbSmrg# $outputname - a libtool library file 813072313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 813172313efbSmrg# 813272313efbSmrg# Please DO NOT delete this file! 813372313efbSmrg# It is necessary for linking the library. 8134bdcaa8d0Smrg 813572313efbSmrg# The name that we can dlopen(3). 813672313efbSmrgdlname='$tdlname' 8137bdcaa8d0Smrg 813872313efbSmrg# Names of this library. 813972313efbSmrglibrary_names='$library_names' 8140bdcaa8d0Smrg 814172313efbSmrg# The name of the static archive. 814272313efbSmrgold_library='$old_library' 8143bdcaa8d0Smrg 814472313efbSmrg# Linker flags that can not go in dependency_libs. 814572313efbSmrginherited_linker_flags='$new_inherited_linker_flags' 8146bdcaa8d0Smrg 814772313efbSmrg# Libraries that this one depends upon. 814872313efbSmrgdependency_libs='$dependency_libs' 8149bdcaa8d0Smrg 815072313efbSmrg# Names of additional weak libraries provided by this library 815172313efbSmrgweak_library_names='$weak_libs' 8152bdcaa8d0Smrg 815372313efbSmrg# Version information for $libname. 815472313efbSmrgcurrent=$current 815572313efbSmrgage=$age 815672313efbSmrgrevision=$revision 8157bdcaa8d0Smrg 815872313efbSmrg# Is this an already installed library? 815972313efbSmrginstalled=$installed 8160bdcaa8d0Smrg 816172313efbSmrg# Should we warn about portability when linking against -modules? 816272313efbSmrgshouldnotlink=$module 8163bdcaa8d0Smrg 816472313efbSmrg# Files to dlopen/dlpreopen 816572313efbSmrgdlopen='$dlfiles' 816672313efbSmrgdlpreopen='$dlprefiles' 8167bdcaa8d0Smrg 816872313efbSmrg# Directory that this library needs to be installed in: 816972313efbSmrglibdir='$install_libdir'" 817072313efbSmrg if test "$installed" = no && test "$need_relink" = yes; then 817172313efbSmrg $ECHO >> $output "\ 817272313efbSmrgrelink_command=\"$relink_command\"" 817372313efbSmrg fi 817472313efbSmrg done 817572313efbSmrg } 8176bdcaa8d0Smrg 817772313efbSmrg # Do a symbolic link so that the libtool archive can be found in 817872313efbSmrg # LD_LIBRARY_PATH before the program is installed. 817972313efbSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 818072313efbSmrg ;; 818172313efbSmrg esac 818272313efbSmrg exit $EXIT_SUCCESS 818372313efbSmrg} 8184bdcaa8d0Smrg 818572313efbSmrg{ test "$mode" = link || test "$mode" = relink; } && 818672313efbSmrg func_mode_link ${1+"$@"} 8187bdcaa8d0Smrg 8188bdcaa8d0Smrg 818972313efbSmrg# func_mode_uninstall arg... 819072313efbSmrgfunc_mode_uninstall () 819172313efbSmrg{ 819272313efbSmrg $opt_debug 819372313efbSmrg RM="$nonopt" 8194bdcaa8d0Smrg files= 8195bdcaa8d0Smrg rmforce= 8196bdcaa8d0Smrg exit_status=0 8197bdcaa8d0Smrg 8198bdcaa8d0Smrg # This variable tells wrapper scripts just to set variables rather 8199bdcaa8d0Smrg # than running their programs. 8200bdcaa8d0Smrg libtool_install_magic="$magic" 8201bdcaa8d0Smrg 8202bdcaa8d0Smrg for arg 8203bdcaa8d0Smrg do 8204bdcaa8d0Smrg case $arg in 820572313efbSmrg -f) RM="$RM $arg"; rmforce=yes ;; 820672313efbSmrg -*) RM="$RM $arg" ;; 8207bdcaa8d0Smrg *) files="$files $arg" ;; 8208bdcaa8d0Smrg esac 8209bdcaa8d0Smrg done 8210bdcaa8d0Smrg 821172313efbSmrg test -z "$RM" && \ 821272313efbSmrg func_fatal_help "you must specify an RM program" 8213bdcaa8d0Smrg 8214bdcaa8d0Smrg rmdirs= 8215bdcaa8d0Smrg 8216bdcaa8d0Smrg origobjdir="$objdir" 8217bdcaa8d0Smrg for file in $files; do 821872313efbSmrg func_dirname "$file" "" "." 821972313efbSmrg dir="$func_dirname_result" 822072313efbSmrg if test "X$dir" = X.; then 8221bdcaa8d0Smrg objdir="$origobjdir" 8222bdcaa8d0Smrg else 8223bdcaa8d0Smrg objdir="$dir/$origobjdir" 8224bdcaa8d0Smrg fi 822572313efbSmrg func_basename "$file" 822672313efbSmrg name="$func_basename_result" 8227bdcaa8d0Smrg test "$mode" = uninstall && objdir="$dir" 8228bdcaa8d0Smrg 8229bdcaa8d0Smrg # Remember objdir for removal later, being careful to avoid duplicates 8230bdcaa8d0Smrg if test "$mode" = clean; then 8231bdcaa8d0Smrg case " $rmdirs " in 8232bdcaa8d0Smrg *" $objdir "*) ;; 8233bdcaa8d0Smrg *) rmdirs="$rmdirs $objdir" ;; 8234bdcaa8d0Smrg esac 8235bdcaa8d0Smrg fi 8236bdcaa8d0Smrg 8237bdcaa8d0Smrg # Don't error if the file doesn't exist and rm -f was used. 823872313efbSmrg if { test -L "$file"; } >/dev/null 2>&1 || 823972313efbSmrg { test -h "$file"; } >/dev/null 2>&1 || 824072313efbSmrg test -f "$file"; then 8241bdcaa8d0Smrg : 8242bdcaa8d0Smrg elif test -d "$file"; then 8243bdcaa8d0Smrg exit_status=1 8244bdcaa8d0Smrg continue 8245bdcaa8d0Smrg elif test "$rmforce" = yes; then 8246bdcaa8d0Smrg continue 8247bdcaa8d0Smrg fi 8248bdcaa8d0Smrg 8249bdcaa8d0Smrg rmfiles="$file" 8250bdcaa8d0Smrg 8251bdcaa8d0Smrg case $name in 8252bdcaa8d0Smrg *.la) 8253bdcaa8d0Smrg # Possibly a libtool archive, so verify it. 825472313efbSmrg if func_lalib_p "$file"; then 825572313efbSmrg func_source $dir/$name 8256bdcaa8d0Smrg 8257bdcaa8d0Smrg # Delete the libtool libraries and symlinks. 8258bdcaa8d0Smrg for n in $library_names; do 8259bdcaa8d0Smrg rmfiles="$rmfiles $objdir/$n" 8260bdcaa8d0Smrg done 8261bdcaa8d0Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 8262bdcaa8d0Smrg 8263bdcaa8d0Smrg case "$mode" in 8264bdcaa8d0Smrg clean) 8265bdcaa8d0Smrg case " $library_names " in 8266bdcaa8d0Smrg # " " in the beginning catches empty $dlname 8267bdcaa8d0Smrg *" $dlname "*) ;; 8268bdcaa8d0Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 8269bdcaa8d0Smrg esac 827072313efbSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 8271bdcaa8d0Smrg ;; 8272bdcaa8d0Smrg uninstall) 8273bdcaa8d0Smrg if test -n "$library_names"; then 8274bdcaa8d0Smrg # Do each command in the postuninstall commands. 827572313efbSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8276bdcaa8d0Smrg fi 8277bdcaa8d0Smrg 8278bdcaa8d0Smrg if test -n "$old_library"; then 8279bdcaa8d0Smrg # Do each command in the old_postuninstall commands. 828072313efbSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8281bdcaa8d0Smrg fi 8282bdcaa8d0Smrg # FIXME: should reinstall the best remaining shared library. 8283bdcaa8d0Smrg ;; 8284bdcaa8d0Smrg esac 8285bdcaa8d0Smrg fi 8286bdcaa8d0Smrg ;; 8287bdcaa8d0Smrg 8288bdcaa8d0Smrg *.lo) 8289bdcaa8d0Smrg # Possibly a libtool object, so verify it. 829072313efbSmrg if func_lalib_p "$file"; then 8291bdcaa8d0Smrg 8292bdcaa8d0Smrg # Read the .lo file 829372313efbSmrg func_source $dir/$name 8294bdcaa8d0Smrg 8295bdcaa8d0Smrg # Add PIC object to the list of files to remove. 829672313efbSmrg if test -n "$pic_object" && 829772313efbSmrg test "$pic_object" != none; then 8298bdcaa8d0Smrg rmfiles="$rmfiles $dir/$pic_object" 8299bdcaa8d0Smrg fi 8300bdcaa8d0Smrg 8301bdcaa8d0Smrg # Add non-PIC object to the list of files to remove. 830272313efbSmrg if test -n "$non_pic_object" && 830372313efbSmrg test "$non_pic_object" != none; then 8304bdcaa8d0Smrg rmfiles="$rmfiles $dir/$non_pic_object" 8305bdcaa8d0Smrg fi 8306bdcaa8d0Smrg fi 8307bdcaa8d0Smrg ;; 8308bdcaa8d0Smrg 8309bdcaa8d0Smrg *) 8310bdcaa8d0Smrg if test "$mode" = clean ; then 8311bdcaa8d0Smrg noexename=$name 8312bdcaa8d0Smrg case $file in 8313bdcaa8d0Smrg *.exe) 831472313efbSmrg func_stripname '' '.exe' "$file" 831572313efbSmrg file=$func_stripname_result 831672313efbSmrg func_stripname '' '.exe' "$name" 831772313efbSmrg noexename=$func_stripname_result 8318bdcaa8d0Smrg # $file with .exe has already been added to rmfiles, 8319bdcaa8d0Smrg # add $file without .exe 8320bdcaa8d0Smrg rmfiles="$rmfiles $file" 8321bdcaa8d0Smrg ;; 8322bdcaa8d0Smrg esac 8323bdcaa8d0Smrg # Do a test to see if this is a libtool program. 832472313efbSmrg if func_ltwrapper_p "$file"; then 832572313efbSmrg if func_ltwrapper_executable_p "$file"; then 832672313efbSmrg func_ltwrapper_scriptname "$file" 832772313efbSmrg relink_command= 832872313efbSmrg func_source $func_ltwrapper_scriptname_result 832972313efbSmrg rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 833072313efbSmrg else 833172313efbSmrg relink_command= 833272313efbSmrg func_source $dir/$noexename 833372313efbSmrg fi 8334bdcaa8d0Smrg 8335bdcaa8d0Smrg # note $name still contains .exe if it was in $file originally 8336bdcaa8d0Smrg # as does the version of $file that was added into $rmfiles 8337bdcaa8d0Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 8338bdcaa8d0Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 8339bdcaa8d0Smrg rmfiles="$rmfiles $objdir/lt-$name" 8340bdcaa8d0Smrg fi 8341bdcaa8d0Smrg if test "X$noexename" != "X$name" ; then 8342bdcaa8d0Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 8343bdcaa8d0Smrg fi 8344bdcaa8d0Smrg fi 8345bdcaa8d0Smrg fi 8346bdcaa8d0Smrg ;; 8347bdcaa8d0Smrg esac 834872313efbSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 8349bdcaa8d0Smrg done 8350bdcaa8d0Smrg objdir="$origobjdir" 8351bdcaa8d0Smrg 8352bdcaa8d0Smrg # Try to remove the ${objdir}s in the directories where we deleted files 8353bdcaa8d0Smrg for dir in $rmdirs; do 8354bdcaa8d0Smrg if test -d "$dir"; then 835572313efbSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 8356bdcaa8d0Smrg fi 8357bdcaa8d0Smrg done 8358bdcaa8d0Smrg 8359bdcaa8d0Smrg exit $exit_status 836072313efbSmrg} 8361bdcaa8d0Smrg 836272313efbSmrg{ test "$mode" = uninstall || test "$mode" = clean; } && 836372313efbSmrg func_mode_uninstall ${1+"$@"} 8364bdcaa8d0Smrg 836572313efbSmrgtest -z "$mode" && { 836672313efbSmrg help="$generic_help" 836772313efbSmrg func_fatal_help "you must specify a MODE" 836872313efbSmrg} 836972313efbSmrg 837072313efbSmrgtest -z "$exec_cmd" && \ 837172313efbSmrg func_fatal_help "invalid operation mode \`$mode'" 8372bdcaa8d0Smrg 8373bdcaa8d0Smrgif test -n "$exec_cmd"; then 837472313efbSmrg eval exec "$exec_cmd" 8375bdcaa8d0Smrg exit $EXIT_FAILURE 8376bdcaa8d0Smrgfi 8377bdcaa8d0Smrg 837872313efbSmrgexit $exit_status 8379bdcaa8d0Smrg 8380bdcaa8d0Smrg 8381bdcaa8d0Smrg# The TAGs below are defined such that we never get into a situation 8382bdcaa8d0Smrg# in which we disable both kinds of libraries. Given conflicting 8383bdcaa8d0Smrg# choices, we go for a static library, that is the most portable, 8384bdcaa8d0Smrg# since we can't tell whether shared libraries were disabled because 8385bdcaa8d0Smrg# the user asked for that or because the platform doesn't support 8386bdcaa8d0Smrg# them. This is particularly important on AIX, because we don't 8387bdcaa8d0Smrg# support having both static and shared libraries enabled at the same 8388bdcaa8d0Smrg# time on that platform, so we default to a shared-only configuration. 8389bdcaa8d0Smrg# If a disable-shared tag is given, we'll fallback to a static-only 8390bdcaa8d0Smrg# configuration. But we'll never go from static-only to shared-only. 8391bdcaa8d0Smrg 8392bdcaa8d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 839372313efbSmrgbuild_libtool_libs=no 839472313efbSmrgbuild_old_libs=yes 8395bdcaa8d0Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 8396bdcaa8d0Smrg 8397bdcaa8d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 839872313efbSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 8399bdcaa8d0Smrg# ### END LIBTOOL TAG CONFIG: disable-static 8400bdcaa8d0Smrg 8401bdcaa8d0Smrg# Local Variables: 8402bdcaa8d0Smrg# mode:shell-script 8403bdcaa8d0Smrg# sh-indentation:2 8404bdcaa8d0Smrg# End: 840572313efbSmrg# vi:sw=2 840672313efbSmrg 8407