1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated from ltmain.m4sh. 2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ltmain.sh (GNU libtool) 2.2.4 4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This is free software; see the source for copying conditions. There is NO 8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is free software; you can redistribute it and/or modify 11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it under the terms of the GNU General Public License as published by 12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the Free Software Foundation; either version 2 of the License, or 13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# (at your option) any later version. 14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a special exception to the GNU General Public License, 16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if you distribute this file as part of a program or library that 17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is built using GNU Libtool, you may include this file under the 18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# same distribution terms that you use for the rest of that program. 19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is distributed in the hope that it will be useful, but 21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# WITHOUT ANY WARRANTY; without even the implied warranty of 22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# General Public License for more details. 24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# You should have received a copy of the GNU General Public License 26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# along with GNU Libtool; see the file COPYING. If not, a copy 27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# or obtained by writing to the Free Software Foundation, Inc., 29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Usage: $progname [OPTION]... [MODE-ARG]... 32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Provide generalized library-building support services. 34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --config show all configuration variables 36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --debug enable verbose shell tracing 37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# -n, --dry-run display commands without modifying any files 38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --features display basic configuration information and exit 39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --mode=MODE use operation mode MODE 40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --preserve-dup-deps don't remove duplicate dependency libraries 41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --quiet, --silent don't print informational messages 42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --tag=TAG use configuration variables from tag TAG 43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# -v, --verbose print informational messages (default) 44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# --version print version information 45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# -h, --help print short or long help message 46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MODE must be one of the following: 48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# clean remove files from the build directory 50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# compile compile a source file into a libtool object 51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# execute automatically set library path, then run a program 52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# finish complete the installation of libtool libraries 53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# install install libraries or executables 54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# link create a library or an executable 55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# uninstall remove libraries from an installed directory 56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MODE-ARGS vary depending on the MODE. 58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# When reporting a bug, please describe a test case to reproduce it and 61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include the following information: 62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# host-triplet: $host 64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# shell: $SHELL 65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# compiler: $LTCC 66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# compiler flags: $LTCFLAGS 67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# linker: $LD (gnu? $with_gnu_ld) 68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $progname: (GNU libtool) 2.2.4 69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# automake: $automake_version 70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# autoconf: $autoconf_version 71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Report bugs to <bug-libtool@gnu.org>. 73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavillePROGRAM=ltmain.sh 75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavillePACKAGE=libtool 76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleVERSION=2.2.4 77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTIMESTAMP="" 78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepackage_revision=1.2976 79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible 81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville emulate sh 83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville NULLCMD=: 84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is contrary to our usage. Disable this feature. 86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alias -g '${1+"$@"}'='"$@"' 87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville setopt NO_GLOB_SUBST 88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64 92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh 93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# NLS nuisances: We save the old values to restore during execute mode. 95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Only set LANG and LC_ALL to C if already set. 96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# These must not be set unconditionally because not all systems understand 97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# e.g. LANG=C (notably SCO). 98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_user_locale= 99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_safe_locale= 100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledo 102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "if test \"\${$lt_var+set}\" = set; then 103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_$lt_var=\$$lt_var 104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_var=C 105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export $lt_var 106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledone 110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$lt_unset CDPATH 112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${CP="cp -f"} 118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${ECHO="echo"} 119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${EGREP="/usr/bin/grep -E"} 120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${FGREP="/usr/bin/grep -F"} 121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${GREP="/usr/bin/grep"} 122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${LN_S="ln -s"} 123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MAKE="make"} 124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MKDIR="mkdir"} 125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MV="mv -f"} 126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${RM="rm -f"} 127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${SED="/opt/local/bin/gsed"} 128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${Xsed="$SED -e 1s/^X//"} 130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables: 132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SUCCESS=0 133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_FAILURE=1 134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit_status=$EXIT_SUCCESS 138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure IFS has a sensible default 140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_nl=' 141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville' 142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIFS=" $lt_nl" 143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirname="s,/[^/]*$,," 145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebasename="s,^.*/,," 146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_dirname_and_basename file append nondir_replacement 148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# perform func_basename and func_dirname in a single function 149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# call: 150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# dirname: Compute the dirname of FILE. If nonempty, 151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# add APPEND to the result, otherwise set result 152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# to NONDIR_REPLACEMENT. 153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# value returned in "$func_dirname_result" 154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# basename: Compute filename of FILE. 155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# value retuned in "$func_basename_result" 156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Implementation must be kept synchronized with func_dirname 157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# and func_basename. For efficiency, we do not delegate to 158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# those functions but instead duplicate the functionality here. 159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename () 160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$func_dirname_result" = "X${1}"; then 164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_result="${3}" 165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_result="$func_dirname_result${2}" 167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated shell functions inserted here. 172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is ksh but when the shell is invoked as "sh" and the current value of 175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the _XPG environment variable is not equal to 1 (one), the special 176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# positional parameter $0, within a function call, is the name of the 177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# function. 178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprogpath="$0" 179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of this program: 181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# In the unlikely event $progname began with a '-', it would play havoc with 182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_echo (imagine progname=-n), so we prepend ./ in that case: 183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename "$progpath" 184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprogname=$func_basename_result 185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecase $progname in 186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) progname=./$progname ;; 187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleesac 188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure we have an absolute path for reexecution: 190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecase $progpath in 191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*|[A-Za-z]:\\*) ;; 192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\/]*) 193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=$func_dirname_result 194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=`cd "$progdir" && pwd` 195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progpath="$progdir/$progname" 196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_IFS="$IFS" 199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS=: 200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for progdir in $PATH; do 201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_IFS" 202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -x "$progdir/$progname" && break 203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_IFS" 205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$progdir" || progdir=`pwd` 206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progpath="$progdir/$progname" 207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleesac 209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting. It backslashifies 211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings. 212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleXsed="${SED}"' -e 1s/^X//' 213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='s/\([`"$\\]\)/\\\1/g' 214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Same as above, but do not quote variable references. 216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledouble_quote_subst='s/\(["`\\]\)/\\\1/g' 217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Re-`\' parameter expansions in output of double_quote_subst that were 219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in input to double_quote_subst, that '$' was protected from expansion. 221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Since each input `\' is now two `\'s, look for any number of runs of 222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs='\\' 224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs2='\\\\' 225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs4='\\\\\\\\' 226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledollar='\$' 227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_double_backslash="\ 228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/$bs4/&\\ 229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/g 230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^$bs2$dollar/$bs&/ 231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\n//g" 233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Standard options: 235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_dry_run=false 236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_help=false 237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_quiet=false 238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_verbose=false 239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_warning=: 240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_echo arg... 242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message, along with the current mode 243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# name if it has been set yet. 244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_echo () 245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$progname${mode+: }$mode: $*" 247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_verbose arg... 250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message in verbose mode only. 251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_verbose () 252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_verbose && func_echo ${1+"$@"} 254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A bug in bash halts the script if the last line of a function 256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # fails when set -e is in force, so we need another command to 257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # work around that: 258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_error arg... 262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error. 263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_error () 264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_warning arg... 269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed warning message to standard error. 270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_warning () 271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bash bug again: 275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_error arg... 279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, and exit. 280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_error () 281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_help arg... 287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by 288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a help hint, and exit. 289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_help () 290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "$help" 293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillehelp="Try \`$progname --help' for more information." ## default 295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_grep expression filename 298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Check whether EXPRESSION matches any line of FILENAME, without output. 299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_grep () 300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP "$1" "$2" >/dev/null 2>&1 302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mkdir_p directory-path 306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure the entire path to DIRECTORY-PATH is available. 307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mkdir_p () 308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_directory_path="$1" 310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dir_list= 311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Protect directory names starting with `-' 315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_directory_path in 316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) my_directory_path="./$my_directory_path" ;; 317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # While some portion of DIR does not yet exist... 320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test ! -d "$my_directory_path"; do 321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ...make a list in topmost first order. Use a colon delimited 322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # list incase some portion of path contains whitespace. 323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dir_list="$my_directory_path:$my_dir_list" 324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the last portion added has no slash in it, the list is done 326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_directory_path in */*) ;; *) break ;; esac 327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ...otherwise throw away the child directory and loop 329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_mkdir_p_IFS="$IFS"; IFS=':' 334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for my_dir in $my_dir_list; do 335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_mkdir_p_IFS" 336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # mkdir can fail with a `File exist' error if two processes 337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # try to create one of the directories concurrently. Don't 338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # stop in that case! 339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR "$my_dir" 2>/dev/null || : 340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_mkdir_p_IFS" 342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Bail out if we (or some other process) failed to create a directory. 344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$my_directory_path" || \ 345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "Failed to create \`$1'" 346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mktempdir [string] 351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make a temporary directory that won't clash with other running 352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libtool processes, and avoids race conditions if possible. If 353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# given, STRING is the basename for that directory. 354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mktempdir () 355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_template="${TMPDIR-/tmp}/${1-$progname}" 357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$opt_dry_run" = ":"; then 359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Return a directory name, but don't create it in dry-run mode 360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir="${my_template}-$$" 361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If mktemp works, use that first and foremost 364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -d "$my_tmpdir"; then 367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Failing that, at least try and use $RANDOM to avoid a race 368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir="${my_template}-${RANDOM-0}$$" 369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_mktempdir_umask=`umask` 371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville umask 0077 372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR "$my_tmpdir" 373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville umask $save_mktempdir_umask 374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If we're not in dry-run mode, bomb out on failure 377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$my_tmpdir" || \ 378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "X$my_tmpdir" | $Xsed 382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_eval arg 386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later. 387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is double-quoted, suitable for a subsequent eval, whereas 389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# which are still active within double quotes backslashified. 391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_eval () 392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\`\"\$]*) 395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_unquoted_result="$1" ;; 398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $func_quote_for_eval_unquoted_result in 401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing shell metacharacters to delay 402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # word splitting, command substitution and and variable 403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # expansion for a subsequent eval. 404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Many Bourne shells cannot handle close brackets correctly 405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # in scan sets, so we specify it separately. 406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_expand arg 416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later; same as above, 417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# but do not quote variable references. 418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_expand () 419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\`\"]*) 422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_arg=`$ECHO "X$1" | $Xsed \ 423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_arg="$1" ;; 426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_arg in 429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing shell metacharacters to delay 430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # word splitting and command substitution for a subsequent eval. 431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Many Bourne shells cannot handle close brackets correctly 432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # in scan sets, so we specify it separately. 433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_arg="\"$my_arg\"" 435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand_result="$my_arg" 439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval cmd [fail_exp] 443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it. 446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval () 447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_cmd="$1" 449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_fail_exp="${2-:}" 450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${opt_silent-false} || { 452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$my_cmd" 453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${opt_dry_run-false}; then :; else 457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$my_cmd" 458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_status=$? 459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$my_status" -eq 0; then :; else 460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "(exit $my_status); $my_fail_exp" 461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval_locale cmd [fail_exp] 467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it. Use the saved locale for evaluation. 470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval_locale () 471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_cmd="$1" 473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_fail_exp="${2-:}" 474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${opt_silent-false} || { 476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$my_cmd" 477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${opt_dry_run-false}; then :; else 481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$lt_user_locale 482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $my_cmd" 483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_status=$? 484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$lt_safe_locale" 485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$my_status" -eq 0; then :; else 486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "(exit $my_status); $my_fail_exp" 487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_version 496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo version message to standard output and exit. 497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_version () 498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }' < "$progpath" 505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_usage 509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo short help message to standard output and exit. 510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_usage () 511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n '/^# Usage:/,/# -h/ { 513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$progname/'$progname'/ 516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }' < "$progpath" 518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "run \`$progname --help | more' for full usage" 520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_help 524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo long help message to standard output and exit. 525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_help () 526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n '/^# Usage:/,/# Report bugs to/ { 528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$progname*'$progname'* 531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$host*'"$host"'* 532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$SHELL*'"$SHELL"'* 533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LTCC*'"$LTCC"'* 534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LTCFLAGS*'"$LTCFLAGS"'* 535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LD*'"$LD"'* 536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$with_gnu_ld/'"$with_gnu_ld"'/ 537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }' < "$progpath" 541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_missing_arg argname 545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error and set global 546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# exit_cmd. 547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_missing_arg () 548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "missing argument for $1" 550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_cmd=exit 551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit_cmd=: 554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Check that we have a working $ECHO. 560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test "X$1" = X--no-reexec; then 561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Discard the --no-reexec flag, and continue. 562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelif test "X$1" = X--fallback-echo; then 564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Avoid inline document here, it may be left over 565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Yippee, $ECHO works! 568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restart under the correct shell, and then maybe $ECHO will work. 571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec $SHELL "$progpath" --no-reexec ${1+"$@"} 572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test "X$1" = X--fallback-echo; then 575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # used as fallback echo 576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$* 579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic="%%%MAGIC variable%%%" 584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic_exe="%%%MAGIC EXE variable%%%" 585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables. 587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $mode is unset 588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenonopt= 589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexecute_dlfiles= 590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepreserve_args= 591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelo2o="s/\\.lo\$/.${objext}/" 592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleo2lo="s/\\.${objext}\$/.lo/" 593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_archives= 594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_serial=0 595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_dry_run=false 597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_duplicate_deps=false 598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_silent=false 599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_debug=: 600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If this variable is set in any of the actions, the command in it 602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will be execed at the end. This prevents here-documents from being 603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# left over by shells. 604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexec_cmd= 605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_configuration arg... 607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by 608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a configuration failure hint, and exit. 609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_configuration () 610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "See the $PACKAGE documentation for more information." 613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "Fatal configuration error." 614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_config 618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the configuration for all the tags in this script. 619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_config () 620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_begincf='^# ### BEGIN LIBTOOL' 622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_endcf='^# ### END LIBTOOL' 623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Default configuration. 625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now print the configurations for the tags. 628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tagname in $taglist; do 629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_features 636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the features supported by this script. 637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_features () 638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "host: $host" 640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "enable shared libraries" 642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "disable shared libraries" 644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "enable static libraries" 647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "disable static libraries" 649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_enable_tag tagname 655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Verify that TAGNAME is valid, and either flag an error and exit, or 656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable here. 658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_enable_tag () 659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Global variable: 661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tagname="$1" 662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sed_extractcf="/$re_begincf/,/$re_endcf/p" 666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Validate tagname. 668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $tagname in 669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[!-_A-Za-z0-9,/]*) 670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "invalid tag name: $tagname" 671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't test for the "default" C tag, as we know it's 675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # there but not specially marked. 676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $tagname in 677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC) ;; 678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville taglist="$taglist $tagname" 681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Evaluate the configuration. Be careful to quote the path 683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and the sed script, to avoid splitting on whitespace, but 684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # also don't use non-portable quotes within backquotes within 685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # quotes we have to do it in 2 steps: 686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$extractedcf" 688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "ignoring unknown tag $tagname" 690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Parse options once, thoroughly. This comes as soon as possible in 696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the script to make things like `libtool --version' happen quickly. 697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Shorthand for --mode=foo, only valid as the first argument 700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean|clea|cle|cl) 702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode clean ${1+"$@"}; shift 703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile|compil|compi|comp|com|co|c) 705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode compile ${1+"$@"}; shift 706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execute|execut|execu|exec|exe|ex|e) 708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode execute ${1+"$@"}; shift 709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finish|finis|fini|fin|fi|f) 711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode finish ${1+"$@"}; shift 712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install|instal|insta|inst|ins|in|i) 714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode install ${1+"$@"}; shift 715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link|lin|li|l) 717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode link ${1+"$@"}; shift 718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift; set dummy --mode uninstall ${1+"$@"}; shift 721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Parse non-mode specific arguments: 725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$#" -gt 0; do 726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt="$1" 727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $opt in 730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --config) func_config ;; 731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --debug) preserve_args="$preserve_args $opt" 733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_echo "enabling shell trace mode" 734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_debug='set -x' 735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execute_dlfiles="$execute_dlfiles $1" 740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --dry-run | -n) opt_dry_run=: ;; 744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --features) func_features ;; 745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --finish) mode="finish" ;; 746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Valid mode arguments: 750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean) ;; 751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile) ;; 752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execute) ;; 753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finish) ;; 754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install) ;; 755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link) ;; 756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink) ;; 757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall) ;; 758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Catch anything else as an error 760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) func_error "invalid argument for $opt" 761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_cmd=exit 762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville mode="$1" 767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --preserve-dup-deps) 771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_duplicate_deps=: ;; 772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --quiet|--silent) preserve_args="$preserve_args $opt" 774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_silent=: 775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --verbose| -v) preserve_args="$preserve_args $opt" 778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_silent=false 779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville preserve_args="$preserve_args $opt $1" 783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_enable_tag "$1" # tagname is set here 784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Separate optargs to long options: 788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen=*|--mode=*|--tag=*) 789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_opt_split "$opt" 790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -\?|-h) func_usage ;; 795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --help) opt_help=: ;; 796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville --version) func_version ;; 797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) func_fatal_help "unrecognized option \`$opt'" ;; 799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) nonopt="$opt" 801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* | *pw32*) 809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # don't eliminate duplications in $postdeps and $predeps 810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_duplicate_compiler_generated_deps=: 811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Having warned about all mis-specified options, bail out if 818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # anything was wrong. 819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $exit_cmd $EXIT_FAILURE 820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_check_version_match 823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Ensure that we are using m4 macros, and libtool script from the same 824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# release of libtool. 825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_check_version_match () 826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$package_revision" != "$macro_revision"; then 828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$VERSION" != "$macro_version"; then 829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$macro_version"; then 830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from an older release. 833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again. 835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again. 842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: but the definition of this LT_INIT comes from revision $macro_revision. 848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from revision $package_revision 849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: of $PACKAGE $VERSION and run autoconf again. 850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_MISMATCH 854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville## ----------- ## 859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville## Main. ## 860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville## ----------- ## 861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$opt_help || { 863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Sanity checks first: 864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_check_version_match 865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "not configured to build any kind of library" 868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$mode" && func_fatal_error "error: you must specify a MODE." 871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Darwin sucks 874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval std_shrext=\"$shrext_cmds\" 875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only execute mode is allowed to have -dlopen flags. 878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$execute_dlfiles" && test "$mode" != execute; then 879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "unrecognized option \`-dlopen'" 880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$help" 1>&2 881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Change the help message to a mode-specific one. 885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generic_help="$help" 886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville help="Try \`$progname --help --mode=$mode' for more information." 887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_p file 891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file. 892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_p () 895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -e 4q "$1" 2>/dev/null \ 897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_unsafe_p file 901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file. 902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function implements the same check as func_lalib_p without 903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# resorting to external programs. To this end, it redirects stdin and 904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# closes it afterwards, without saving the original file descriptor. 905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a safety measure, use it only where a negative result would be 906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# fatal anyway. Works if `file' does not exist. 907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_unsafe_p () 908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lalib_p=no 910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -r "$1" && exec 5<&0 <"$1"; then 911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lalib_p_l in 1 2 3 4 912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville read lalib_p_line 914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$lalib_p_line" in 915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec 0<&5 5<&- 919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$lalib_p" = yes 921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_script_p file 924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script 925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_script_p () 928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_p "$1" 930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_executable_p file 933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper executable 934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_executable_p () 937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_exec_suffix= 939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) ;; 941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) func_ltwrapper_exec_suffix=.exe ;; 942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_scriptname file 947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Assumes file is an ltwrapper_executable 948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# uses $file to determine the appropriate filename for a 949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# temporary ltwrapper_script. 950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_scriptname () 951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname_result="" 953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_executable_p "$1"; then 954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$1" "" "." 955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$func_basename_result" 956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_p file 961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script or wrapper executable 962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_p () 965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_execute_cmds commands fail_cmd 971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Execute tilde-delimited COMMANDS. 972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If FAIL_CMD is given, eval that upon failure. 973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FAIL_CMD may read-access the current command in variable CMD! 974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_execute_cmds () 975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs=$IFS; IFS='~' 978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $1; do 979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS=$save_ifs 980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmd=\"$cmd\" 981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$cmd" "${2-:}" 982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS=$save_ifs 984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_source file 988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Source FILE, adding directory component if necessary. 989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Note that it is not necessary on cygwin/mingw to append a dot to 990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior happens only for exec(3), not for open(2)! Also, sourcing 992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `FILE.' does not work on cygwin managed mounts. 993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_source () 994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville */* | *\\*) . "$1" ;; 998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) . "./$1" ;; 999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_infer_tag arg 1004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Infer tagged configuration to use if any are available and 1005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if one wasn't chosen via the "--tag" command line option. 1006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Only attempt this if the compiler in the base compile 1007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# command doesn't match the default compiler. 1008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# arg is usually of the form 'gcc ...' 1009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_infer_tag () 1010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$available_tags" && test -z "$tagname"; then 1013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted= 1014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $CC; do 1015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 1016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted="$CC_quoted $func_quote_for_eval_result" 1017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $@ in 1019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Blanks in the command may have been stripped by the calling shell, 1020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but not from the CC environment variable when configure was run. 1021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 1022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Blanks at the start of $base_compile will cause this to fail 1023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # if we don't check for them as well. 1024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for z in $available_tags; do 1026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Evaluate the configuration. 1028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted= 1030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $CC; do 1031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing other shell metacharacters. 1032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 1033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted="$CC_quoted $func_quote_for_eval_result" 1034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$@ " in 1036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 1037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The compiler in the base compile command matches 1038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the one in the tagged configuration. 1039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Assume this is the tagged configuration we want. 1040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tagname=$z 1041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 1042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If $tagname still isn't set, then no tagged configuration 1047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # was found and let the user know that the "--tag" command 1048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # line option must be used. 1049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$tagname"; then 1050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_echo "unable to infer tagged configuration" 1051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "specify a tag with \`--tag'" 1052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# else 1053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_verbose "using $tagname tagged configuration" 1054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_write_libtool_object output_name pic_name nonpic_name 1063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Create a libtool object file (analogous to a ".la" file), 1064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# but don't create it if we're doing a dry run. 1065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_write_libtool_object () 1066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville write_libobj=${1} 1068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 1069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville write_lobj=\'${2}\' 1070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville write_lobj=none 1072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 1075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville write_oldobj=\'${3}\' 1076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville write_oldobj=none 1078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 1081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >${write_libobj}T <<EOF 1082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $write_libobj - a libtool object file 1083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 1085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Please DO NOT delete this file! 1086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# It is necessary for linking the library. 1087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Name of the PIC object. 1089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepic_object=$write_lobj 1090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Name of the non-PIC object 1092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenon_pic_object=$write_oldobj 1093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 1095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "${write_libobj}T" "${write_libobj}" 1096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 1097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_compile arg... 1100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_compile () 1101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the compilation command and the source file. 1104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile= 1105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_opt=yes 1107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_output= 1108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj= 1110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville later= 1111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pie_flag= 1112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 1114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg_mode in 1116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg ) 1117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # do not "continue". Instead, add this to base_compile 1118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg="$arg" 1119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville target ) 1123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj="$arg" 1124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville normal ) 1129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Accept any command-line options. 1130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 1131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o) 1132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$libobj" && \ 1133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you cannot specify \`-o' more than once" 1134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=target 1135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -pie | -fpie | -fPIE) 1139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pie_flag="$pie_flag $arg" 1140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared | -static | -prefer-pic | -prefer-non-pic) 1144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville later="$later $arg" 1145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-suppress) 1149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_opt=no 1150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xcompiler) 1154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=arg # the next one goes into the "base_compile" arg list 1155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue # The current "srcfile" will either be retained or 1156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # replaced later. I would guess that would be a bug. 1157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wc,*) 1159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wc,' '' "$arg" 1160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 1161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg= 1162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 1163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $args; do 1164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 1165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 1166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg="$lastarg $func_quote_for_eval_result" 1167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 1169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$lastarg" 1170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg=$func_stripname_result 1171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the arguments to base_compile. 1173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile="$base_compile $lastarg" 1174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Accept the current argument as the source file. 1179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The previous "srcfile" becomes the current argument. 1180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 1181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg="$srcfile" 1182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcfile="$arg" 1183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $arg 1185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $arg_mode 1187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote the previous argument. 1189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$lastarg" 1190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile="$base_compile $func_quote_for_eval_result" 1191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for arg 1192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg_mode in 1194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg) 1195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you must specify an argument for -Xcompile" 1196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville target) 1198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you must specify a target with \`-o'" 1199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the name of the library object. 1202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libobj" && { 1203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$srcfile" 1204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj="$func_basename_result" 1205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 1206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Recognize several different file suffixes. 1210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specifies -o file.o, it is replaced with file.lo 1211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libobj in 1212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.[cCFSifmso] | \ 1213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.ada | *.adb | *.ads | *.asm | \ 1214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 1215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.[fF][09]? | *.for | *.java | *.obj | *.sx) 1216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_xform "$libobj" 1217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj=$func_xform_result 1218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libobj in 1222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 1223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot determine name of library object from \`$libobj'" 1225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_infer_tag $base_compile 1229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $later; do 1231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 1232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 1233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" != yes && \ 1234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "can not build a shared library" 1235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=no 1236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static) 1240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 1241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 1242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-pic) 1246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=yes 1247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-non-pic) 1251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=no 1252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$libobj" 1258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobj" != "X$func_quote_for_eval_result" \ 1259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 1260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && func_warning "libobj name \`$libobj' may not contain shell special characters." 1261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$obj" "/" "" 1262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objname="$func_basename_result" 1263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 1264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lobj=${xdir}$objdir/$objname 1265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$base_compile" && \ 1267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a compilation command" 1268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete any leftover library objects. 1270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 1271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$obj $lobj $libobj ${libobj}T" 1272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$lobj $libobj ${libobj}T" 1274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Cygwin there's no "real" PIC flag so we must build both object types 1277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 1278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cygwin* | mingw* | pw32* | os2*) 1279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=default 1280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 1283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # non-PIC code in shared libraries is not supported 1284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=default 1285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Calculate the filename of the output object if compiler does 1288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not support -o with -c 1289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_c_o" = no; then 1290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 1291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lockfile="$output_obj.lock" 1292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_obj= 1294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_locks=no 1295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lockfile= 1296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Lock this critical section if it is needed 1299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We use this script file to make the link, it avoids creating a new file 1300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = yes; then 1301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 1302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_echo "Waiting for $lockfile to be removed" 1303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sleep 2 1304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$need_locks" = warn; then 1306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lockfile"; then 1307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 1308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile exists and contains: 1309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 1310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 1312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 1313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 1314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 1315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 1316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 1317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 1319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 1320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$removelist $output_obj" 1322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$srcfile" > "$lockfile" 1323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 1326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$removelist $lockfile" 1327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 1328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$fix_srcfile_path"; then 1330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval srcfile=\"$fix_srcfile_path\" 1331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$srcfile" 1333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qsrcfile=$func_quote_for_eval_result 1334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only build a PIC object if we are building libtool libraries. 1336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 1337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Without this assignment, base_compile gets emptied. 1338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fbsd_hideous_sh_bug=$base_compile 1339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" != no; then 1341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile $pic_flag" 1342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't build PIC code 1344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile" 1345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$xdir$objdir" 1348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$output_obj"; then 1350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Place PIC objects in $objdir 1351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$command -o $lobj" 1352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval_locale "$command" \ 1355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 1356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = warn && 1358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 1360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains: 1361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 1362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain: 1364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile 1365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 1367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 1368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 1369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 1370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 1371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 1372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 1374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 1375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just move the object if needed, then go on to compile the next one 1378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 1379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "$output_obj" "$lobj"' \ 1380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Allow error messages only from the first compilation. 1384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$suppress_opt" = yes; then 1385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_output=' >/dev/null 2>&1' 1386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only build a position-dependent object if we build old libraries. 1390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 1391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" != yes; then 1392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't build PIC code 1393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile$pie_flag" 1394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile $pic_flag" 1396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_c_o" = yes; then 1398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$command -o $obj" 1399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Suppress compiler output if we already did a PIC compilation. 1402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$command$suppress_output" 1403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval_locale "$command" \ 1404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = warn && 1407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 1409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains: 1410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 1411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain: 1413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile 1414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 1416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 1417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 1418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 1419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 1420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 1421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 1423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 1424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just move the object if needed 1427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "$output_obj" "$obj"' \ 1429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 1434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 1435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Unlock the critical section if it was locked 1437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" != no; then 1438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist=$lockfile 1439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "$lockfile" 1440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 1442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 1444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$opt_help || { 1447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$mode" = compile && func_mode_compile ${1+"$@"} 1448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_help () 1451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to display help for each of the modes. 1453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $mode in 1454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") 1455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Generic help is extracted from the usage comments 1456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # at the start of this file. 1457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_help 1458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean) 1461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 1463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove files from the build directory. 1465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE 1467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM. 1469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, object or program, all the files associated 1471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillewith it are deleted. Otherwise, only FILE itself is deleted using RM." 1472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile) 1475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCompile a source file into a libtool library object. 1479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options: 1481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o OUTPUT-FILE set the output file name to OUTPUT-FILE 1483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-suppress do not suppress compiler output for multiple passes 1484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-pic try to building PIC objects only 1485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-non-pic try to building non-PIC objects only 1486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared do not build a \`.o' file suitable for static linking 1487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static only build a \`.o' file suitable for static linking 1488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 1490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefrom the given SOURCEFILE. 1491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe output file name is determined by removing the directory component from 1493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleSOURCEFILE, then substituting the C source code suffix \`.c' with the 1494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary object suffix, \`.lo'." 1495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execute) 1498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 1500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAutomatically set library path, then run a program. 1502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options: 1504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen FILE add the directory containing FILE to the library path 1506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode sets the library path environment variable according to \`-dlopen' 1508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleflags. 1509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf any of the ARGS are libtool executable wrappers, then they are translated 1511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinto their corresponding uninstalled binary, and any of their required library 1512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirectories are added to the library path. 1513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThen, COMMAND is executed, with ARGS as arguments." 1515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finish) 1518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleComplete the installation of libtool libraries. 1522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEach LIBDIR is a directory that contains libtool libraries. 1524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe commands that this mode executes may require superuser privileges. Use 1526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillethe \`--dry-run' option if you just want to see what would be executed." 1527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install) 1530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleInstall executables or libraries. 1534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleINSTALL-COMMAND is the installation command. The first component should be 1536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleeither the \`install' or \`cp' program. 1537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of INSTALL-COMMAND are treated specially: 1539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe rest of the components are interpreted as arguments to that command (only 1543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBSD-compatible install options are recognized)." 1544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link) 1547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLink object files or libraries together to form another library, or to 1551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecreate an executable program. 1552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLINK-COMMAND is a command using the C compiler that you would use to create 1554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillea program from several object files. 1555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of LINK-COMMAND are treated specially: 1557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static do not do any dynamic linking at all 1559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -avoid-version do not add a version suffix if possible 1560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 1561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 1562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols SYMFILE 1564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville try to export only the symbols listed in SYMFILE 1565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols-regex REGEX 1566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville try to export only the symbols matching REGEX 1567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -LLIBDIR search LIBDIR for required installed libraries 1568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -lNAME OUTPUT-FILE requires the installed library libNAME 1569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -module build a library that can dlopened 1570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-fast-install disable the fast-install mode 1571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-install link a not-installable executable 1572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-undefined declare that a library does not refer to external symbols 1573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 1574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -objectlist FILE Use a list of object files found in FILE to specify objects 1575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -precious-files-regex REGEX 1576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville don't remove output files matching REGEX 1577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -release RELEASE specify package release information 1578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -rpath LIBDIR the created library will eventually be installed in LIBDIR 1579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 1580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared only do dynamic linking of libtool libraries 1581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shrext SUFFIX override the standard shared library file extension 1582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static do not do any dynamic linking of uninstalled libtool libraries 1583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static-libtool-libs 1584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do not do any dynamic linking of libtool libraries 1585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-info CURRENT[:REVISION[:AGE]] 1586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville specify library version info [each variable defaults to 0] 1587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -weak LIBNAME declare that the target provides the LIBNAME interface 1588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAll other options (arguments beginning with \`-') are ignored. 1590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEvery other argument is treated as a filename. Files ending in \`.la' are 1592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletreated as uninstalled libtool libraries, other files are standard or library 1593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleobject files. 1594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 1596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleonly library objects (\`.lo' files) may be specified, and \`-rpath' is 1597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerequired, except when creating a convenience library. 1598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 1600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing \`ar' and \`ranlib', or on Windows using \`lib'. 1601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 1603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleis created, otherwise an executable program is created." 1604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall) 1607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 1608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove libraries from an installation directory. 1611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE 1613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM. 1615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, all the files associated with it are deleted. 1617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleOtherwise, only FILE itself is deleted using RM." 1618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "invalid operation mode \`$mode'" 1622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 1626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "Try \`$progname --help' for more information about other modes." 1627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 1629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now that we've collected a possible --mode arg, show help if necessary 1632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_help && func_mode_help 1633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_execute arg... 1636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_execute () 1637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The first argument is the command name. 1640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmd="$nonopt" 1641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$cmd" && \ 1642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a COMMAND" 1643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Handle -dlopen flags immediately. 1645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $execute_dlfiles; do 1646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$file" \ 1647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$file' is not a file" 1648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir= 1650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 1651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 1652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 1653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$file" \ 1654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$lib' is not a valid libtool archive" 1655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the libtool library. 1657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 1658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 1659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 1660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip this library if it cannot be dlopened. 1662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname"; then 1663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Warn if it was a shared library. 1664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$library_names" && \ 1665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$file' was not linked with \`-export-dynamic'" 1666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 1670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 1671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$dir/$objdir/$dlname"; then 1673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$dir/$objdir" 1674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$dir/$dlname"; then 1676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 1682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just add the directory containing the .lo file. 1683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 1684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 1685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 1689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the absolute pathname. 1694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 1695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$absdir" && dir="$absdir" 1696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now add the directory to shlibpath_var. 1698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "test -z \"\$$shlibpath_var\""; then 1699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var=\"\$dir\"" 1700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 1702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set shlibpath_var 1706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # rather than running their programs. 1707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_execute_magic="$magic" 1708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check if any of the arguments is a wrapper script. 1710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args= 1711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file 1712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 1714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) ;; 1715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is really a libtool program. 1717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_script_p "$file"; then 1718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 1719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform arg to wrapped name. 1720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$progdir/$program" 1721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif func_ltwrapper_executable_p "$file"; then 1722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 1723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$func_ltwrapper_scriptname_result" 1724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform arg to wrapped name. 1725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$progdir/$program" 1726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote arguments (to preserve shell metacharacters). 1730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$file" 1731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args="$args $func_quote_for_eval_result" 1732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$opt_dry_run" = Xfalse; then 1735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 1736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Export the shlibpath_var. 1737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "export $shlibpath_var" 1738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore saved environment variables 1741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "if test \"\${save_$lt_var+set}\" = set; then 1744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_var=\$save_$lt_var; export $lt_var 1745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_unset $lt_var 1747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 1748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now prepare to actually exec the command. 1751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec_cmd="\$cmd$args" 1752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Display what would be done. 1754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 1755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 1756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "export $shlibpath_var" 1757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$cmd$args" 1759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 1760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$mode" = execute && func_mode_execute ${1+"$@"} 1764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_finish arg... 1767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_finish () 1768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdirs="$nonopt" 1771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville admincmds= 1772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir 1775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdirs="$libdirs $dir" 1777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $libdirs; do 1780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finish_cmds"; then 1781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the finish commands. 1782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 1783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville'"$cmd"'"' 1784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finish_eval"; then 1786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do the single finish_eval. 1787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"$finish_eval\" 1788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$cmds" || admincmds="$admincmds 1789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $cmds" 1790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Exit here if they wanted silent mode. 1795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent && exit $EXIT_SUCCESS 1796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "X----------------------------------------------------------------------" | $Xsed 1798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "Libraries have been installed in:" 1799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $libdirs; do 1800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " $libdir" 1801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 1803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "If you ever happen to want to link against installed libraries" 1804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 1805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 1806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "flag during linking and do at least one of the following:" 1807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 1808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 1809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " during execution" 1810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$runpath_var"; then 1812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 1813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " during linking" 1814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 1816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir=LIBDIR 1817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 1818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " - use the \`$flag' linker flag" 1820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$admincmds"; then 1822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " - have your system administrator run these commands:$admincmds" 1823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f /etc/ld.so.conf; then 1825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 1826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 1828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "See any operating system documentation about shared libraries for" 1830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 1831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville solaris2.[6789]|solaris2.1[0-9]) 1832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 1833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "pages." 1834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 1837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "X----------------------------------------------------------------------" | $Xsed 1840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 1841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$mode" = finish && func_mode_finish ${1+"$@"} 1844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_install arg... 1847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_install () 1848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # There may be an optional sh(1) argument at the beginning of 1851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install_prog (especially on Windows NT). 1852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 1853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Allow the use of GNU shtool's install command. 1854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 1855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote it. 1856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$nonopt" 1857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog="$func_quote_for_eval_result " 1858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$1 1859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 1860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog= 1862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$nonopt 1863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The real first argument should be the name of the installation program. 1866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote it. 1867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 1868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog="$install_prog$func_quote_for_eval_result" 1869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to accept at least all the BSD install flags. 1871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest= 1872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville files= 1873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opts= 1874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 1875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_type= 1876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville isdir=no 1877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripme= 1878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 1879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dest"; then 1881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville files="$files $dest" 1882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$arg 1883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 1887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -d) isdir=yes ;; 1888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -f) 1889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $install_prog " in 1890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\ /]cp\ *) ;; 1891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) prev=$arg ;; 1892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -g | -m | -o) 1895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=$arg 1896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -s) 1898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripme=" -s" 1899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) 1902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the previous option needed an argument, then skip it. 1905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prev"; then 1906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 1907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$arg 1909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote the argument. 1915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 1916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog="$install_prog $func_quote_for_eval_result" 1917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$install_prog" && \ 1920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an install program" 1921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$prev" && \ 1923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "the \`$prev' option requires an argument" 1924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$files"; then 1926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dest"; then 1927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "no file or destination specified" 1928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a destination" 1930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Strip any trailing slash from the destination. 1934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '/' "$dest" 1935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$func_stripname_result 1936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that the destination is a directory. 1938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$dest" && isdir=yes 1939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$isdir" = yes; then 1940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destdir="$dest" 1941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destname= 1942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$dest" "" "." 1944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destdir="$func_dirname_result" 1945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destname="$func_basename_result" 1946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Not a directory, so check to see that there is only one file specified. 1948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $files; shift 1949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$#" -gt 1 && \ 1950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "\`$dest' is not a directory" 1951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $destdir in 1953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 1954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 1956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 1957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) ;; 1958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "\`$destdir' must be an absolute directory name" 1960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set variables rather 1967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than running their programs. 1968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_install_magic="$magic" 1969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticlibs= 1971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville future_libdirs= 1972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current_libdirs= 1973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 1974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each installation. 1976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 1977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 1978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do the static libraries later. 1979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticlibs="$staticlibs $file" 1980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 1983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 1984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$file" \ 1985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$file' is not a valid libtool archive" 1986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 1988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 1989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 1990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 1991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the libdir to current_libdirs if it is the destination. 1993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$destdir" = "X$libdir"; then 1994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$current_libdirs " in 1995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 1996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) current_libdirs="$current_libdirs $libdir" ;; 1997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Note the libdir as a future libdir. 2000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$future_libdirs " in 2001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 2002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) future_libdirs="$future_libdirs $libdir" ;; 2003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "/" "" 2007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 2008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$dir$objdir" 2009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$relink_command"; then 2011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Determine the prefix the user has applied to our future dir. 2012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 2013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow the user to place us outside of our expected 2015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # location b/c this prevents finding dependent libraries that 2016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are installed to the same prefix. 2017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # At present, this check doesn't affect windows .dll's that 2018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are installed into $libdir/../bin (currently, that works fine) 2019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but it's something to keep an eye on. 2020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$inst_prefix_dir" = "$destdir" && \ 2021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 2024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Stick the inst_prefix_dir data into the link command. 2025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 2028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "relinking \`$file'" 2031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$relink_command" \ 2032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See the names of the shared library. 2036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names; shift 2037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$1"; then 2038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 2039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 2040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcname="$realname" 2042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$relink_command" && srcname="$realname"T 2043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the shared library and build the symlinks. 2045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 2046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'exit $?' 2047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tstripme="$stripme" 2048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 2049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cygwin* | mingw* | pw32*) 2050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $realname in 2051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.dll.a) 2052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tstripme="" 2053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$tstripme" && test -n "$striplib"; then 2058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$striplib $destdir/$realname" 'exit $?' 2059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$#" -gt 0; then 2062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old symlinks, and create new ones. 2063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try `ln -sf' first, because the `ln' binary might depend on 2064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the symlink we replace! Solaris /bin/ln does not understand -f, 2065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so we also need to try rm && ln -s. 2066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for linkname 2067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 2068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkname" != "$realname" \ 2069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 2070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postinstall commands. 2074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$destdir/$realname" 2075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$postinstall_cmds" 'exit $?' 2076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the pseudo-library for information purposes. 2079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 2080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 2081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville instname="$dir/$name"i 2082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Maybe install the static library, too. 2085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 2086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 2089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install (i.e. copy) a libtool object. 2090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Figure out destination file name, if it wasn't already specified. 2092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$destname"; then 2093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destname" 2094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 2096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$func_basename_result" 2097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destfile" 2098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Deduce the name of the destination old-style object file. 2101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $destfile in 2102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 2103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$destfile" 2104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticdest=$func_lo2o_result 2105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$objext) 2107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticdest="$destfile" 2108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile= 2109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "cannot copy a libtool object to \`$destfile'" 2112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the libtool object if requested. 2116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$destfile" && \ 2117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog $file $destfile" 'exit $?' 2118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the old object if enabled. 2120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 2121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Deduce the name of the old-style object file. 2122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$file" 2123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticobj=$func_lo2o_result 2124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 2125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 2127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Figure out destination file name, if it wasn't already specified. 2131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$destname"; then 2132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destname" 2133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 2135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$func_basename_result" 2136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destfile" 2137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the file is missing, and there is a .exe on the end, strip it 2140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # because it is most likely a libtool script we actually want to 2141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install 2142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripped_ext="" 2143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 2144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) 2145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$file"; then 2146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 2147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=$func_stripname_result 2148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripped_ext=".exe" 2149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is really a libtool program. 2154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*|*mingw*) 2156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_executable_p "$file"; then 2157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 2158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$func_ltwrapper_scriptname_result 2159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 2161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$func_stripname_result 2162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$file 2166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_script_p "$wrapper"; then 2169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs= 2170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 2171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$wrapper" 2173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check the variables that should have been set. 2175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$generated_by_libtool_version" && \ 2176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "invalid libtool wrapper script \`$wrapper'" 2177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize=yes 2179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $notinst_deplibs; do 2180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that each library is installed. 2181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir= 2182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lib"; then 2183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 2184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 2186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$libdir" && test ! -f "$libfile"; then 2187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$lib' has not been installed in \`$libdir'" 2188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize=no 2189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 2193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$wrapper" 2194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname= 2196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = no && test -n "$relink_command"; then 2197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$finalize" = yes; then 2199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmpdir=`func_mktempdir` 2200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file$stripped_ext" 2201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$func_basename_result" 2202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname="$tmpdir/$file" 2203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 2204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 2205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 2207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$relink_command" 2208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 2209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "$relink_command"; then : 2211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "error: relink \`$file' with the above command before installing it" 2213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || ${RM}r "$tmpdir" 2214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$outputname" 2217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot relink \`$file'" 2219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the binary that we compiled earlier. 2223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 2224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # remove .exe since cygwin /usr/bin/install will append another 2228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # one anyway 2229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $install_prog,$host in 2230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville */usr/bin/install*,*cygwin*) 2231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file:$destfile in 2232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe:*.exe) 2233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # this is ok 2234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe:*) 2236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile=$destfile.exe 2237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *:*.exe) 2239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$destfile" 2240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile=$func_stripname_result 2241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 2246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || if test -n "$outputname"; then 2247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${RM}r "$tmpdir" 2248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $staticlibs; do 2254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 2255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 2256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Set up the ranlib parameters. 2258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlib="$destdir/$name" 2259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$stripme" && test -n "$old_striplib"; then 2263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$old_striplib $oldlib" 'exit $?' 2264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postinstall commands. 2267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_postinstall_cmds" 'exit $?' 2268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$future_libdirs" && \ 2271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "remember to run \`$progname --finish$future_libdirs'" 2272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$current_libdirs"; then 2274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Maybe just do a dry run. 2275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run && current_libdirs=" -n$current_libdirs" 2276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 2277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 2279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$mode" = install && func_mode_install ${1+"$@"} 2283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_generate_dlsyms outputname originator pic_p 2286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Extract symbols from dlprefiles and create ${outputname}S.o with 2287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a dlpreopen symbol table. 2288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_generate_dlsyms () 2289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_outputname="$1" 2292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_originator="$2" 2293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_pic_p="${3-no}" 2294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 2295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dlsyms= 2296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$NM" && test -n "$global_symbol_pipe"; then 2299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dlsyms="${my_outputname}S.c" 2300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "not configured to extract global symbols from dlpreopened files" 2302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$my_dlsyms"; then 2306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_dlsyms in 2307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") ;; 2308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.c) 2309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Discover the nlist of each of the dlfiles. 2310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville nlist="$output_objdir/${my_outputname}.nm" 2311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 2313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Parse the name list into a source file. 2315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output_objdir/$my_dlsyms" 2316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 2318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 2319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 2320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus 2322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextern \"C\" { 2323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* External symbol declarations for the compiler. */\ 2326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$dlself" = yes; then 2329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$output'" 2330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 2332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add our own program objects to the symbol list. 2334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for progfile in $progfiles; do 2336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "extracting global C symbols from \`$progfile'" 2337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 2338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$exclude_expsyms"; then 2341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 2344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex"; then 2348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 2351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepare the list of exported symbols 2355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$export_symbols"; then 2356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$outputname.exp" 2357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $export_symbols 2359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 2362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 2364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 2370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 2371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 2372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin | *mingw* ) 2374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 2376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dlprefile in $dlprefiles; do 2383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "extracting global C symbols from \`$dlprefile'" 2384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$dlprefile" 2385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 2386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$ECHO ": $name " >> "$nlist"' 2388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 2389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we have at least an empty file. 2394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$nlist" || : > "$nlist" 2395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$exclude_expsyms"; then 2397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "$nlist"T "$nlist" 2399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try sorting and uniquifying the output. 2402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP -v "^: " < "$nlist" | 2403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if sort -k 3 </dev/null >/dev/null 2>&1; then 2404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sort -k 3 2405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sort +2 2407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi | 2408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uniq > "$nlist"S; then 2409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 2410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP -v "^: " < "$nlist" > "$nlist"S 2412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$nlist"S; then 2415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 2418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> "$output_objdir/$my_dlsyms" "\ 2421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* The mapping between symbol names and symbols. */ 2423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletypedef struct { 2424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *name; 2425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void *address; 2426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} lt_dlsymlist; 2427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 2430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> "$output_objdir/$my_dlsyms" "\ 2431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* DATA imports from DLLs on WIN32 con't be const, because 2432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville runtime relocations are performed -- see ld's documentation 2433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville on pseudo-relocs. */" 2434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_dlsym_const= ;; 2435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *osf5*) 2436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville echo >> "$output_objdir/$my_dlsyms" "\ 2437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* This system does not cope well with relocations in const data */" 2438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_dlsym_const= ;; 2439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_dlsym_const=const ;; 2441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> "$output_objdir/$my_dlsyms" "\ 2444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextern $lt_dlsym_const lt_dlsymlist 2445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[]; 2446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$lt_dlsym_const lt_dlsymlist 2447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[] = 2448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{\ 2449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { \"$my_originator\", (void *) 0 }," 2450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $need_lib_prefix in 2452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no) 2453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 2454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 2457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> "$output_objdir/$my_dlsyms" "\ 2460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville {0, (void *) 0} 2461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 2462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* This works around a problem in FreeBSD linker */ 2464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef FREEBSD_WORKAROUND 2465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic const void *lt_preloaded_setup() { 2466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return lt_${my_prefix}_LTX_preloaded_symbols; 2467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus 2471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif\ 2473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } # !$opt_dry_run 2475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable= 2477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_command " in 2478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -static "*) ;; 2479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # compiling the symbol table file with pic_flag works around 2482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a FreeBSD bug that causes programs to crash when -lm is 2483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # linked before any other PIC object. But we must not use 2484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # pic_flag when linking with -static. The problem exists in 2485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 2488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-hpux*) 2489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag" ;; 2490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$my_pic_p" != Xno; then 2492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag" 2493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville symtab_cflags= 2499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $LTCFLAGS; do 2500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 2501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -pie | -fpie | -fPIE) ;; 2502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) symtab_cflags="$symtab_cflags $arg" ;; 2503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now compile the dynamic symbol file. 2507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 2508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clean up the generated files. 2510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 2511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform the symbol file into the correct name. 2513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville symfileobj="$output_objdir/${my_outputname}S.$objext" 2514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 2516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$my_outputname.def"; then 2517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "unknown suffix for \`$my_dlsyms'" 2532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We keep going just in case the user didn't refer to 2536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # really was required. 2538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Nullify the symbol file. 2540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_win32_libid arg 2546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# return the library type of file 'arg' 2547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 2548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Need a lot of goo to handle *both* DLLs and import libs 2549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Has to be a shell function in order to 'eat' the argument 2550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# that is supplied when $file_magic_command is called. 2551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_win32_libid () 2552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="unknown" 2555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_fileres=`file -L $1 2>/dev/null` 2556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_fileres in 2557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *ar\ archive\ import\ library*) # definitely import 2558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 archive import" 2559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *ar\ archive*) # could be an import, or static 2561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 2562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 2563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_nmres=`eval $NM -f posix -A $1 | 2564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n -e ' 2565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1,100{ 2566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville / I /{ 2567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s,.*,import, 2568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 2569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville q 2570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }'` 2572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_nmres in 2573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville import*) win32_libid_type="x86 archive import";; 2574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) win32_libid_type="x86 archive static";; 2575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *DLL*) 2579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 DLL" 2580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *executable*) # but shell scripts are "executable" too... 2582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_fileres in 2583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *MS\ Windows\ PE\ Intel*) 2584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 DLL" 2585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$win32_libid_type" 2590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_an_archive dir oldlib 2595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_an_archive () 2596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f_ex_an_ar_dir="$1"; shift 2599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f_ex_an_ar_oldlib="$1" 2600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 2601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 2603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 2605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_archives gentop oldlib ... 2610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_archives () 2611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_gentop="$1"; shift 2614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_oldlibs=${1+"$@"} 2615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_oldobjs="" 2616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib="" 2617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xabs="" 2618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xdir="" 2619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for my_xlib in $my_oldlibs; do 2621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract the objects. 2622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_xlib in 2623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 2624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) my_xabs=`pwd`"/$my_xlib" ;; 2625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$my_xlib" 2627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib="$func_basename_result" 2628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib_u=$my_xlib 2629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while :; do 2630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $extracted_archives " in 2631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $my_xlib_u "*) 2632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $extracted_serial + 1 2633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extracted_serial=$func_arith_result 2634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib_u=lt$extracted_serial-$my_xlib ;; 2635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) break ;; 2636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extracted_archives="$extracted_archives $my_xlib_u" 2639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xdir="$my_gentop/$my_xlib_u" 2640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$my_xdir" 2642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-darwin*) 2645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "Extracting $my_xabs" 2646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not bother doing anything if just a dry run 2647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_orig_dir=`pwd` 2649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd $my_xdir || exit $? 2650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_archive=$my_xabs 2651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_curdir=`pwd` 2652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_base_archive=`basename "$darwin_archive"` 2653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 2654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$darwin_arches"; then 2655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 2656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arch= 2657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 2658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for darwin_arch in $darwin_arches ; do 2659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 2661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "`pwd`" "${darwin_base_archive}" 2663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "$darwin_curdir" 2664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 2665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # $darwin_arches 2666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## Okay now we've a bunch of thin objects, gotta fatten them up :) 2667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 2668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_file= 2669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_files= 2670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for darwin_file in $darwin_filelist; do 2671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 2672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LIPO -create -output "$darwin_file" $darwin_files 2673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # $darwin_filelist 2674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM -rf unfat-$$ 2675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "$darwin_orig_dir" 2676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd $darwin_orig_dir 2678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "$my_xdir" "$my_xabs" 2679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $darwin_arches 2680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } # !$opt_dry_run 2681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "$my_xdir" "$my_xabs" 2684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 2687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives_result="$my_oldobjs" 2690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_emit_wrapper arg 2695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 2696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# emit a libtool wrapper script on stdout 2697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# don't directly open a file because we may want to 2698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# incorporate the script contents within a cygwin/mingw 2699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# wrapper executable. Must ONLY be called from within 2700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_link because it depends on a number of variable 2701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# set therein. 2702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 2703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# arg is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 2704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable will take. If 'yes', then the emitted script 2705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will assume that the directory in which it is stored is 2706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the '.lib' directory. This is a cygwin/mingw-specific 2707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior. 2708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_wrapper () 2709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper_arg1=no 2711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$1" ; then 2712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper_arg1=$1 2713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#! $SHELL 2717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $output - temporary wrapper script for $objdir/$outputname 2719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 2720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 2721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The $output program cannot be directly executed until all the libtool 2722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libraries that it depends on are installed. 2723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 2724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This wrapper script should never be moved out of the build directory. 2725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If it is, it will not operate correctly. 2726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting. It backslashifies 2728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings. 2729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleXsed='${SED} -e 1s/^X//' 2730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='$sed_quote_subst' 2731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible 2733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 2734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville emulate sh 2735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville NULLCMD=: 2736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 2737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is contrary to our usage. Disable this feature. 2738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alias -g '\${1+\"\$@\"}'='\"\$@\"' 2739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville setopt NO_GLOB_SUBST 2740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 2741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 2742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 2743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64 2744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh 2745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The HP-UX ksh and POSIX shell print the target directory to stdout 2747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if CDPATH is set. 2748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 2749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\" 2751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This environment variable determines our operation mode. 2753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test \"\$libtool_install_magic\" = \"$magic\"; then 2754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install mode needs the following variables: 2755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated_by_libtool_version='$macro_version' 2756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs='$notinst_deplibs' 2757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 2758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # When we are sourced in execute mode, \$file and \$ECHO are already set. 2759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$libtool_execute_magic\" != \"$magic\"; then 2760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ECHO=\"$qecho\" 2761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\"\$0\" 2762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure echo works. 2763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"X\$1\" = X--no-reexec; then 2764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Discard the --no-reexec flag, and continue. 2765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 2766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 2767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Yippee, \$ECHO works! 2768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 2769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restart under the correct shell, and then maybe \$ECHO will work. 2771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi\ 2774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find the directory that this script lives in. 2778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Follow symbolic links until we get to the real thisdir. 2782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 2783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test -n \"\$file\"; do 2784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there was a directory component, then change thisdir. 2787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"x\$destdir\" != \"x\$file\"; then 2788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \"\$destdir\" in 2789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 2790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) thisdir=\"\$thisdir/\$destdir\" ;; 2791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 2796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Usually 'no', except on cygwin/mingw when embedded into 2799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the cwrapper. 2800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 2801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 2802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # special case for '.' 2803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$thisdir\" = \".\"; then 2804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thisdir=\`pwd\` 2805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # remove .libs from thisdir 2807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \"\$thisdir\" in 2808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 2809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $objdir ) thisdir=. ;; 2810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try to get the absolute directory name. 2814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=\`cd \"\$thisdir\" && pwd\` 2815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n \"\$absdir\" && thisdir=\"\$absdir\" 2816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes; then 2819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program=lt-'$outputname'$exeext 2821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=\"\$thisdir/$objdir\" 2822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f \"\$progdir/\$program\" || 2824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 2825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\"\$\$-\$program\" 2828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -d \"\$progdir\"; then 2830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR \"\$progdir\" 2831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 2833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 2834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # relink executable if necessary 2838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n \"\$relink_command\"; then 2839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if relink_command_output=\`eval \$relink_command 2>&1\`; then : 2840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \"\$relink_command_output\" >&2 2842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 2843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit 1 2844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { $RM \"\$progdir/\$program\"; 2849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 2851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 2852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program='$outputname' 2855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=\"\$thisdir/$objdir\" 2856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f \"\$progdir/\$program\"; then" 2862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Export our shlibpath_var if we have one. 2864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add our own library path to $shlibpath_var 2867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some systems cannot cope with colon-terminated $shlibpath_var 2870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The second colon is a workaround for a bug in BeOS R4 sed 2871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export $shlibpath_var 2874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # fixup the dll searchpath if we need to. 2878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dllsearchpath"; then 2879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the dll search path components to the executable PATH 2881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville PATH=$dllsearchpath:\$PATH 2882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$libtool_execute_magic\" != \"$magic\"; then 2887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Run the actual program with our arguments. 2888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 2890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Backslashes separate directories on plain windows 2891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-mingw | *-*-os2*) 2892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 2894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec \"\$progdir/\$program\" \${1+\"\$@\"} 2900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 2905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit 1 2906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The program doesn't exist. 2909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 2910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 2911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 2912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit 1 2913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi\ 2915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 2916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# end: func_emit_wrapper 2918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_emit_cwrapperexe_src 2920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# emit the source code for a wrapper executable on stdout 2921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Must ONLY be called from within func_mode_link because 2922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it depends on a number of variable set therein. 2923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_cwrapperexe_src () 2924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 2926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 2928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 2929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville The $output program cannot be directly executed until all the libtool 2931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libraries that it depends on are installed. 2932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville This wrapper executable should never be moved out of the build directory. 2934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville If it is, it will not operate correctly. 2935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Currently, it simply execs the wrapper *script* "$SHELL $output", 2937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville but could eventually absorb all of the scripts functionality and 2938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec $objdir/$outputname directly. 2939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/ 2940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 2941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 2942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdio.h> 2943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdlib.h> 2944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef _MSC_VER 2945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <direct.h> 2946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <process.h> 2947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <io.h> 2948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define setmode _setmode 2949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 2950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <unistd.h> 2951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <stdint.h> 2952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifdef __CYGWIN__ 2953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <io.h> 2954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 2955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <malloc.h> 2957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdarg.h> 2958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <assert.h> 2959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <string.h> 2960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <ctype.h> 2961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <errno.h> 2962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <fcntl.h> 2963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <sys/stat.h> 2964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined(PATH_MAX) 2966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX PATH_MAX 2967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#elif defined(MAXPATHLEN) 2968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX MAXPATHLEN 2969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 2970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX 1024 2971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXOTH 2974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXOTH 0 2975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXGRP 2977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXGRP 0 2978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef _MSC_VER 2981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXUSR _S_IEXEC 2982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define stat _stat 2983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef _INTPTR_T_DEFINED 2984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define intptr_t int 2985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 2986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR 2989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define DIR_SEPARATOR '/' 2990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define PATH_SEPARATOR ':' 2991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 2992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 2994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville defined (__OS2__) 2995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define HAVE_DOS_BASED_FILE_SYSTEM 2996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "wb" 2997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef DIR_SEPARATOR_2 2998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define DIR_SEPARATOR_2 '\\' 2999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 3000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef PATH_SEPARATOR_2 3001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define PATH_SEPARATOR_2 ';' 3002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 3003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR_2 3006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 3007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* DIR_SEPARATOR_2 */ 3008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) \ 3009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 3010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* DIR_SEPARATOR_2 */ 3011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PATH_SEPARATOR_2 3013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 3014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* PATH_SEPARATOR_2 */ 3015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 3016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* PATH_SEPARATOR_2 */ 3017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __CYGWIN__ 3019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "wb" 3020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef FOPEN_WB 3023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "w" 3024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef _O_BINARY 3026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define _O_BINARY 0 3027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 3030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XFREE(stale) do { \ 3031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (stale) { free ((void *) stale); stale = 0; } \ 3032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} while (0) 3033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#undef LTWRAPPER_DEBUGPRINTF 3035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined DEBUGWRAPPER 3036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 3037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic void 3038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleltwrapper_debugprintf (const char *fmt, ...) 3039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_list args; 3041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_start (args, fmt); 3042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville (void) vfprintf (stderr, fmt, args); 3043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_end (args); 3044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 3046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LTWRAPPER_DEBUGPRINTF(args) 3047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char *program_name = NULL; 3050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid *xmalloc (size_t num); 3052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *xstrdup (const char *string); 3053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char *base_name (const char *name); 3054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *find_executable (const char *wrapper); 3055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *chase_symlinks (const char *pathspec); 3056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint make_executable (const char *path); 3057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint check_executable (const char *path); 3058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *strendzap (char *str, const char *pat); 3059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid lt_fatal (const char *message, ...); 3060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic const char *script_text = 3062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper yes | 3065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -e 's/\([\\"]\)/\\\1/g' \ 3066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -e 's/^/ "/' -e 's/$/\\n"/' 3067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville echo ";" 3068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char * MAGIC_EXE = "$magic_exe"; 3071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 3073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemain (int argc, char *argv[]) 3074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char **newargz; 3076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *tmp_pathspec; 3077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *actual_cwrapper_path; 3078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *shwrapper_name; 3079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville intptr_t rval = 127; 3080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville FILE *shwrapper; 3081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *dumpscript_opt = "--lt-dump-script"; 3083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int i; 3084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program_name = (char *) xstrdup (base_name (argv[0])); 3086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 3087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 3088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* very simple arg parsing; don't want to rely on getopt */ 3090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (i = 1; i < argc; i++) 3091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (strcmp (argv[i], dumpscript_opt) == 0) 3093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$host" in 3096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *mingw* | *cygwin* ) 3097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # make stdout use "unix" line endings 3098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville echo " setmode(1,_O_BINARY);" 3099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville printf ("%s", script_text); 3104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 3105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newargz = XMALLOC (char *, argc + 2); 3109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$TARGETSHELL" ; then 3112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # no path translation at all 3113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_newargv0=$TARGETSHELL 3114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$host" in 3116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *mingw* ) 3117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # awkward: cmd appends spaces to result 3118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_sed_strip_trailing_spaces="s/[ ]*\$//" 3119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_newargv0=`( cmd //c echo $SHELL | $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo $SHELL` 3120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lt_newargv0 in 3121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe | *.EXE) ;; 3122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) lt_newargv0=$lt_newargv0.exe ;; 3123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) lt_newargv0=$SHELL ;; 3126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newargz[0] = (char *) xstrdup ("$lt_newargv0"); 3131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 3134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = find_executable (argv[0]); 3135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (tmp_pathspec == NULL) 3136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("Couldn't find %s", argv[0]); 3137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 3138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec)); 3139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville actual_cwrapper_path = chase_symlinks (tmp_pathspec); 3141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 3142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville actual_cwrapper_path)); 3143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (tmp_pathspec); 3144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shwrapper_name = (char *) xstrdup (base_name (actual_cwrapper_path)); 3146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strendzap (actual_cwrapper_path, shwrapper_name); 3147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* shwrapper_name transforms */ 3149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strendzap (shwrapper_name, ".exe"); 3150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = XMALLOC (char, (strlen (shwrapper_name) + 3151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strlen ("_ltshwrapperTMP") + 1)); 3152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (tmp_pathspec, shwrapper_name); 3153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcat (tmp_pathspec, "_ltshwrapperTMP"); 3154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (shwrapper_name); 3155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shwrapper_name = tmp_pathspec; 3156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = 0; 3157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) libtool shell wrapper name: %s\n", 3158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shwrapper_name)); 3159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newargz[1] = 3163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, (strlen (actual_cwrapper_path) + 3164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strlen ("$objdir") + 1 + strlen (shwrapper_name) + 1)); 3165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (newargz[1], actual_cwrapper_path); 3166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcat (newargz[1], "$objdir"); 3167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcat (newargz[1], "/"); 3168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcat (newargz[1], shwrapper_name); 3169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 3173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville mingw*) 3174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 3175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char* p; 3177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while ((p = strchr (newargz[1], '\\')) != NULL) 3178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *p = '/'; 3180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 3187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (shwrapper_name); 3188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (actual_cwrapper_path); 3189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* always write in binary mode */ 3191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((shwrapper = fopen (newargz[1], FOPEN_WB)) == 0) 3192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("Could not open %s for writing", newargz[1]); 3194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fprintf (shwrapper, "%s", script_text); 3196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fclose (shwrapper); 3197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville make_executable (newargz[1]); 3199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (i = 1; i < argc; i++) 3201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newargz[i + 1] = xstrdup (argv[i]); 3202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newargz[argc + 1] = NULL; 3203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (i = 0; i < argc + 1; i++) 3205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, newargz[i])); 3207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 3212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville mingw*) 3213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* execv doesn't actually work on mingw as expected on unix */ 3215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rval = _spawnv (_P_WAIT, "$lt_newargv0", (const char * const *) newargz); 3216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (rval == -1) 3217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* failed to start process */ 3219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"$lt_newargv0\": errno = %d\n", errno)); 3220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 127; 3221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; 3223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 3228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execv ("$lt_newargv0", newargz); 3229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; /* =127, but avoids unused variable warning */ 3230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 3236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid * 3238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexmalloc (size_t num) 3239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void *p = (void *) malloc (num); 3241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!p) 3242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("Memory exhausted"); 3243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return p; 3245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 3248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexstrdup (const char *string) 3249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 3251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville string) : NULL; 3252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char * 3255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebase_name (const char *name) 3256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *base; 3258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Skip over the disk name in MSDOS pathnames. */ 3261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (isalpha ((unsigned char) name[0]) && name[1] == ':') 3262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name += 2; 3263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (base = name; *name; name++) 3266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_DIR_SEPARATOR (*name)) 3267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base = name + 1; 3268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return base; 3269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 3272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecheck_executable (const char *path) 3273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat st; 3275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 3277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path ? (*path ? path : "EMPTY!") : "NULL!")); 3278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((!path) || (!*path)) 3279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 3280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((stat (path, &st) >= 0) 3282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 3283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 1; 3284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 3286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 3289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemake_executable (const char *path) 3290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int rval = 0; 3292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat st; 3293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 3295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path ? (*path ? path : "EMPTY!") : "NULL!")); 3296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((!path) || (!*path)) 3297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 3298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (stat (path, &st) >= 0) 3300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 3302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; 3304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Searches for the full path of the wrapper. Returns 3307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newly allocated full path name if found, NULL otherwise 3308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Does not chase symlinks, even on platforms that support them. 3309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/ 3310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 3311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefind_executable (const char *wrapper) 3312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int has_slash = 0; 3314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *p; 3315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *p_next; 3316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* static buffer for getcwd */ 3317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char tmp[LT_PATHMAX + 1]; 3318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int tmp_len; 3319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *concat_name; 3320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 3322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 3323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((wrapper == NULL) || (*wrapper == '\0')) 3325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 3326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Absolute path? */ 3328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 3330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = xstrdup (wrapper); 3332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 3333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 3334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 3335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_DIR_SEPARATOR (wrapper[0])) 3340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = xstrdup (wrapper); 3342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 3343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 3344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 3345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (p = wrapper; *p; p++) 3351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (*p == '/') 3352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville has_slash = 1; 3354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 3355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!has_slash) 3357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* no slashes; search PATH */ 3359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *path = getenv ("PATH"); 3360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (path != NULL) 3361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (p = path; *p; p = p_next) 3363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *q; 3365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville size_t p_len; 3366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (q = p; *q; q++) 3367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_PATH_SEPARATOR (*q)) 3368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 3369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p_len = q - p; 3370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p_next = (*q == '\0' ? q : q + 1); 3371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (p_len == 0) 3372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* empty path: current directory */ 3374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (getcwd (tmp, LT_PATHMAX) == NULL) 3375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("getcwd failed"); 3376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_len = strlen (tmp); 3377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = 3378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, tmp, tmp_len); 3380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[tmp_len] = '/'; 3381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + tmp_len + 1, wrapper); 3382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = 3386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 3387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, p, p_len); 3388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[p_len] = '/'; 3389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + p_len + 1, wrapper); 3390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 3392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 3393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 3394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* not found in PATH; assume curdir */ 3397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Relative path | not found in path: prepend cwd */ 3399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (getcwd (tmp, LT_PATHMAX) == NULL) 3400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("getcwd failed"); 3401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_len = strlen (tmp); 3402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, tmp, tmp_len); 3404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[tmp_len] = '/'; 3405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + tmp_len + 1, wrapper); 3406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 3408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 3409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 3410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 3411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 3414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechase_symlinks (const char *pathspec) 3415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_ISLNK 3417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (pathspec); 3418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 3419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char buf[LT_PATHMAX]; 3420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat s; 3421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *tmp_pathspec = xstrdup (pathspec); 3422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *p; 3423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int has_symlinks = 0; 3424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while (strlen (tmp_pathspec) && !has_symlinks) 3425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 3427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec)); 3428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (lstat (tmp_pathspec, &s) == 0) 3429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (S_ISLNK (s.st_mode) != 0) 3431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville has_symlinks = 1; 3433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 3434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* search backwards for last DIR_SEPARATOR */ 3437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p = tmp_pathspec + strlen (tmp_pathspec) - 1; 3438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p--; 3440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* no more DIR_SEPARATORS left */ 3443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 3444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *p = '\0'; 3446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *errstr = strerror (errno); 3450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 3451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (tmp_pathspec); 3454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!has_symlinks) 3456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (pathspec); 3458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = realpath (pathspec, buf); 3461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (tmp_pathspec == 0) 3462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_fatal ("Could not follow symlinks for %s", pathspec); 3464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (tmp_pathspec); 3466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 3470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestrendzap (char *str, const char *pat) 3471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville size_t len, patlen; 3473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville assert (str != NULL); 3475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville assert (pat != NULL); 3476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len = strlen (str); 3478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville patlen = strlen (pat); 3479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (patlen <= len) 3481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 3482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville str += len - patlen; 3483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (strcmp (str, pat) == 0) 3484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *str = '\0'; 3485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return str; 3487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic void 3490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_error_core (int exit_status, const char *mode, 3491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *message, va_list ap) 3492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fprintf (stderr, "%s: %s: ", program_name, mode); 3494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vfprintf (stderr, message, ap); 3495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fprintf (stderr, ".\n"); 3496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (exit_status >= 0) 3498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit (exit_status); 3499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid 3502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_fatal (const char *message, ...) 3503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_list ap; 3505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_start (ap, message); 3506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 3507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_end (ap); 3508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 3510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# end: func_emit_cwrapperexe_src 3512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_link arg... 3514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_link () 3515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 3517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 3519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # It is impossible to link a dll without this setting, and 3520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we shouldn't force the makefile maintainer to figure out 3521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which system we are compiling for in order to pass an extra 3522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # flag for every libtool invocation. 3523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # allow_undefined=no 3524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: Unfortunately, there are problems with the above when trying 3526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to make a dll which has undefined symbols, in which case not 3527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # even a static library is built. For now, we need to specify 3528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -no-undefined on the libtool link line when we can be certain 3529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that all symbols are satisfied, otherwise we get a static library. 3530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=yes 3531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=yes 3534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_args=$nonopt 3537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile="$nonopt $@" 3538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=$nonopt 3539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=$nonopt 3540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_rpath= 3542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_rpath= 3543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_shlibpath= 3544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_shlibpath= 3545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville convenience= 3546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_convenience= 3547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 3548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_deplibs= 3549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags= 3550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags= 3551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dllsearchpath= 3552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_search_path=`pwd` 3553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix_dir= 3554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_inherited_linker_flags= 3555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoid_version=no 3557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles= 3558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles= 3559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=no 3560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=no 3561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols= 3562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols_regex= 3563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated= 3564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs= 3565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ltlibs= 3566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville module=no 3567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no_install=no 3568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objs= 3569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_objects= 3570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_files_regex= 3571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=no 3572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville preload=no 3573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prevarg= 3575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release= 3576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 3577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xrpath= 3578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville perm_rpath= 3579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_rpath= 3580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thread_safe=no 3581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo= 3582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo_number=no 3583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville weak_libs= 3584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville single_module="${wl}-single_module" 3585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_infer_tag $base_compile 3586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to know -static, to get the right output filenames. 3588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 3589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 3590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 3592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" != yes && \ 3593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "can not build a shared library" 3594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=no 3595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 3596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static | -static | -static-libtool-libs) 3598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static) 3600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 3601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "complete static linking is impossible in this configuration" 3602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$link_static_flag"; then 3604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 3605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=yes 3607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static) 3609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_flag" && test -n "$link_static_flag"; then 3610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 3611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=built 3613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static-libtool-libs) 3615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_flag" && test -n "$link_static_flag"; then 3616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 3617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=yes 3619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 3622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 3623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 3624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See if our shared archives depend on static archives. 3629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_archive_from_new_cmds" && build_old_libs=yes 3630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Go through the arguments, transforming them on the way. 3632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$#" -gt 0; do 3633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$1" 3634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 3635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 3636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qarg=$func_quote_for_eval_unquoted_result 3637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libtool_args " $func_quote_for_eval_result" 3638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the previous option needs an argument, assign it. 3640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prev"; then 3641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $prev in 3642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output) 3643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " @OUTPUT@" 3644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " @OUTPUT@" 3645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $prev in 3649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles|dlprefiles) 3650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$preload" = no; then 3651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the symbol object into the linking commands. 3652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " @SYMFILE@" 3653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " @SYMFILE@" 3654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville preload=yes 3655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la | *.lo) ;; # We handle these cases below. 3658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville force) 3659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$dlself" = no; then 3660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=needless 3661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 3662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville self) 3667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 3668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=yes 3669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 3670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=yes 3671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=needless 3673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 3674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 3680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$dlfiles $arg" 3681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$dlprefiles $arg" 3683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville expsyms) 3690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$arg" 3691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$arg" \ 3692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_error "symbol file \`$arg' does not exist" 3693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville expsyms_regex) 3697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols_regex="$arg" 3698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville framework) 3702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 3704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$deplibs " in 3705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $qarg.ltframework "*) ;; 3706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 3707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix) 3715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix_dir="$arg" 3716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objectlist) 3720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$arg"; then 3721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_arg=$arg 3722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville moreargs= 3723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for fil in `cat "$save_arg"` 3724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 3725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# moreargs="$moreargs $fil" 3726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$fil 3727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled object. 3728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool object. 3730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_unsafe_p "$arg"; then 3731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object= 3732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object= 3733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 3735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$arg" 3736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || 3738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$non_pic_object" || 3739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" = none && 3740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" = none; then 3741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of object for \`$arg'" 3742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 3745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 3746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 3747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_object" != none; then 3749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 3750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object="$xdir$pic_object" 3751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 3753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 3754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$dlfiles $pic_object" 3755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If libtool objects are unsupported, then we need to preload. 3759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 3760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # CHECK ME: I think I busted this. -Ossama 3764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 3765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preload the old-style object. 3766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$dlprefiles $pic_object" 3767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A PIC object. 3771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 3772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$pic_object" 3773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Non-PIC object. 3776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$non_pic_object" != none; then 3777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 3778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$xdir$non_pic_object" 3779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard non-PIC object 3781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 3782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || test "$pic_object" = none ; then 3783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$non_pic_object" 3784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the PIC object exists, use it instead. 3787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $xdir was prepended to $pic_object above. 3788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$pic_object" 3789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 3790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only an error if not doing a dry-run. 3793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_dry_run; then 3794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 3795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 3796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 3797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$arg" 3799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object=$xdir$objdir/$func_lo2o_result 3800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object=$xdir$func_lo2o_result 3801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 3802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 3803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$arg' is not a valid libtool object" 3805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "link input file \`$arg' does not exist" 3810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$save_arg 3812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_regex) 3816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_files_regex="$arg" 3817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release) 3821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release="-$arg" 3822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath | xrpath) 3826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 3827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 3829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only absolute run-paths are allowed" 3831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = rpath; then 3834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$rpath " in 3835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 3836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) rpath="$rpath $arg" ;; 3837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 3840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 3841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) xrpath="$xrpath $arg" ;; 3842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shrext) 3848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shrext_cmds="$arg" 3849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville weak) 3853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville weak_libs="$weak_libs $arg" 3854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xcclinker) 3858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags="$linker_flags $qarg" 3859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $qarg" 3860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $qarg" 3862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $qarg" 3863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xcompiler) 3866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $qarg" 3867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $qarg" 3869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $qarg" 3870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xlinker) 3873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags="$linker_flags $qarg" 3874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $wl$qarg" 3875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $wl$qarg" 3877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $wl$qarg" 3878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$prev=\"\$arg\"" 3882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 3883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # test -n "$prev" 3887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prevarg="$arg" 3889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static) 3892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$link_static_flag"; then 3893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See comment for -static flag below, for more details. 3894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $link_static_flag" 3895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $link_static_flag" 3896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -allow-undefined) 3901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: remove this flag sometime in the future. 3902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`-allow-undefined' must not be used because it is the default" 3903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -avoid-version) 3906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoid_version=yes 3907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen) 3911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlfiles 3912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlpreopen) 3916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 3917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-dynamic) 3921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 3922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols | -export-symbols-regex) 3926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "more than one -exported-symbols argument is not allowed" 3928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$arg" = "X-export-symbols"; then 3930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=expsyms 3931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=expsyms_regex 3933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -framework) 3938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=framework 3939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -inst-prefix-dir) 3943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=inst_prefix 3944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 3948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so, if we see these flags be careful not to treat them like -L 3949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L[A-Z][A-Z]*:*) 3950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $with_gcc/$host in 3951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no/*-*-irix* | /*-*-irix*) 3952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 3953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 3954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 3960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-L' '' "$arg" 3961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$func_stripname_result 3962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 3963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 3964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 3965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 3967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$absdir" && \ 3968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot determine absolute directory name of \`$dir'" 3969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$absdir" 3970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$deplibs " in 3973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$dir "*) ;; 3974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs -L$dir" 3976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_search_path="$lib_search_path $dir" 3977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 3981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 3982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 3983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$dir:"*) ;; 3984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dllsearchpath="$dllsearchpath:$dir";; 3985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 3987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$testbindir:"*) ;; 3988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dllsearchpath="$dllsearchpath:$testbindir";; 3989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 3996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 3997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 3999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # These systems don't actually have a C or math library (as such) 4000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-os2*) 4003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # These systems don't actually have a C library (as such) 4004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 4005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc due to us having libc/libc_r. 4008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 4009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 4011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Rhapsody C and math libraries are in the System framework 4012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs System.ltframework" 4013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5* | *-*-sco5v6*) 4016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Causes problems with __ctype 4017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 4018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 4020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compiler inserts libc in the correct place for threads to work 4021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 4022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "X$arg" = "X-lc_r"; then 4025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 4026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc_r directly, use -pthread flag. 4028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs $arg" 4033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -module) 4037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville module=yes 4038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Tru64 UNIX uses -model [arg] to determine the layout of C++ 4042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # classes, name mangling, and exception handling. 4043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Darwin uses the -arch flag to determine output architecture. 4044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -model|-arch|-isysroot) 4045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $arg" 4046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 4047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 4048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcompiler 4049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $arg" 4054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 4055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 4056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 4057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 4058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 4059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -multi_module) 4064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville single_module="${wl}-multi_module" 4065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-fast-install) 4069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fast_install=no 4070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-install) 4074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 4075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 4076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The PATH hackery in wrapper scripts is required on Windows 4077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and Darwin in order for the loader to find any dlls it needs. 4078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-no-install' is ignored for $host" 4079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "assuming \`-no-fast-install' instead" 4080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fast_install=no 4081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) no_install=yes ;; 4083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-undefined) 4088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=no 4089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -objectlist) 4093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=objectlist 4094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o) prev=output ;; 4098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -precious-files-regex) 4100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=precious_regex 4101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -release) 4105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=release 4106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -rpath) 4110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=rpath 4111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R) 4115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xrpath 4116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) 4120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-R' '' "$arg" 4121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$func_stripname_result 4122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 4123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 4124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 4125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only absolute run-paths are allowed" 4127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 4130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 4131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) xrpath="$xrpath $dir" ;; 4132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 4137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The effects of -shared are defined in a previous loop. 4138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shrext) 4142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=shrext 4143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static | -static-libtool-libs) 4147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The effects of -static are defined in a previous loop. 4148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We used to do the same as -all-static on platforms that 4149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # didn't have a PIC flag, but the assumption that the effects 4150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # would be equivalent was wrong. It would break on at least 4151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Digital Unix and AIX. 4152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -thread-safe) 4156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thread_safe=yes 4157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-info) 4161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=vinfo 4162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-number) 4166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=vinfo 4167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo_number=yes 4168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -weak) 4172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=weak 4173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wc,*) 4177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wc,' '' "$arg" 4178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 4179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg= 4180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 4181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for flag in $args; do 4182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 4183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$flag" 4184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$arg $wl$func_quote_for_eval_result" 4185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $func_quote_for_eval_result" 4186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 4188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$arg" 4189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$func_stripname_result 4190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wl,*) 4193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wl,' '' "$arg" 4194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 4195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg= 4196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 4197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for flag in $args; do 4198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 4199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$flag" 4200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$arg $wl$func_quote_for_eval_result" 4201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 4202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags="$linker_flags $func_quote_for_eval_result" 4203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 4205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$arg" 4206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$func_stripname_result 4207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xcompiler) 4210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcompiler 4211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xlinker) 4215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xlinker 4216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -XCClinker) 4220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcclinker 4221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -msg_* for osf cc 4225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -msg_*) 4226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 4227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 4228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 4231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -r[0-9][0-9]* specifies the processor on the SGI compiler 4232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 4233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # +DA*, +DD* enable 64-bit mode on the HP compiler 4234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -q* pass through compiler args for the IBM compiler 4235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -m*, -t[45]*, -txscale* pass through architecture-specific 4236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # compiler args for GCC 4237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -F/path gives path to uninstalled frameworks, gcc on darwin 4238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 4239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # @file GCC response files 4240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 4241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 4242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 4243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 4244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 4245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 4246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $arg" 4247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some other compiler flag. 4251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -* | +*) 4252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 4253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 4254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$objext) 4257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard object. 4258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objs="$objs $arg" 4259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 4262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled object. 4263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool object. 4265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_unsafe_p "$arg"; then 4266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object= 4267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object= 4268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 4270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$arg" 4271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || 4273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$non_pic_object" || 4274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" = none && 4275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" = none; then 4276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of object for \`$arg'" 4277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 4280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 4281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 4282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_object" != none; then 4284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 4285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object="$xdir$pic_object" 4286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 4288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$dlfiles $pic_object" 4290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 4291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If libtool objects are unsupported, then we need to preload. 4294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 4295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # CHECK ME: I think I busted this. -Ossama 4299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 4300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preload the old-style object. 4301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$dlprefiles $pic_object" 4302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 4303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A PIC object. 4306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 4307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$pic_object" 4308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Non-PIC object. 4311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$non_pic_object" != none; then 4312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 4313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$xdir$non_pic_object" 4314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard non-PIC object 4316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 4317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || test "$pic_object" = none ; then 4318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$non_pic_object" 4319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the PIC object exists, use it instead. 4322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $xdir was prepended to $pic_object above. 4323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$pic_object" 4324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 4325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only an error if not doing a dry-run. 4328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_dry_run; then 4329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 4330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 4331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 4332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$arg" 4334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object=$xdir$objdir/$func_lo2o_result 4335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object=$xdir$func_lo2o_result 4336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 4337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 4338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$arg' is not a valid libtool object" 4340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 4345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # An archive. 4346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs $arg" 4347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_deplibs="$old_deplibs $arg" 4348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 4352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled library. 4353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 4355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlopen. 4356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$dlfiles $arg" 4357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 4358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$prev" = dlprefiles; then 4359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The library was specified with -dlpreopen. 4360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$dlprefiles $arg" 4361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 4362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs $arg" 4364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some other compiler argument. 4369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Unknown arguments in both finalize_command and compile_command need 4371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to be aesthetically quoted because they are evaled later. 4372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 4373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 4374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # arg 4376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now actually substitute the argument into the commands. 4378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$arg"; then 4379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 4380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 4381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # argument parsing loop 4383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$prev" && \ 4385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "the \`$prevarg' option requires an argument" 4386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 4388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval arg=\"$export_dynamic_flag_spec\" 4389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 4390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 4391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs= 4394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # calculate the name of the file, without its directory 4395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$output" 4396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname="$func_basename_result" 4397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs_save="$libobjs" 4398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 4400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # get the directories listed in $shlibpath_var 4401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 4402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shlib_search_path= 4404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 4406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 4407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$output" "/" "" 4409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_objdir="$func_dirname_result$objdir" 4410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create the object directory. 4411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$output_objdir" 4412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Determine the type of output 4414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 4415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") 4416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an output file" 4417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) linkmode=oldlib ;; 4419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo | *.$objext) linkmode=obj ;; 4420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) linkmode=lib ;; 4421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) linkmode=prog ;; # Anything else should be a program. 4422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville specialdeplibs= 4425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs= 4427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find all interdependent deplibs by searching for libraries 4428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that are linked more than once (e.g. -la -lb -la) 4429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 4430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_deps ; then 4431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$libs " in 4432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 4433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$libs $deplib" 4436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 4439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$predeps $libs $compiler_lib_search_path $postdeps" 4440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compute libraries that are listed more than once in $predeps 4442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $postdeps and mark them as special (i.e., whose duplicates are 4443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not to be eliminated). 4444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pre_post_deps= 4445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_compiler_generated_deps; then 4446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for pre_post_dep in $predeps $postdeps; do 4447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$pre_post_deps " in 4448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 4449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pre_post_deps="$pre_post_deps $pre_post_dep" 4451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pre_post_deps= 4454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 4457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs= 4458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path= 4459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=no # whether we're linking any uninstalled libtool libraries 4460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs= # not-installed libtool libraries 4461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_path= # paths that contain not-installed libtool libraries 4462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 4464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 4465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville passes="conv dlpreopen link" 4466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $dlfiles $dlprefiles; do 4467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 4468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) ;; 4469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 4471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 4476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs= 4477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs= 4478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alldeplibs=no 4479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 4480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 4481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville passes="conv scan dlopen dlpreopen link" 4482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) passes="conv" 4484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for pass in $passes; do 4488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The preopen pass in lib mode reverses $deplibs; put it back here 4489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so that -L comes before libs that need it for instance... 4490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link"; then 4491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## FIXME: Find the place where the list is rebuilt in the wrong 4492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## order, and fix it there properly 4493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs= 4494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 4495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs="$deplib $tmp_deplibs" 4496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$tmp_deplibs" 4498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link" || 4501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode,$pass" = "prog,scan"; then 4502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$deplibs" 4503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 4504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 4506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $pass in 4507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen) libs="$dlfiles" ;; 4508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlpreopen) libs="$dlprefiles" ;; 4509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 4510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,dlpreopen"; then 4513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect and forward deplibs of preopened libtool libs 4514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 4515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Ignore non-libtool-libs 4516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs= 4517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 4518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) func_source "$lib" ;; 4519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect preopened libtool deplibs, except any this library 4522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # has declared as weak libs 4523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 4524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 4525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $weak_libs " in 4526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib_base "*) ;; 4527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) deplibs="$deplibs $deplib" ;; 4528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$dlprefiles" 4532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlopen; then 4534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect dlpreopened libraries 4535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_deplibs="$deplibs" 4536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 4537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $libs; do 4540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib= 4541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 4542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 4543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 4545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags $deplib" 4549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib ; then 4550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 4551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 4552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 4553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 4559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" != lib && test "$linkmode" != prog; then 4560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' is ignored for archives/objects" 4561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-l' '' "$deplib" 4564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 4565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 4566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 4567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 4569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for searchdir in $searchdirs; do 4571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for search_ext in .la $std_shrext .so .a; do 4572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Search the libtool library 4573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$searchdir/lib${name}${search_ext}" 4574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lib"; then 4575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$search_ext" = ".la"; then 4576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=yes 4577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 4579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 4581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$found" != yes; then 4585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # deplib doesn't seem to be a libtool library 4586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 4587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 4592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else # deplib is a libtool library 4595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 4596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to do some special things here, and not later. 4597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 4598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 4599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) 4600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$lib"; then 4601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 4602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 4603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 4604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for l in $old_library $library_names; do 4605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ll="$l" 4606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$ll" = "X$old_library" ; then # only static version available 4608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 4609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$lib" "" "." 4610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ladir="$func_dirname_result" 4611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib=$ladir/$old_library 4612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 4613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 4618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) ;; 4624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # -l 4628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.ltframework) 4629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 4630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib ; then 4635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 4636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 4637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 4638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 4644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 4645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 4646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pass" = conv && continue 4648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 4649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-L' '' "$deplib" 4650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path="$newlib_search_path $func_stripname_result" 4651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 4653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 4654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = scan; then 4658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-L' '' "$deplib" 4664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path="$newlib_search_path $func_stripname_result" 4665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-L' is ignored for archives/objects" 4668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # linkmode 4670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # -L 4672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) 4673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = link; then 4674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-R' '' "$deplib" 4675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$func_stripname_result 4676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure the xrpath contains only unique directories. 4677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 4678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 4679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) xrpath="$xrpath $dir" ;; 4680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) lib="$deplib" ;; 4686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 4687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 4688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 4692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 4693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Linking convenience modules into shared libraries is allowed, 4694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but linking other static libraries is non-portable. 4695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $dlpreconveniencelibs " in 4696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 4697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=no 4699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplibs_check_method in 4700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern*) 4701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 4702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 4703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 4704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville | $EGREP "$match_pattern_regex" > /dev/null; then 4705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=yes 4706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pass_all) 4709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=yes 4710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$valid_a_lib" != yes; then 4713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 4714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Trying to link with static lib archive $deplib." 4715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 4716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 4717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which you do not appear to have" 4718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because the file extensions .$libext of this argument makes me believe" 4719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** that it is just a static archive that I should not use here." 4720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 4722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the" 4723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** static library $deplib is not portable!" 4724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 4731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != link; then 4732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # linkmode 4740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # *.$libext 4741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo | *.$objext) 4742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 4743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" = prog; then 4745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 4746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there is no dlopen support or we're linking statically, 4747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we need to preload. 4748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $deplib" 4749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 4750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 4751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles="$newdlfiles $deplib" 4753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville %DEPLIBS%) 4758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alldeplibs=yes 4759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $deplib 4762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$found" = yes || test -f "$lib"; then : 4764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 4766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 4769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$lib" \ 4770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_error "\`$lib' is not a valid libtool archive" 4771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$lib" "" "." 4773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ladir="$func_dirname_result" 4774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 4776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen= 4777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlpreopen= 4778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir= 4779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 4780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 4781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inherited_linker_flags= 4782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the library was installed with an old release of libtool, 4783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # it will not redefine variables installed, or shouldnotlink 4784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville installed=yes 4785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shouldnotlink=no 4786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoidtemprpath= 4787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .la file 4790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 4791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Convert "-framework foo" to "foo.ltframework" 4793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inherited_linker_flags"; then 4794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 4795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 4796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_inherited_linker_flags " in 4797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $tmp_inherited_linker_flag "*) ;; 4798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 4799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 4803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link" || 4804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode,$pass" = "prog,scan" || 4805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$linkmode" != prog && test "$linkmode" != lib; }; then 4806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 4807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 4808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 4811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only check for convenience libraries 4812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" 4813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 4814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$old_library"; then 4815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of link library for \`$lib'" 4816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # It is a libtool convenience library, so add in its objects. 4818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville convenience="$convenience $ladir/$objdir/$old_library" 4819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_convenience="$old_convenience $ladir/$objdir/$old_library" 4820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" != prog && test "$linkmode" != lib; then 4821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a convenience library" 4822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 4824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 4825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_deps ; then 4827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$tmp_libs " in 4828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 4829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs="$tmp_libs $deplib" 4832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = conv 4835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the name of the library we link against. 4838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linklib= 4839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for l in $old_library $library_names; do 4840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linklib="$l" 4841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$linklib"; then 4843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of link library for \`$lib'" 4844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlopen. 4847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlopen; then 4848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 4849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 4850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname" || 4852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$dlopen_support" != yes || 4853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" = no; then 4854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there is no dlname, no dlopen support or we're linking 4855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # statically, we need to preload. We also need to preload any 4856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # dependent libraries so libltdl's deplib preloader doesn't 4857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bomb out in the load deplibs phase. 4858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$dlprefiles $lib $dependency_libs" 4859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles="$newdlfiles $lib" 4861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = dlopen 4864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 4866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $ladir in 4867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 4868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville abs_ladir=`cd "$ladir" && pwd` 4870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$abs_ladir"; then 4871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot determine absolute directory name of \`$ladir'" 4872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "passing it literally to the linker, although it might fail" 4873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville abs_ladir="$ladir" 4874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 4878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville laname="$func_basename_result" 4879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find the relevant object directory and library name. 4881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$installed" = Xyes; then 4882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 4883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "library \`$lib' was moved." 4884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir" 4885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir" 4886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$abs_ladir" 4887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$libdir" 4889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$libdir" 4890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 4892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 4894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir" 4895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir" 4896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove this search path later 4897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_path="$notinst_path $abs_ladir" 4898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir/$objdir" 4900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir/$objdir" 4901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove this search path later 4902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_path="$notinst_path $abs_ladir" 4903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $installed = yes 4905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.la' "$laname" 4906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 4907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlpreopen. 4909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen; then 4910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir" && test "$linkmode" = prog; then 4911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 4912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prefer using a static library (so that no silly _DYNAMIC symbols 4914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are required to link). 4915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_library"; then 4916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $dir/$old_library" 4917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Keep a list of preopened convenience libraries to check 4918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that they are being used correctly in the link pass. 4919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 4920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 4921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Otherwise, use the dlname, so that lt_dlopen finds it. 4922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$dlname"; then 4923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $dir/$dlname" 4924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $dir/$linklib" 4926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = dlpreopen 4928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 4930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the convenience library 4931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 4932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$dir/$old_library $deplibs" 4933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode,$pass" = "prog,link"; then 4934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$dir/$old_library $compile_deplibs" 4935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$dir/$old_library $finalize_deplibs" 4936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" # used for prog,scan pass 4938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog && test "$pass" != link; then 4944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path="$newlib_search_path $ladir" 4945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" 4946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linkalldeplibs=no 4948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$link_all_deplibs" != no || test -z "$library_names" || 4949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" = no; then 4950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linkalldeplibs=yes 4951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 4954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 4955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 4956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) func_stripname '-L' '' "$deplib" 4957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path="$newlib_search_path $func_stripname_result" 4958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Need to link against all dependency_libs? 4961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkalldeplibs" = yes; then 4962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 4963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Need to hardcode shared library paths 4965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # or/and link against static libraries 4966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 4967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_deps ; then 4969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$tmp_libs " in 4970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 4971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs="$tmp_libs $deplib" 4974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for deplib 4975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 4976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $linkmode = prog... 4977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 4979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names" && 4980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { { test "$prefer_static_libs" = no || 4981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$prefer_static_libs,$installed" = "built,yes"; } || 4982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$old_library"; }; then 4983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to hardcode the library path 4984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 4985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure the rpath contains only unique directories. 4986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$temp_rpath:" in 4987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$absdir:"*) ;; 4988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) temp_rpath="$temp_rpath$absdir:" ;; 4989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library path. 4993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip directories that are in the system default run-time 4994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # search path. 4995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 4996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 4997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 4998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_rpath " in 4999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 5000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) compile_rpath="$compile_rpath $absdir" 5001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 5005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 5006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 5008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 5009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_rpath="$finalize_rpath $libdir" 5010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $linkmode,$pass = prog,link... 5014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$alldeplibs" = yes && 5016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$deplibs_check_method" = pass_all || 5017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$build_libtool_libs" = yes && 5018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$library_names"; }; }; then 5019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We only need to search for static libraries 5020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_static=no # Whether the deplib will be linked statically 5025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville use_static_libs=$prefer_static_libs 5026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$use_static_libs" = built && test "$installed" = yes; then 5027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville use_static_libs=no 5028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names" && 5030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$use_static_libs" = no || test -z "$old_library"; }; then 5031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw*) 5033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # No point in relinking DLLs because paths are not encoded 5034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs="$notinst_deplibs $lib" 5035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=no 5036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = no; then 5039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs="$notinst_deplibs $lib" 5040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=yes 5041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This is a shared library 5045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Warn about portability, can't link against -module's on some 5047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # systems (darwin). Don't bleat about dlopened modules though! 5048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopenmodule="" 5049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dlpremoduletest in $dlprefiles; do 5050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dlpremoduletest" = "X$lib"; then 5051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopenmodule="$dlpremoduletest" 5052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 5053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 5056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 5057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 5058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the executable $output against the loadable module" 5059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the loadable module" 5061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** $linklib is not portable!" 5063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib && 5065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_into_libs" = yes; then 5066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library path. 5067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip directories that are in the system default run-time 5068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # search path. 5069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 5070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 5071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_rpath " in 5073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 5074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) compile_rpath="$compile_rpath $absdir" 5075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 5079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 5080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 5082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 5083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_rpath="$finalize_rpath $libdir" 5084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_archive_from_expsyms_cmds"; then 5090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # figure out the soname 5091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names 5092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 5093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 5094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 5095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 5096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use dlname if we got it. it's perfectly good, no? 5097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlname"; then 5098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$dlname" 5099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$soname_spec"; then 5100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bleh windows 5101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | mingw*) 5103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 5105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="-$major" 5106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval soname=\"$soname_spec\" 5109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$realname" 5111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make a new name for the extract_expsyms_cmds to use 5114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soroot="$soname" 5115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$soroot" 5116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$func_basename_result" 5117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.dll' "$soname" 5118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib=libimp-$func_stripname_result.a 5119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the library has no export list, then create one now 5121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$soname-def"; then : 5122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "extracting exported symbol list from \`$soname'" 5124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 5125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create $newlib 5128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$newlib"; then :; else 5129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating import library for \`$soname'" 5130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 5131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # make sure the library variables are pointing to the new library 5133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$output_objdir 5134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linklib=$newlib 5135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # test -n "$old_archive_from_expsyms_cmds" 5136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog || test "$mode" != relink; then 5138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath= 5139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir= 5140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add= 5141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=yes 5142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_action in 5143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville immediate | unsupported) 5144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = no; then 5145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$linklib" 5146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 5148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4*uw2*) add_dir="-L$dir" ;; 5149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 5150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-unixware7*) add_dir="-L$dir" ;; 5151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin* ) 5152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # if the lib is a (non-dlopened) module then we can not 5153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # link against it, someone is ignoring the earlier warnings 5154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if /usr/bin/file -L $add 2> /dev/null | 5155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP ": [^:]* bundle" >/dev/null ; then 5156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dlopenmodule" != "X$lib"; then 5157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: lib $linklib is a module, not a shared library" 5158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$old_library" ; then 5159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 5160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** And there doesn't seem to be a static archive available" 5161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** The link will probably fail, sorry" 5162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$old_library" 5164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$old_library"; then 5166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$old_library" 5167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = no; then 5171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sunos*) add_shlibpath="$dir" ;; 5173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$dir" 5175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = no; then 5177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath="$dir" 5178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=no 5181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink) 5184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = yes && 5185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_direct_absolute" = no; then 5186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$linklib" 5187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = yes; then 5188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$dir" 5189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try looking first in the location we're being installed to. 5190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 5191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 5192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*) 5193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="$add_dir -L$inst_prefix_dir$libdir" 5194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = yes; then 5199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath="$dir" 5200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=no 5203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) lib_linked=no ;; 5206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$lib_linked" != yes; then 5209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "unsupported hardcode properties" 5210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$add_shlibpath"; then 5213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$compile_shlibpath: in 5214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$add_shlibpath:"*) ;; 5215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 5216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 5219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 5220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && compile_deplibs="$add $compile_deplibs" 5221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && deplibs="$add_dir $deplibs" 5223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && deplibs="$add $deplibs" 5224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" != yes && 5225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_minus_L" != yes && 5226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_shlibpath_var" = yes; then 5227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$finalize_shlibpath: in 5228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 5229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog || test "$mode" = relink; then 5236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath= 5237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir= 5238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add= 5239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Finalize command for both is simple: just hardcode it. 5240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = yes && 5241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_direct_absolute" = no; then 5242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$libdir/$linklib" 5243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = yes; then 5244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$libdir" 5245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = yes; then 5247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$finalize_shlibpath: in 5248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 5249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_automatic" = yes; then 5253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir" && 5254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$inst_prefix_dir$libdir/$linklib" ; then 5255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$inst_prefix_dir$libdir/$linklib" 5256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$libdir/$linklib" 5258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We cannot seem to hardcode it, guess we'll fake it. 5261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$libdir" 5262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try looking first in the location we're being installed to. 5263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 5264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 5265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*) 5266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="$add_dir -L$inst_prefix_dir$libdir" 5267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 5271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 5274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 5275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 5276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && deplibs="$add_dir $deplibs" 5278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && deplibs="$add $deplibs" 5279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" = prog; then 5282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Here we assume that one of hardcode_direct or hardcode_minus_L 5283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is not unsupported. This is valid on all known static and 5284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # shared platforms. 5285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" != unsupported; then 5286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_library" && linklib="$old_library" 5287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$dir/$linklib $compile_deplibs" 5288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$dir/$linklib $finalize_deplibs" 5289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="-l$name -L$dir $compile_deplibs" 5291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="-l$name -L$dir $finalize_deplibs" 5292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$build_libtool_libs" = yes; then 5294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Not a shared library 5295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$deplibs_check_method" != pass_all; then 5296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We're trying link a shared library against a static one 5297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but the system doesn't support it. 5298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just print a warning and add the library to dependency_libs so 5300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that the program can be linked against the static library. 5301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 5302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: This system can not link to static lib archive $lib." 5303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 5304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 5305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which you do not appear to have." 5306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes; then 5307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** But as you try to build a module library, libtool will still create " 5308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** a static module, that should work as long as the dlopening application" 5309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 5310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$global_symbol_pipe"; then 5311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 5312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** However, this would only work if libtool was able to extract symbol" 5313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 5314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** not find such a program. So, this module is probably useless." 5315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 5316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 5318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 5319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 5320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 5322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$dir/$old_library $deplibs" 5326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_static=yes 5327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # link shared/static library? 5329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 5331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dependency_libs" && 5332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$hardcode_into_libs" != yes || 5333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_old_libs" = yes || 5334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$link_static" = yes; }; then 5335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract -R from dependency_libs 5336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_deplibs= 5337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $dependency_libs; do 5338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 5339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) func_stripname '-R' '' "$libdir" 5340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_xrpath=$func_stripname_result 5341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $xrpath " in 5342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $temp_xrpath "*) ;; 5343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) xrpath="$xrpath $temp_xrpath";; 5344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac;; 5345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) temp_deplibs="$temp_deplibs $libdir";; 5346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$temp_deplibs" 5349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path="$newlib_search_path $absdir" 5352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link against this library 5353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 5354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ... and its dependency_libs 5355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 5356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 5357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 5358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_deps ; then 5359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$tmp_libs " in 5360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs="$tmp_libs $deplib" 5364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$link_all_deplibs" != no; then 5367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the search paths of all dependency libraries 5368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 5369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 5370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) path="$deplib" ;; 5371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 5372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$deplib" "" "." 5373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 5374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 5375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 5376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 5377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 5379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$absdir"; then 5380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot determine absolute directory name of \`$dir'" 5381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$dir" 5382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "^installed=no" $deplib > /dev/null; then 5386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 5388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl= 5389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 5390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$deplibrary_names" ; then 5391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tmp in $deplibrary_names ; do 5392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl=$tmp 5393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$absdir/$objdir/$depdepl" ; then 5395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl="$absdir/$objdir/$depdepl" 5396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$darwin_install_name"; then 5398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 5401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 5402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path= 5403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path="-L$absdir/$objdir" 5408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 5413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$deplib' is not a valid libtool archive" 5414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$absdir" != "$libdir" && \ 5415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$deplib' seems to be moved" 5416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path="-L$absdir" 5418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs " in 5422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $path "*) ;; 5423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) deplibs="$path $deplibs" ;; 5424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # link_all_deplibs != no 5427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # linkmode = lib 5428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for deplib in $libs 5429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = link; then 5430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = "prog"; then 5431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 5432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 5433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 5435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$newdependency_libs" 5438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen; then 5439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the dlpreopened libraries before other libraries 5440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $save_deplibs; do 5441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 5442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != dlopen; then 5445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != conv; then 5446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure lib_search_path contains only unique directories. 5447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_search_path= 5448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $newlib_search_path; do 5449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$lib_search_path " in 5450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 5451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) lib_search_path="$lib_search_path $dir" ;; 5452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path= 5455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" != "prog,link"; then 5458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vars="deplibs" 5459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vars="compile_deplibs finalize_deplibs" 5461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $vars dependency_libs; do 5463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add libraries to $var in reverse order 5464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval tmp_libs=\"\$$var\" 5465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 5466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $tmp_libs; do 5467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: Pedantically, this is the right thing to do, so 5468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that some nasty dependency loop isn't accidentally 5469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # broken: 5470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #new_libs="$deplib $new_libs" 5471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Pragmatically, this seems to cause very few problems in 5472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # practice: 5473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 5474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) new_libs="$deplib $new_libs" ;; 5475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) ;; 5476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # And here is the reason: when a library appears more 5478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than once as an explicit dependence of a library, or 5479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is implicitly linked in more than once by the 5480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # compiler, it is considered special, and multiple 5481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # occurrences thereof are not removed. Compare this 5482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # with having the same library being listed as a 5483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # dependency of multiple other libraries: in this case, 5484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we know (pedantically, we assume) the library does not 5485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # need to be listed more than once, so we keep only the 5486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # last copy. This is not always right, but it is rare 5487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # enough that we require users that really mean to play 5488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # such unportable linking tricks to link the library 5489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # using -Wl,-lname, so that libtool does not consider it 5490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # for duplicate removal. 5491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $specialdeplibs " in 5492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) new_libs="$deplib $new_libs" ;; 5493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 5495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 5496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$deplib $new_libs" ;; 5497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 5504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $new_libs; do 5505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 5506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 5507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $tmp_libs " in 5508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 5509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) tmp_libs="$tmp_libs $deplib" ;; 5510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) tmp_libs="$tmp_libs $deplib" ;; 5513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval $var=\"$tmp_libs\" 5516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for var 5517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Last step: remove runtime libs from dependency_libs 5519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # (they stay in deplibs) 5520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 5521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $dependency_libs ; do 5522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps $compiler_lib_search_path " in 5523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 5524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 5525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 5528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs="$tmp_libs $i" 5529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs=$tmp_libs 5532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for pass 5533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 5534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 5535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog || test "$linkmode" = lib; then 5537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 5538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 5541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlib) 5542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 5543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for archives" 5544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs" in 5547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *\ -l* | *\ -L*) 5548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' and \`-L' are ignored for archives" ;; 5549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$rpath" && \ 5552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-rpath' is ignored for archives" 5553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$xrpath" && \ 5555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-R' is ignored for archives" 5556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 5558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info/-version-number' is ignored for archives" 5559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 5561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for archives" 5562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$export_symbols$export_symbols_regex" && \ 5564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-export-symbols' is ignored for archives" 5565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now set the variables for building old libraries. 5567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 5568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output" 5569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objs="$objs$old_deplibs" 5570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 5573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we only generate libraries of the form `libNAME.la'. 5574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $outputname in 5575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib*) 5576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.la' "$outputname" 5577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 5578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 5579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libname=\"$libname_spec\" 5580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$module" = no && \ 5583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "libtool library \`$output' must begin with \`lib'" 5584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_lib_prefix" != no; then 5586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the "lib" prefix for modules if required 5587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.la' "$outputname" 5588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 5589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 5590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libname=\"$libname_spec\" 5591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.la' "$outputname" 5593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=$func_stripname_result 5594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$objs"; then 5599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$deplibs_check_method" != pass_all; then 5600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 5601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 5603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 5604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** objects $objs is not portable!" 5605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs="$libobjs $objs" 5606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$dlself" != no && \ 5610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen self' is ignored for libtool libraries" 5611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $rpath 5613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 5614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$#" -gt 1 && \ 5615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "ignoring multiple \`-rpath's for a libtool library" 5616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_libdir="$1" 5618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs= 5620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$rpath"; then 5621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 5622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Building a libtool convenience library. 5623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some compilers have problems with a `.al' extension so 5624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convenience libraries should have the same extension an 5625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # archive normally would. 5626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext $oldlibs" 5627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=convenience 5628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 5629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 5632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 5633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 5635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for convenience libraries" 5636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Parse the version information argument. 5639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=':' 5640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $vinfo 0 0 0 5641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 5642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 5643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$7" && \ 5645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "too many parameters to \`-version-info'" 5646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convert absolute version numbers to libtool ages 5648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # this retains compatibility with .la files and attempts 5649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to make the code below a bit more comprehensible 5650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $vinfo_number in 5652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville yes) 5653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_major="$1" 5654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_minor="$2" 5655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_revision="$3" 5656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 5657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # There are really only two kinds -- those that 5658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use the current revision as the major version 5659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and those that subtract age and use age as 5660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a minor version. But, then there is irix 5661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which has an extra 1 added just for fun 5662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 5663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 5664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin|linux|osf|windows|none) 5665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $number_major + $number_minor 5666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current=$func_arith_result 5667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$number_minor" 5668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_revision" 5669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville freebsd-aout|freebsd-elf|sunos) 5671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current="$number_major" 5672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_minor" 5673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="0" 5674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville irix|nonstopux) 5676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $number_major + $number_minor 5677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current=$func_arith_result 5678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$number_minor" 5679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_minor" 5680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_irix_increment=no 5681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no) 5685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current="$1" 5686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$2" 5687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$3" 5688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check that each of the things are valid numbers. 5692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $current in 5693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 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]) ;; 5694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "CURRENT \`$current' must be a nonnegative integer" 5696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 5697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $revision in 5701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 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]) ;; 5702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "REVISION \`$revision' must be a nonnegative integer" 5704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 5705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $age in 5709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 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]) ;; 5710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "AGE \`$age' must be a nonnegative integer" 5712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 5713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$age" -gt "$current"; then 5717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "AGE \`$age' is greater than the current interface number \`$current'" 5718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 5719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Calculate the version variables. 5722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 5723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 5724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring= 5725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 5726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville none) ;; 5727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin) 5729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Like Linux, but with the current version available in 5730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # verstring for coding it into the library header 5731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 5733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$age.$revision" 5734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Darwin ld doesn't like 0 for these options... 5735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current + 1 5736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville minor_current=$func_arith_result 5737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 5738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 5739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville freebsd-aout) 5742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 5743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$revision"; 5744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville freebsd-elf) 5747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 5748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current" 5749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville irix | nonstopux) 5752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$lt_irix_increment" = "Xno"; then 5753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age + 1 5756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 5758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 5760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville nonstopux) verstring_prefix=nonstopux ;; 5761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) verstring_prefix=sgi ;; 5762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring_prefix$major.$revision" 5764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add in all the interfaces that we are compatible with. 5766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$revision 5767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$loop" -ne 0; do 5768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $revision - $loop 5769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville iface=$func_arith_result 5770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $loop - 1 5771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$func_arith_result 5772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring_prefix$major.$iface:$verstring" 5773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Before this point, $major must not contain `.'. 5776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$major 5777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$revision" 5778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linux) 5781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 5783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$age.$revision" 5784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville osf) 5787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 5789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$age.$revision" 5790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$current.$age.$revision" 5791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add in all the interfaces that we are compatible with. 5793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$age 5794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$loop" -ne 0; do 5795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $loop 5796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville iface=$func_arith_result 5797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $loop - 1 5798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$func_arith_result 5799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring:${iface}.0" 5800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make executables depend on our current version. 5803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring:${current}.0" 5804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qnx) 5807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 5808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current" 5809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sunos) 5812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 5813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$revision" 5814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville windows) 5817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Use '-' rather than '.', since we only want one 5818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # extension on DOS 8.3 filesystems. 5819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 5820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 5821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="-$major" 5822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "unknown library version type \`$version_type'" 5826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clear the version info if we defaulted, and they specified a release. 5830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$vinfo" && test -n "$release"; then 5831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 5832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 5833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin) 5834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we can't check for "0.0" in archive_cmds due to quoting 5835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # problems, so we reset it completely 5836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring= 5837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="0.0" 5840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_version" = no; then 5843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 5844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".0.0" 5846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove version info from name if versioning should be avoided 5850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$avoid_version" = yes && test "$need_version" = no; then 5851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 5852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 5853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="" 5854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see if the archive will have undefined symbols. 5857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined" = yes; then 5858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined_flag" = unsupported; then 5859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "undefined symbols not allowed in $host shared libraries" 5860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 5861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 5862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow undefined symbols. 5865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined_flag="$no_undefined_flag" 5866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_generate_dlsyms "$libname" "$libname" "yes" 5871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs="$libobjs $symfileobj" 5872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 5873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" != relink; then 5875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove our outputs, but don't remove object files since they 5876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # may have been created when compiling PIC objects. 5877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist= 5878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tempremovelist=`$ECHO "$output_objdir/*"` 5879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for p in $tempremovelist; do 5880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $p in 5881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$objext) 5882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 5884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$precious_files_regex" != "X"; then 5885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 5886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville then 5887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$removelist $p" 5891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) ;; 5893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$removelist" && \ 5896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "${RM}r \$removelist" 5897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now set the variables for building old libraries. 5900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 5901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$oldlibs $output_objdir/$libname.$libext" 5902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform .lo files to .o files. 5904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 5905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Eliminate all temporary directories. 5908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #for path in $notinst_path; do 5909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 5910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 5911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 5912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #done 5913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$xrpath"; then 5915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specified any rpath flags, then add them. 5916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_xrpath= 5917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $xrpath; do 5918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_xrpath="$temp_xrpath -R$libdir" 5919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 5920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 5921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_rpath="$finalize_rpath $libdir" ;; 5922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 5925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$temp_xrpath $dependency_libs" 5926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure dlfiles contains only unique files that won't be dlpreopened 5930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_dlfiles="$dlfiles" 5931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles= 5932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $old_dlfiles; do 5933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $dlprefiles $dlfiles " in 5934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $lib "*) ;; 5935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dlfiles="$dlfiles $lib" ;; 5936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure dlprefiles contains only unique files 5940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_dlprefiles="$dlprefiles" 5941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles= 5942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $old_dlprefiles; do 5943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$dlprefiles " in 5944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $lib "*) ;; 5945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dlprefiles="$dlprefiles $lib" ;; 5946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 5950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$rpath"; then 5951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 5953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # these systems don't actually have a c library (as such)! 5954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 5956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Rhapsody C library is in the System framework 5957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs System.ltframework" 5958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-netbsd*) 5960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't link with libc until the a.out ld.so is fixed. 5961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc due to us having libc/libc_r. 5964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5* | *-*-sco5v6*) 5966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Causes problems with __ctype 5967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compiler inserts libc in the correct place for threads to work 5970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add libc to deplibs on all other systems if necessary. 5973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_need_lc" = "yes"; then 5974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplibs -lc" 5975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform deplibs into only deplibs that can be linked in shared. 5981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name_save=$name 5982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname_save=$libname 5983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release_save=$release 5984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix_save=$versuffix 5985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major_save=$major 5986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # I'm not sure if I'm treating the release correctly. I think 5987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # release should show up in the -l (ie -lgmp5) so we don't want to 5988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # add it in twice. Is that correct? 5989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release="" 5990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="" 5991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major="" 5992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs= 5993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=no 5994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplibs_check_method in 5995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pass_all) 5996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't check for shared/static. Everything works. 5997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This might be a little naive. We might want to check 5998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whether the library exists or not. But this is on 5999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # osf3 & osf4 and I'm not really sure... Just 6000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # implementing what was already the behavior. 6001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs=$deplibs 6002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_compile) 6004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This code stresses the "libraries are programs" paradigm to its 6005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # limits. Maybe even breaks it. We compile a program, linking it 6006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # against the deplibs as a proxy for the library. Then we can check 6007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whether they linked in statically or dynamically with ldd. 6008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest.c 6009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat > conftest.c <<EOF 6010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int main() { return 0; } 6011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 6012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest 6013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 6014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ldd_output=`ldd conftest` 6015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $deplibs; do 6016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $i in 6017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 6018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$i" 6019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 6022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 6023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 6025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 6029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 6030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplib_matches; shift 6032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_match=$1 6033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 6040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 6041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which I believe you do not have" 6042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because a test_compile did reveal that the linker did not use it for" 6043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 6044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Error occurred in the first compile. Let's try to salvage 6054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the situation: Compile a separate program for each library. 6055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $deplibs; do 6056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $i in 6057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 6058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$i" 6059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest 6061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 6062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ldd_output=`ldd conftest` 6063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 6065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 6066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 6068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 6072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 6073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplib_matches; shift 6075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_match=$1 6076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 6083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 6084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which you do not appear to have" 6085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because a test_compile did reveal that the linker did not use this one" 6086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 6087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 6093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** make it link in! You will probably need to install it or some" 6094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** library that it depends on before this library will be fully" 6095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** functional. Installing it before continuing would be even better." 6096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $i" 6100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file_magic*) 6106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 6107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for a_deplib in $deplibs; do 6109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $a_deplib in 6110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 6111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$a_deplib" 6112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 6115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $a_deplib "*) 6116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 6118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 6122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 6123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for potent_lib in $potential_libs; do 6126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Follow soft links. 6127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ls -lLd "$potent_lib" 2>/dev/null | 6128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP " -> " >/dev/null; then 6129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The statement above tries to avoid entering an 6132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # endless loop below, in case of cyclic links. 6133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We might still enter an endless loop, since a link 6134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # loop can be closed while we follow links, 6135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but so what? 6136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potlib="$potent_lib" 6137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test -h "$potlib" 2>/dev/null; do 6138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 6139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $potliblink in 6140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 6141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 6142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 6145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -e 10q | 6146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP "$file_magic_regex" > /dev/null; then 6147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 6149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 6150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 6155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 6159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 6160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which you do not appear to have" 6161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because I did check the linker path looking for a file starting" 6162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$potlib" ; then 6163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 6164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname and none of the candidates passed a file format test" 6166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** using a file magic. Last file checked: $potlib" 6167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add a -L argument. 6172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # Gone through all deplibs. 6176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern*) 6178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 6179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for a_deplib in $deplibs; do 6181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $a_deplib in 6182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 6183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$a_deplib" 6184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 6187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $a_deplib "*) 6188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 6190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 6194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 6195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for potent_lib in $potential_libs; do 6198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potlib="$potent_lib" # see symlink-check above in file_magic test 6199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 6200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP "$match_pattern_regex" > /dev/null; then 6201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 6203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 6204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 6209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** I have the capability to make that library automatically link in when" 6213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** you link to this library. But I can only do this if you have a" 6214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** shared version of the library, which you do not appear to have" 6215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because I did check the linker path looking for a file starting" 6216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$potlib" ; then 6217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 6218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname and none of the candidates passed a file format test" 6220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** using a regex pattern. Last file checked: $potlib" 6221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add a -L argument. 6226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="$newdeplibs $a_deplib" 6227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # Gone through all deplibs. 6230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville none | unknown | *) 6232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="" 6233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 6234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 6235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $predeps $postdeps ; do 6237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # can't use Xsed below, because $i might contain '/' 6238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 6239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 6242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP . >/dev/null; then 6243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$deplibs_check_method" = "Xnone"; then 6245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 6246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: inter-library dependencies are not known to be supported." 6248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** All declared inter-library dependencies are being dropped." 6250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 6251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=$versuffix_save 6255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$major_save 6256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release=$release_save 6257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=$libname_save 6258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$name_save 6259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 6262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Rhapsody replace the C library with the System framework 6263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 6264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$droppeddeps" = yes; then 6268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes; then 6269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 6271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 6272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** a static module, that should work as long as the dlopening" 6273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** application is linked with the -dlopen flag." 6274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$global_symbol_pipe"; then 6275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** However, this would only work if libtool was able to extract symbol" 6277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 6278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** not find such a program. So, this module is probably useless." 6279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 6280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 6282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext" 6283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 6284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 6285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 6287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** The inter-library dependencies that have been dropped here will be" 6290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** automatically added whenever a program is linked with this library" 6291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** or is declared to -dlopen it." 6292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined" = no; then 6294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 6295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Since this library must not contain undefined symbols," 6296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** because either the platform does not support them or" 6297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** it was explicitly requested with -no-undefined," 6298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** libtool will only create a static version of it." 6299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 6300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext" 6301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 6302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 6303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 6305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Done checking deplibs! 6310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs=$newdeplibs 6311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Time to change all our "foo.ltframework" stuff back to "-framework foo" 6313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 6315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # move library search paths that coincide with paths to not yet 6322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # installed libraries to the beginning of the library search list 6323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 6324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for path in $notinst_path; do 6325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 6326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) ;; 6327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs " in 6329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) 6330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs="$new_libs -L$path/$objdir" ;; 6331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 6336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 6337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 6338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 6339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 6340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$new_libs $deplib" ;; 6341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$new_libs $deplib" ;; 6344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$new_libs" 6347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # All the library-specific variables (install_libdir is set above). 6349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 6350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 6351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 6352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Test again, we may have decided not to build it any more 6354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 6355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_into_libs" = yes; then 6356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library paths 6357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 6358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dep_rpath= 6359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$finalize_rpath" 6360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$mode" != relink && rpath="$compile_rpath$rpath" 6361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $rpath; do 6362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 6363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 6364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 6365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 6366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 6368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 6369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 6370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 6373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 6378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dep_rpath="$dep_rpath $flag" 6379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 6381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$perm_rpath " in 6382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 6383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) perm_rpath="$perm_rpath $libdir" ;; 6384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 6388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 6389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 6390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 6391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec_ld"; then 6392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 6393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval dep_rpath=\"$hardcode_libdir_flag_spec\" 6395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$runpath_var" && test -n "$perm_rpath"; then 6398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 6399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 6400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $perm_rpath; do 6401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$rpath$dir:" 6402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 6404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 6406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shlibpath="$finalize_shlibpath" 6409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 6410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath"; then 6411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 6412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the real and link names of the library. 6415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 6416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval library_names=\"$library_names_spec\" 6417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names 6418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 6420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$soname_spec"; then 6423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval soname=\"$soname_spec\" 6424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$realname" 6426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname"; then 6428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname=$soname 6429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$output_objdir/$realname" 6432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linknames= 6433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for link 6434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 6435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linknames="$linknames $link" 6436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Use standard objects if they are pic 6439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 6440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 6441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles= 6443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 6444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 6445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.uexp" 6446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $export_symbols" 6447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville orig_export_symbols= 6450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 6451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cygwin* | mingw*) 6452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 6453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # exporting using user supplied symfile 6454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 6455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and it's NOT already a .def file. Must figure out 6456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which of the given symbols are data symbols and tag 6457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # them as such. So, trigger use of export_symbols_cmds. 6458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # export_symbols gets reassigned inside the "prepare 6459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the list of exported symbols" if statement, so the 6460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # include_expsyms logic still works. 6461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville orig_export_symbols="$export_symbols" 6462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols= 6463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville always_export_symbols=yes 6464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepare the list of exported symbols 6470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$export_symbols"; then 6471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 6472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$libname.la'" 6473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.exp" 6474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $export_symbols 6475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$export_symbols_cmds 6476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 6477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $cmds; do 6478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmd=\"$cmd\" 6480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $cmd" 6481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_len_result 6482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 6483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$cmd" 'exit $?' 6484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville skipped_export=false 6485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command line is too long to execute in one step. 6487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "using reloadable object file for export list..." 6488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville skipped_export=: 6489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Break out early, otherwise skipped_export may be 6490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # set to false by a later but shorter cmd. 6491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 6492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 6496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 6497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 6498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 6503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_export_symbols="$export_symbols" 6504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 6505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 6506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 6509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The given exports_symbols file has to be filtered, so filter it. 6510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 6511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: $output_objdir/$libname.filter potentially contains lots of 6512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 's' commands which not all seds can handle. GNU sed should be fine 6513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # though. Also, the filter scales superlinearly with the number of 6514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # global variables. join(1) would be nice here, but unfortunately 6515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # isn't a blessed tool. 6516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 6517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 6518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols=$output_objdir/$libname.def 6519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 6520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs= 6523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for test_deplib in $deplibs; do 6524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $convenience " in 6525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $test_deplib "*) ;; 6526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs="$tmp_deplibs $test_deplib" 6528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$tmp_deplibs" 6532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 6534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec" && 6535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$compiler_needs_object" = yes && 6536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libobjs"; then 6537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # extract the archives, so we have objects to list. 6538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # TODO: could optimize this to just extract one archive. 6539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville whole_archive_flag_spec= 6540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec"; then 6542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_libobjs=$libobjs 6543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 6544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 6545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 6547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 6548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $convenience 6550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs="$libobjs $func_extract_archives_result" 6551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 6552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 6556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$thread_safe_flag_spec\" 6557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags="$linker_flags $flag" 6558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make a backup of the uninstalled library when relinking 6561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = relink; then 6562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 6563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each of the archive commands. 6566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes && test -n "$module_cmds" ; then 6567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 6568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$module_expsym_cmds\" 6569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_expsym_cmds 6570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$module_cmds\" 6572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_cmds 6573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 6576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$archive_expsym_cmds\" 6577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_expsym_cmds 6578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$archive_cmds\" 6580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_cmds 6581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$skipped_export" != "X:" && 6585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" && 6586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_len_result && 6587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 6588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 6589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command line is too long to link in one step, link piecewise 6591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # or, if using GNU ld and skipped_export is not :, use a linker 6592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # script. 6593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Save the value of $output and $libobjs because we want to 6595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use them later. If we have whole_archive_flag_spec, we 6596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # want to use save_libobjs as it was before 6597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whole_archive_flag_spec was expanded, because we can't 6598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # assume the linker understands whole_archive_flag_spec. 6599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This may have to be revisited, in case too many 6600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convenience libraries get linked in and end up exceeding 6601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the spec. 6602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 6603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_libobjs=$libobjs 6604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_output=$output 6606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 6607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clear the reloadable object creation command queue and 6609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # initialize k to one. 6610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cmds= 6611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_cmds= 6612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 6613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_robj= 6614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville k=1 6615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 6617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=${output_objdir}/${output_la}.lnkscript 6618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating GNU ld script: $output" 6619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO 'INPUT (' > $output 6620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_libobjs 6621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 6622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$obj" >> $output 6623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO ')' >> $output 6625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $output" 6626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 6627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=${output_objdir}/${output_la}.lnk 6628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating linker input file list: $output" 6629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : > $output 6630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set x $save_libobjs 6631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville firstobj= 6633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_needs_object" = yes; then 6634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville firstobj="$1 " 6635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj 6638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 6639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$obj" >> $output 6640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $output" 6642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$firstobj\"$file_list_spec$output\" 6643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$save_libobjs"; then 6645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating reloadable object files..." 6646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$output_objdir/$output_la-${k}.$objext 6647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$reload_cmds\" 6648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" 6649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len0=$func_len_result 6650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 6651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Loop over the list of objects to be linked. 6653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_libobjs 6654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 6655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $obj" 6656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len + $func_len_result 6657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 6658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$objlist" = X || 6659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$len" -lt "$max_cmd_len"; then 6660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append objlist " $obj" 6661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command $test_cmds is almost too long, add a 6663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # command to the queue. 6664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$k" -eq 1 ; then 6665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The first file doesn't have a previous command to add. 6666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 6667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # All subsequent reloadable object files will link in 6669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the last one created. 6670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 6671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_robj=$output_objdir/$output_la-${k}.$objext 6673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $k + 1 6674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville k=$func_arith_result 6675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$output_objdir/$output_la-${k}.$objext 6676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist=$obj 6677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $last_robj" 6678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len0 + $func_len_result 6679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 6680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Handle the remaining objects by creating one last 6683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # reloadable object file. All subsequent reloadable object 6684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # files will link in the last one created. 6685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 6686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 6687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$last_robj"; then 6688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 6689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $output" 6691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output= 6694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${skipped_export-false}; then 6697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$libname.la'" 6698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.exp" 6699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $export_symbols 6700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs=$output 6701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Append the command to create the export file. 6702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 6703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 6704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$last_robj"; then 6705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 6706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$save_libobjs" && 6710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating a temporary reloadable object file: $output" 6711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Loop through the commands generated above and execute them. 6713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 6714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $concat_cmds; do 6715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 6717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$cmd" 6718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 6719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 6720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$cmd" || { 6721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_exit=$? 6722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 6724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = relink; then 6725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ( cd "$output_objdir" && \ 6726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "${realname}T" && \ 6727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "${realname}U" "$realname" ) 6728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $lt_exit 6731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 6732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex" && ${skipped_export-false}; then 6736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 6737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 6738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${skipped_export-false}; then 6742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 6743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_export_symbols="$export_symbols" 6744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 6745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 6746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$orig_export_symbols"; then 6749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The given exports_symbols file has to be filtered, so filter it. 6750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 6751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: $output_objdir/$libname.filter potentially contains lots of 6752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 's' commands which not all seds can handle. GNU sed should be fine 6753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # though. Also, the filter scales superlinearly with the number of 6754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # global variables. join(1) would be nice here, but unfortunately 6755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # isn't a blessed tool. 6756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 6757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 6758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols=$output_objdir/$libname.def 6759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 6760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs=$output 6764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the value of output. 6765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$save_output 6766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 6768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 6769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 6770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Expand the library linking commands again to reset the 6772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # value of $libobjs for piecewise linking. 6773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each of the archive commands. 6775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes && test -n "$module_cmds" ; then 6776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 6777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_expsym_cmds 6778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_cmds 6780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 6783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_expsym_cmds 6784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_cmds 6786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$delfiles"; then 6791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Append the command to remove temporary files to $cmds. 6792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$cmds~\$RM $delfiles\" 6793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add any objects from preloaded convenience libraries 6796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlprefiles"; then 6797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 6798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 6799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $dlprefiles 6801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs="$libobjs $func_extract_archives_result" 6802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 6803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 6806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $cmds; do 6807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmd=\"$cmd\" 6809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 6810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$cmd" 6811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 6812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 6813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$cmd" || { 6814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_exit=$? 6815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 6817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = relink; then 6818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ( cd "$output_objdir" && \ 6819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "${realname}T" && \ 6820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "${realname}U" "$realname" ) 6821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $lt_exit 6824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 6825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 6827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 6829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = relink; then 6830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 6831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 6833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$whole_archive_flag_spec"; then 6834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 6835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 6839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create links to the real library. 6842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for linkname in $linknames; do 6843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$realname" != "$linkname"; then 6844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 6845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If -module or -export-dynamic was specified, set the dlname. 6849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes || test "$export_dynamic" = yes; then 6850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On all known operating systems, these are identical. 6851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname="$soname" 6852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj) 6857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 6858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for objects" 6859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs" in 6862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *\ -l* | *\ -L*) 6863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' and \`-L' are ignored for objects" ;; 6864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$rpath" && \ 6867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-rpath' is ignored for objects" 6868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$xrpath" && \ 6870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-R' is ignored for objects" 6871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 6873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info' is ignored for objects" 6874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 6876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for objects" 6877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 6879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 6880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$objs$old_deplibs" && \ 6881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot build library object \`$output' from non-libtool objects" 6882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj=$output 6884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$libobj" 6885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj=$func_lo2o_result 6886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj= 6889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj="$output" 6890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old objects. 6894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $obj $libobj 6895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Objects from convenience libraries. This assumes 6897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # single-version convenience libraries. Whenever we create 6898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # different ones for PIC/non-PIC, this we'll have to duplicate 6899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the extraction. 6900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_conv_objs= 6901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop= 6902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # reload_cmds runs $LD directly, so let us get rid of 6903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -Wl from whole_archive_flag_spec and hope we can get by with 6904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # turning comma into space.. 6905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wl= 6906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 6908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec"; then 6909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 6910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 6911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${obj}x" 6913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 6914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $convenience 6916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_conv_objs="$reload_objs $func_extract_archives_result" 6917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create the old-style object. 6921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 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 6922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$obj" 6924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$reload_cmds" 'exit $?' 6925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Exit if we aren't doing a library object file. 6927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libobj"; then 6928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 6929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 6930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 6933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" != yes; then 6936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 6937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 6938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create an invalid libtool object if no PIC, so that we don't 6941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # accidentally link it into a program. 6942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $show "echo timestamp > $libobj" 6943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 6944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 6945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$pic_flag" || test "$pic_mode" != default; then 6948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only do commands if we really have different PIC objects. 6949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_objs="$libobjs $reload_conv_objs" 6950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$libobj" 6951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$reload_cmds" 'exit $?' 6952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 6955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 6956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 6959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 6962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*) func_stripname '' '.exe' "$output" 6964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$func_stripname_result.exe;; 6965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 6967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info' is ignored for programs" 6968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 6970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for programs" 6971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$preload" = yes \ 6973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_support" = unknown \ 6974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_self" = unknown \ 6975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_self_static" = unknown && \ 6976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 6977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 6980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Rhapsody replace the C library is the System framework 6981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 6982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 6983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 6988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow lazy linking, it breaks C++ global constructors 6989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # But is supposedly fixed on 10.4 or later (yay!). 6990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$tagname" = CXX ; then 6991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 6992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 10.[0123]) 6993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command="$compile_command ${wl}-bind_at_load" 6994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command="$finalize_command ${wl}-bind_at_load" 6995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Time to change all our "foo.ltframework" stuff back to "-framework foo" 6999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # move library search paths that coincide with paths to not yet 7006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # installed libraries to the beginning of the library search list 7007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 7008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for path in $notinst_path; do 7009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 7010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) ;; 7011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $compile_deplibs " in 7013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) 7014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs="$new_libs -L$path/$objdir" ;; 7015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $compile_deplibs; do 7020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 7021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 7022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 7023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 7024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$new_libs $deplib" ;; 7025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$new_libs $deplib" ;; 7028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$new_libs" 7031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command="$compile_command $compile_deplibs" 7034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command="$finalize_command $finalize_deplibs" 7035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$rpath$xrpath"; then 7037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specified any rpath flags, then add them. 7038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $rpath $xrpath; do 7039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This is the magic to use -rpath. 7040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 7041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 7042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_rpath="$finalize_rpath $libdir" ;; 7043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now hardcode the library paths 7048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 7049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 7050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $compile_rpath $finalize_rpath; do 7051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 7052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 7053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 7054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 7055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 7057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 7067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$rpath $flag" 7068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 7070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$perm_rpath " in 7071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 7072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) perm_rpath="$perm_rpath $libdir" ;; 7073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 7077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 7078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 7079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 7080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dllsearchpath="$dllsearchpath:$libdir";; 7081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 7083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$testbindir:"*) ;; 7084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) dllsearchpath="$dllsearchpath:$testbindir";; 7085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 7090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 7091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 7092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 7093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval rpath=\" $hardcode_libdir_flag_spec\" 7094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_rpath="$rpath" 7096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 7098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 7099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $finalize_rpath; do 7100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 7101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 7102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 7103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 7104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 7106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 7116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$rpath $flag" 7117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 7119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_perm_rpath " in 7120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 7121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 7122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 7126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 7127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 7128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 7129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval rpath=\" $hardcode_libdir_flag_spec\" 7130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_rpath="$rpath" 7132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$libobjs" && test "$build_old_libs" = yes; then 7134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform all the library objects into standard objects. 7135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 7140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # template prelinking step 7142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prelink_cmds"; then 7143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$prelink_cmds" 'exit $?' 7144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=yes 7147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 7149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" != yes; then 7150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=no 7151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 7155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=no 7156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$wrappers_required" = no; then 7160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 7161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_command$compile_rpath" 7163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We have no uninstalled library dependencies, so finalize right now. 7165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=0 7166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit_status=$?' 7167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the generated files. 7169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/${outputname}S.${objext}"; then 7170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 7171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $exit_status 7174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$compile_shlibpath$finalize_shlibpath"; then 7177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 7178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finalize_shlibpath"; then 7180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 7181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_var= 7184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_var= 7185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$runpath_var"; then 7186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$perm_rpath"; then 7187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 7188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 7189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $perm_rpath; do 7190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$rpath$dir:" 7191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 7193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finalize_perm_rpath"; then 7195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 7196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 7197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $finalize_perm_rpath; do 7198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$rpath$dir:" 7199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 7201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$no_install" = yes; then 7205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We don't need to create a wrapper script. 7206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 7207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 7208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old output file. 7210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $output 7211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the executable and exit 7212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit $?' 7213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 7214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_action" = relink; then 7217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Fast installation is not supported 7218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 7219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$finalize_var$finalize_command$finalize_rpath" 7220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "this platform does not like uninstalled shared libraries" 7222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$output' will be relinked during installation" 7223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" != no; then 7225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$finalize_var$compile_command$finalize_rpath" 7226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes; then 7227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 7228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # fast_install is set to needless 7230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 7231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 7234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$finalize_var$finalize_command$finalize_rpath" 7235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 7239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 7240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old output files. 7242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 7243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit $?' 7245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now create the wrapper script. 7247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output" 7248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote the relink command for shipping. 7250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$relink_command"; then 7251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preserve any variables that may affect compiler behavior 7252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $variables_saved_for_relink; do 7253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval test -z \"\${$var+set}\"; then 7254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 7255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif eval var_value=\$$var; test -z "$var_value"; then 7256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=; export $var; $relink_command" 7257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$var_value" 7259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 7260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="(cd `pwd`; $relink_command)" 7263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 7264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote $ECHO for shipping. 7267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 7268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $progpath in 7269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 7270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 7271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 7273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 7275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only actually do things if not in dry run mode. 7278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 7279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # win32 will think the script is a binary if it has 7280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a .exe suffix, so we strip it off here. 7281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 7282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) func_stripname '' '.exe' "$output" 7283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$func_stripname_result ;; 7284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # test for cygwin because mv fails w/o .exe extensions 7286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*) 7288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exeext=.exe 7289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$outputname" 7290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname=$func_stripname_result ;; 7291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) exeext= ;; 7292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 7295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$output" "" "." 7296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_name=$func_basename_result 7297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_path=$func_dirname_result 7298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cwrappersource="$output_path/$objdir/lt-$output_name.c" 7299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cwrapper="$output_path/$output_name.exe" 7300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $cwrappersource $cwrapper 7301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 7302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_cwrapperexe_src > $cwrappersource 7304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we should really use a build-platform specific compiler 7306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # here, but OTOH, the wrappers (shell script and this C one) 7307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are only useful if you want to execute the "real" binary. 7308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Since the "real" binary is built for $host, then this 7309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # wrapper might as well be built for $host, too. 7310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 7311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 7312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $STRIP $cwrapper 7313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 7314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now, create the wrapper script for func_source use: 7316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname $cwrapper 7317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $func_ltwrapper_scriptname_result 7318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 7319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 7320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # note: this script will not be executed, so do not chmod. 7321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "x$build" = "x$host" ; then 7322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 7323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper no > $func_ltwrapper_scriptname_result 7325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 7327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) 7329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $output 7330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 7331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper no > $output 7333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville chmod +x $output 7334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 7337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 7338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See if we need to build an old-fashioned archive. 7342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for oldlib in $oldlibs; do 7343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = convenience; then 7345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$libobjs_save $symfileobj" 7346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville addlibs="$convenience" 7347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = module; then 7350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$libobjs_save" 7351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$old_deplibs $non_pic_objects" 7354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$preload" = yes && test -f "$symfileobj"; then 7355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$oldobjs $symfileobj" 7356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville addlibs="$old_convenience" 7359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$addlibs"; then 7362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 7363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 7364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $addlibs 7366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$oldobjs $func_extract_archives_result" 7367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the archive commands. 7370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 7371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$old_archive_from_new_cmds 7372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add any objects from preloaded convenience libraries 7375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlprefiles"; then 7376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 7377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 7378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $dlprefiles 7380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$oldobjs $func_extract_archives_result" 7381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # POSIX demands no paths to be encoded in archives. We have 7384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to avoid creating archives with duplicate basenames if we 7385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # might have to extract them afterwards, e.g., when creating a 7386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # static archive out of a convenience library, or when linking 7387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the entirety of a libtool archive into another (currently 7388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not supported by libtool). 7389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (for obj in $oldobjs 7390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 7391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$obj" 7392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$func_basename_result" 7393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done | sort | sort -uc >/dev/null 2>&1); then 7394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 7395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "copying selected object files to avoid basename conflicts..." 7397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 7398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated="$generated $gentop" 7399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$gentop" 7400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_oldobjs=$oldobjs 7401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs= 7402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville counter=1 7403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 7404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 7405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$obj" 7406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objbase="$func_basename_result" 7407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $oldobjs " in 7408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville " ") oldobjs=$obj ;; 7409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\ /]"$objbase "*) 7410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while :; do 7411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we don't pick an alternate name that also 7412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # overlaps. 7413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newobj=lt$counter-$objbase 7414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $counter + 1 7415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville counter=$func_arith_result 7416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $oldobjs " in 7417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\ /]"$newobj "*) ;; 7418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) if test ! -f "$gentop/$newobj"; then break; fi ;; 7419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 7422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$oldobjs $gentop/$newobj" 7423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) oldobjs="$oldobjs $obj" ;; 7425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"$old_archive_cmds\" 7429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $cmds" 7431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_len_result 7432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$old_archive_cmds 7434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the command line is too long to link in one step, link in parts 7436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "using piecewise archive linking..." 7437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_RANLIB=$RANLIB 7438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=: 7439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 7440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_cmds= 7441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_oldobjs=$oldobjs 7442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs= 7443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Is there a better way of finding the last object in the list? 7444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 7445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 7446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_oldobj=$obj 7447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$old_archive_cmds\" 7449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" 7450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len0=$func_len_result 7451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 7452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 7453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 7454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $obj" 7455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len + $func_len_result 7456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 7457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append objlist " $obj" 7458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$len" -lt "$max_cmd_len"; then 7459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 7460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the above command should be used before it gets too long 7462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs=$objlist 7463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$obj" = "$last_oldobj" ; then 7464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=$save_RANLIB 7465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 7468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 7469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 7470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=$save_RANLIB 7473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs=$objlist 7474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$oldobjs" = "X" ; then 7475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$concat_cmds\" 7476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 7478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$cmds" 'exit $?' 7482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$generated" && \ 7485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "${RM}r$generated" 7486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now create the libtool archive. 7488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 7489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 7490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 7491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_old_libs" = yes && old_library="$libname.$libext" 7492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output" 7493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preserve any variables that may affect compiler behavior 7495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $variables_saved_for_relink; do 7496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval test -z \"\${$var+set}\"; then 7497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 7498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif eval var_value=\$$var; test -z "$var_value"; then 7499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=; export $var; $relink_command" 7500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$var_value" 7502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 7503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote the link command for shipping. 7506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 7507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 7508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_automatic" = yes ; then 7509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 7510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only create the output if not a dry run. 7513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 7514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for installed in no yes; do 7515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = yes; then 7516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$install_libdir"; then 7517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 7518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$output_objdir/$outputname"i 7520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace all uninstalled libtool libraries with the installed ones 7521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs= 7522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 7523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 7524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 7525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$deplib" 7526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 7527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 7529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$deplib' is not a valid libtool archive" 7530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$newdependency_libs $libdir/$name" 7531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) newdependency_libs="$newdependency_libs $deplib" ;; 7533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$newdependency_libs" 7536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 7537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlfiles; do 7539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 7540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 7541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 7542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 7543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 7544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 7545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a valid libtool archive" 7546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles="$newdlfiles $libdir/$name" 7547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) newdlfiles="$newdlfiles $lib" ;; 7549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 7552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 7553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 7554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 7555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 7556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only pass preopened files to the pseudo-archive (for 7557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # eventual linking with the app. that links it) if we 7558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # didn't already link the preopened objects directly into 7559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the library: 7560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 7561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 7562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 7563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 7564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a valid libtool archive" 7565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $libdir/$name" 7566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 7570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 7572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlfiles; do 7573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 7574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 7575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) abs=`pwd`"/$lib" ;; 7576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles="$newdlfiles $abs" 7578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 7580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 7581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 7582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 7583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 7584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) abs=`pwd`"/$lib" ;; 7585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles="$newdlprefiles $abs" 7587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 7589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $output 7591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # place dlname in correct position for cygwin 7592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tdlname=$dlname 7593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host,$output,$installed,$module,$dlname in 7594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 7595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO > $output "\ 7597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $outputname - a libtool library file 7598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 7599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 7600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Please DO NOT delete this file! 7601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# It is necessary for linking the library. 7602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name that we can dlopen(3). 7604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlname='$tdlname' 7605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of this library. 7607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary_names='$library_names' 7608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of the static archive. 7610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleold_library='$old_library' 7611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Linker flags that can not go in dependency_libs. 7613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinherited_linker_flags='$new_inherited_linker_flags' 7614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Libraries that this one depends upon. 7616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledependency_libs='$dependency_libs' 7617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of additional weak libraries provided by this library 7619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleweak_library_names='$weak_libs' 7620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Version information for $libname. 7622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecurrent=$current 7623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleage=$age 7624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerevision=$revision 7625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Is this an already installed library? 7627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinstalled=$installed 7628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Should we warn about portability when linking against -modules? 7630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleshouldnotlink=$module 7631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Files to dlopen/dlpreopen 7633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlopen='$dlfiles' 7634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlpreopen='$dlprefiles' 7635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Directory that this library needs to be installed in: 7637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibdir='$install_libdir'" 7638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = no && test "$need_relink" = yes; then 7639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> $output "\ 7640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\"" 7641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 7644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a symbolic link so that the libtool archive can be found in 7646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # LD_LIBRARY_PATH before the program is installed. 7647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 7648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 7651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 7652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ test "$mode" = link || test "$mode" = relink; } && 7654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mode_link ${1+"$@"} 7655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_uninstall arg... 7658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_uninstall () 7659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 7660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 7661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RM="$nonopt" 7662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville files= 7663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmforce= 7664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=0 7665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set variables rather 7667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than running their programs. 7668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_install_magic="$magic" 7669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 7671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 7672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 7673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -f) RM="$RM $arg"; rmforce=yes ;; 7674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) RM="$RM $arg" ;; 7675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) files="$files $arg" ;; 7676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$RM" && \ 7680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an RM program" 7681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmdirs= 7683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville origobjdir="$objdir" 7685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 7686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 7687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 7688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dir" = X.; then 7689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objdir="$origobjdir" 7690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objdir="$dir/$origobjdir" 7692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 7694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 7695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$mode" = uninstall && objdir="$dir" 7696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remember objdir for removal later, being careful to avoid duplicates 7698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = clean; then 7699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $rmdirs " in 7700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $objdir "*) ;; 7701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) rmdirs="$rmdirs $objdir" ;; 7702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't error if the file doesn't exist and rm -f was used. 7706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if { test -L "$file"; } >/dev/null 2>&1 || 7707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test -h "$file"; } >/dev/null 2>&1 || 7708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$file"; then 7709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 7710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -d "$file"; then 7711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=1 7712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 7713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$rmforce" = yes; then 7714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 7715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$file" 7718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $name in 7720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 7721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Possibly a libtool archive, so verify it. 7722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$file"; then 7723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$name 7724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the libtool libraries and symlinks. 7726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for n in $library_names; do 7727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $objdir/$n" 7728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 7730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$mode" in 7732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean) 7733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $library_names " in 7734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # " " in the beginning catches empty $dlname 7735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dlname "*) ;; 7736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) rmfiles="$rmfiles $objdir/$dlname" ;; 7737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 7739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall) 7741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names"; then 7742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postuninstall commands. 7743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 7744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_library"; then 7747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the old_postuninstall commands. 7748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 7749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: should reinstall the best remaining shared library. 7751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 7757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Possibly a libtool object, so verify it. 7758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$file"; then 7759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 7761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$name 7762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add PIC object to the list of files to remove. 7764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$pic_object" && 7765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" != none; then 7766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $dir/$pic_object" 7767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add non-PIC object to the list of files to remove. 7770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$non_pic_object" && 7771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" != none; then 7772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $dir/$non_pic_object" 7773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$mode" = clean ; then 7779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville noexename=$name 7780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 7781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) 7782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 7783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=$func_stripname_result 7784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$name" 7785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville noexename=$func_stripname_result 7786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $file with .exe has already been added to rmfiles, 7787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # add $file without .exe 7788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $file" 7789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is a libtool program. 7792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_p "$file"; then 7793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_executable_p "$file"; then 7794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 7795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 7796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $func_ltwrapper_scriptname_result 7797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 7798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 7800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$noexename 7801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # note $name still contains .exe if it was in $file originally 7804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # as does the version of $file that was added into $rmfiles 7805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 7806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes && test -n "$relink_command"; then 7807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $objdir/lt-$name" 7808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$noexename" != "X$name" ; then 7810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$rmfiles $objdir/lt-${noexename}.c" 7811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$RM $rmfiles" 'exit_status=1' 7817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objdir="$origobjdir" 7819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try to remove the ${objdir}s in the directories where we deleted files 7821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $rmdirs; do 7822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -d "$dir"; then 7823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "rmdir $dir >/dev/null 2>&1" 7824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $exit_status 7828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 7829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ test "$mode" = uninstall || test "$mode" = clean; } && 7831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mode_uninstall ${1+"$@"} 7832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest -z "$mode" && { 7834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville help="$generic_help" 7835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a MODE" 7836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 7837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest -z "$exec_cmd" && \ 7839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "invalid operation mode \`$mode'" 7840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "$exec_cmd"; then 7842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval exec "$exec_cmd" 7843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 7844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 7845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit $exit_status 7847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The TAGs below are defined such that we never get into a situation 7850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in which we disable both kinds of libraries. Given conflicting 7851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# choices, we go for a static library, that is the most portable, 7852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# since we can't tell whether shared libraries were disabled because 7853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the user asked for that or because the platform doesn't support 7854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# them. This is particularly important on AIX, because we don't 7855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# support having both static and shared libraries enabled at the same 7856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# time on that platform, so we default to a shared-only configuration. 7857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If a disable-shared tag is given, we'll fallback to a static-only 7858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# configuration. But we'll never go from static-only to shared-only. 7859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 7861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_libtool_libs=no 7862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=yes 7863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-shared 7864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-static 7866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 7867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-static 7868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Local Variables: 7870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# mode:shell-script 7871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# sh-indentation:2 7872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# End: 7873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# vi:sw=2 7874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7875