165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libtool (GNU libtool) 2.4.2 365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is free software; see the source for copying conditions. There is NO 865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU Libtool is free software; you can redistribute it and/or modify 1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it under the terms of the GNU General Public License as published by 1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the Free Software Foundation; either version 2 of the License, or 1365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (at your option) any later version. 1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# As a special exception to the GNU General Public License, 1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if you distribute this file as part of a program or library that 1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is built using GNU Libtool, you may include this file under the 1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# same distribution terms that you use for the rest of that program. 1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU Libtool is distributed in the hope that it will be useful, but 2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# WITHOUT ANY WARRANTY; without even the implied warranty of 2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# General Public License for more details. 2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# You should have received a copy of the GNU General Public License 2665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# along with GNU Libtool; see the file COPYING. If not, a copy 2765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# can be downloaded from http://www.gnu.org/licenses/gpl.html, 2865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# or obtained by writing to the Free Software Foundation, Inc., 2965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Usage: $progname [OPTION]... [MODE-ARG]... 3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Provide generalized library-building support services. 3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --config show all configuration variables 3665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --debug enable verbose shell tracing 3765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# -n, --dry-run display commands without modifying any files 3865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --features display basic configuration information and exit 3965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --mode=MODE use operation mode MODE 4065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --preserve-dup-deps don't remove duplicate dependency libraries 4165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --quiet, --silent don't print informational messages 4265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --no-quiet, --no-silent 4365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# print informational messages (default) 4465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --no-warn don't display warning messages 4565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --tag=TAG use configuration variables from tag TAG 4665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# -v, --verbose print more informational messages than default 4765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --no-verbose don't print the extra informational messages 4865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --version print version information 4965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# -h, --help, --help-all print short, long, or detailed help message 5065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 5165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MODE must be one of the following: 5265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 5365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# clean remove files from the build directory 5465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# compile compile a source file into a libtool object 5565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# execute automatically set library path, then run a program 5665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# finish complete the installation of libtool libraries 5765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# install install libraries or executables 5865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# link create a library or an executable 5965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# uninstall remove libraries from an installed directory 6065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 6165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MODE-ARGS vary depending on the MODE. When passed as first option, 6265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 6365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 6465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 6565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# When reporting a bug, please describe a test case to reproduce it and 6665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include the following information: 6765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 6865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# host-triplet: $host 6965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# shell: $SHELL 7065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# compiler: $LTCC 7165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# compiler flags: $LTCFLAGS 7265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# linker: $LD (gnu? $with_gnu_ld) 7365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $progname: (GNU libtool) 2.4.2 7465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# automake: $automake_version 7565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# autoconf: $autoconf_version 7665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 7765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Report bugs to <bug-libtool@gnu.org>. 7865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 7965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# General help using GNU software: <http://www.gnu.org/gethelp/>. 8065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 8165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPROGRAM=libtool 8265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPACKAGE=libtool 8365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichVERSION=2.4.2 8465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichTIMESTAMP="" 8565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpackage_revision=1.3337 8665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 8765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Be Bourne compatible 8865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich emulate sh 9065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich NULLCMD=: 9165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # is contrary to our usage. Disable this feature. 9365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich alias -g '${1+"$@"}'='"$@"' 9465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich setopt NO_GLOB_SUBST 9565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse 9665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 9865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64 9965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichDUALCASE=1; export DUALCASE # for MKS sh 10065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function that is used when there is no print builtin or printf. 10265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fallback_echo () 10365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 10465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval 'cat <<_LTECHO_EOF 10565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$1 10665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LTECHO_EOF' 10765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 10865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# NLS nuisances: We save the old values to restore during execute mode. 11065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_user_locale= 11165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_safe_locale= 11265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdo 11465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "if test \"\${$lt_var+set}\" = set; then 11565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_$lt_var=\$$lt_var 11665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $lt_var=C 11765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export $lt_var 11865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 11965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 12065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi" 12165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone 12265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLC_ALL=C 12365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLANGUAGE=C 12465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexport LANGUAGE LC_ALL 12565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 12665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$lt_unset CDPATH 12765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 12865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 12965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 13065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is ksh but when the shell is invoked as "sh" and the current value of 13165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the _XPG environment variable is not equal to 1 (one), the special 13265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# positional parameter $0, within a function call, is the name of the 13365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# function. 13465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprogpath="$0" 13565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 13665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 13765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 13865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${CP="cp -f"} 13965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 14065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MAKE="make"} 14165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MKDIR="mkdir"} 14265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MV="mv -f"} 14365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${RM="rm -f"} 14465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 14565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${Xsed="$SED -e 1s/^X//"} 14665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 14765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Global variables: 14865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_SUCCESS=0 14965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_FAILURE=1 15065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 15165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 15265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 15365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit_status=$EXIT_SUCCESS 15465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 15565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure IFS has a sensible default 15665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_nl=' 15765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich' 15865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIFS=" $lt_nl" 15965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 16065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdirname="s,/[^/]*$,," 16165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbasename="s,^.*/,," 16265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 16365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_dirname file append nondir_replacement 16465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Compute the dirname of FILE. If nonempty, add APPEND to the result, 16565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# otherwise set result to NONDIR_REPLACEMENT. 16665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname () 16765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 16865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 16965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$func_dirname_result" = "X${1}"; then 17065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result="${3}" 17165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 17265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result="$func_dirname_result${2}" 17365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 17465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_dirname may be replaced by extended shell implementation 17565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 17665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 17765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_basename file 17865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_basename () 17965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 18065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename_result=`$ECHO "${1}" | $SED "$basename"` 18165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_basename may be replaced by extended shell implementation 18265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 18365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 18465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_dirname_and_basename file append nondir_replacement 18565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# perform func_basename and func_dirname in a single function 18665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# call: 18765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# dirname: Compute the dirname of FILE. If nonempty, 18865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# add APPEND to the result, otherwise set result 18965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# to NONDIR_REPLACEMENT. 19065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# value returned in "$func_dirname_result" 19165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# basename: Compute filename of FILE. 19265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# value retuned in "$func_basename_result" 19365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Implementation must be kept synchronized with func_dirname 19465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and func_basename. For efficiency, we do not delegate to 19565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# those functions but instead duplicate the functionality here. 19665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname_and_basename () 19765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 19865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract subdirectory from the argument. 19965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 20065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$func_dirname_result" = "X${1}"; then 20165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result="${3}" 20265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 20365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_result="$func_dirname_result${2}" 20465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 20565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 20665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_dirname_and_basename may be replaced by extended shell implementation 20765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 20865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 20965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_stripname prefix suffix name 21065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# strip PREFIX and SUFFIX off of NAME. 21165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# PREFIX and SUFFIX must not contain globbing or regex special 21265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# characters, hashes, percent signs, but SUFFIX may contain a leading 21365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# dot (in which case that matches only a dot). 21465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_strip_suffix prefix name 21565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_stripname () 21665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 21765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case ${2} in 21865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 21965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 22065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 22165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_stripname may be replaced by extended shell implementation 22265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 22365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 22465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# These SED scripts presuppose an absolute path with a trailing slash. 22565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpathcar='s,^/\([^/]*\).*$,\1,' 22665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpathcdr='s,^/[^/]*,,' 22765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichremovedotparts=':dotsl 22865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s@/\./@/@g 22965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich t dotsl 23065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s,/\.$,/,' 23165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcollapseslashes='s@/\{1,\}@/@g' 23265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfinalslash='s,/*$,/,' 23365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 23465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_normal_abspath PATH 23565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Remove doubled-up and trailing slashes, "." path components, 23665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and cancel out any ".." path components in PATH after making 23765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it an absolute path. 23865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# value returned in "$func_normal_abspath_result" 23965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_normal_abspath () 24065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 24165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Start from root dir and reassemble the path. 24265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result= 24365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_tpath=$1 24465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_altnamespace= 24565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $func_normal_abspath_tpath in 24665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "") 24765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Empty path, that just means $cwd. 24865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '/' "`pwd`" 24965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result=$func_stripname_result 25065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 25165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 25265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The next three entries are used to spot a run of precisely 25365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # two leading slashes without using negated character classes; 25465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we take advantage of case's first-match behaviour. 25565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ///*) 25665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Unusual form of absolute path, do nothing. 25765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 25865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich //*) 25965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Not necessarily an ordinary path; POSIX reserves leading '//' 26065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and for example Cygwin uses it to access remote file shares 26165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # over CIFS/SMB, so we conserve a leading double slash if found. 26265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_altnamespace=/ 26365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 26465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /*) 26565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Absolute path, do nothing. 26665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 26765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 26865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Relative path, prepend $cwd. 26965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 27065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 27165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 27265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Cancel out all the simple stuff to save iterations. We also want 27365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the path to end with a slash for ease of parsing, so make sure 27465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # there is one (and only one) here. 27565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 27665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 27765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while :; do 27865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Processed it all yet? 27965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$func_normal_abspath_tpath" = / ; then 28065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If we ascended to the root using ".." the result may be empty now. 28165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$func_normal_abspath_result" ; then 28265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result=/ 28365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 28465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 28565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 28665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -e "$pathcar"` 28865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -e "$pathcdr"` 29065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Figure out what to do with it 29165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $func_normal_abspath_tcomponent in 29265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "") 29365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Trailing empty path component, ignore it. 29465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 29565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ..) 29665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Parent dir; strip last assembled component from result. 29765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$func_normal_abspath_result" 29865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result=$func_dirname_result 29965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 30065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 30165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Actual path component, append it. 30265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 30365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 30465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 30565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 30665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore leading double-slash if one was found on entry. 30765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 30865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 30965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 31065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_relative_path SRCDIR DSTDIR 31165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# generates a relative path from SRCDIR to DSTDIR, with a trailing 31265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# slash if non-empty, suitable for immediately appending a filename 31365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# without needing to append a separator. 31465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# value returned in "$func_relative_path_result" 31565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_relative_path () 31665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 31765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result= 31865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath "$1" 31965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tlibdir=$func_normal_abspath_result 32065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_normal_abspath "$2" 32165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tbindir=$func_normal_abspath_result 32265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 32365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Ascend the tree starting from libdir 32465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while :; do 32565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # check if we have found a prefix of bindir 32665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $func_relative_path_tbindir in 32765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $func_relative_path_tlibdir) 32865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # found an exact match 32965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tcancelled= 33065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 33165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 33265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $func_relative_path_tlibdir*) 33365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # found a matching prefix 33465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 33565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tcancelled=$func_stripname_result 33665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$func_relative_path_result"; then 33765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=. 33865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 33965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 34065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 34165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 34265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname $func_relative_path_tlibdir 34365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tlibdir=${func_dirname_result} 34465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$func_relative_path_tlibdir" = x ; then 34565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Have to descend all the way to the root! 34665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=../$func_relative_path_result 34765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_tcancelled=$func_relative_path_tbindir 34865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 34965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 35065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=../$func_relative_path_result 35165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 35265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 35365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 35465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 35565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now calculate path; take care to avoid doubling-up slashes. 35665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '/' "$func_relative_path_result" 35765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=$func_stripname_result 35865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '/' '/' "$func_relative_path_tcancelled" 35965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$func_stripname_result" != x ; then 36065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 36165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 36265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 36365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Normalisation. If bindir is libdir, return empty string, 36465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # else relative path ending with a slash; either way, target 36565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # file name can be directly appended. 36665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -z "$func_relative_path_result"; then 36765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname './' '' "$func_relative_path_result/" 36865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path_result=$func_stripname_result 36965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 37065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 37165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 37265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name of this program: 37365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname_and_basename "$progpath" 37465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprogname=$func_basename_result 37565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 37665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure we have an absolute path for reexecution: 37765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $progpath in 37865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]*|[A-Za-z]:\\*) ;; 37965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\\/]*) 38065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progdir=$func_dirname_result 38165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progdir=`cd "$progdir" && pwd` 38265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progpath="$progdir/$progname" 38365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 38465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 38565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_IFS="$IFS" 38665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=${PATH_SEPARATOR-:} 38765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for progdir in $PATH; do 38865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_IFS" 38965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -x "$progdir/$progname" && break 39065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 39165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_IFS" 39265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$progdir" || progdir=`pwd` 39365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progpath="$progdir/$progname" 39465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 39565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac 39665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 39765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that helps us do robust quoting. It backslashifies 39865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# metacharacters that are still active within double-quoted strings. 39965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichXsed="${SED}"' -e 1s/^X//' 40065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 40165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 40265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Same as above, but do not quote variable references. 40365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 40465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 40565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that turns a string into a regex matching for the 40665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# string literally. 40765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 40865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 40965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that converts a w32 file name or path 41065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# which contains forward slashes, into one that contains 41165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (escaped) backslashes. A very naive implementation. 41265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 41365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 41465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Re-`\' parameter expansions in output of double_quote_subst that were 41565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 41665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in input to double_quote_subst, that '$' was protected from expansion. 41765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Since each input `\' is now two `\'s, look for any number of runs of 41865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 41965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs='\\' 42065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs2='\\\\' 42165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs4='\\\\\\\\' 42265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdollar='\$' 42365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_double_backslash="\ 42465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/$bs4/&\\ 42565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/g 42665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^$bs2$dollar/$bs&/ 42765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 42865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\n//g" 42965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 43065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Standard options: 43165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_dry_run=false 43265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=false 43365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_quiet=false 43465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=false 43565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_warning=: 43665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 43765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_echo arg... 43865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message, along with the current mode 43965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name if it has been set yet. 44065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_echo () 44165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 44265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 44365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 44465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 44565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_verbose arg... 44665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message in verbose mode only. 44765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_verbose () 44865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 44965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_verbose && func_echo ${1+"$@"} 45065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 45165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A bug in bash halts the script if the last line of a function 45265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # fails when set -e is in force, so we need another command to 45365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # work around that: 45465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 45565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 45665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 45765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_echo_all arg... 45865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoke $ECHO with all args, space-separated. 45965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_echo_all () 46065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 46165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$*" 46265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 46365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 46465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_error arg... 46565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error. 46665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_error () 46765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 46865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 46965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 47065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 47165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_warning arg... 47265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed warning message to standard error. 47365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_warning () 47465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 47565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 47665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 47765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # bash bug again: 47865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 47965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 48065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 48165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_error arg... 48265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, and exit. 48365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_error () 48465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 48565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error ${1+"$@"} 48665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 48765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 48865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 48965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_help arg... 49065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, followed by 49165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a help hint, and exit. 49265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_help () 49365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 49465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error ${1+"$@"} 49565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "$help" 49665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 49765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichhelp="Try \`$progname --help' for more information." ## default 49865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 49965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 50065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_grep expression filename 50165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check whether EXPRESSION matches any line of FILENAME, without output. 50265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_grep () 50365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 50465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $GREP "$1" "$2" >/dev/null 2>&1 50565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 50665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 50765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 50865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mkdir_p directory-path 50965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure the entire path to DIRECTORY-PATH is available. 51065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mkdir_p () 51165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 51265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_directory_path="$1" 51365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_dir_list= 51465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 51565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 51665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 51765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Protect directory names starting with `-' 51865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $my_directory_path in 51965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -*) my_directory_path="./$my_directory_path" ;; 52065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 52165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 52265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # While some portion of DIR does not yet exist... 52365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test ! -d "$my_directory_path"; do 52465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ...make a list in topmost first order. Use a colon delimited 52565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # list incase some portion of path contains whitespace. 52665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_dir_list="$my_directory_path:$my_dir_list" 52765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 52865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the last portion added has no slash in it, the list is done 52965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $my_directory_path in */*) ;; *) break ;; esac 53065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 53165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ...otherwise throw away the child directory and loop 53265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 53365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 53465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 53565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 53665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_mkdir_p_IFS="$IFS"; IFS=':' 53765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for my_dir in $my_dir_list; do 53865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_mkdir_p_IFS" 53965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # mkdir can fail with a `File exist' error if two processes 54065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # try to create one of the directories concurrently. Don't 54165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # stop in that case! 54265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MKDIR "$my_dir" 2>/dev/null || : 54365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 54465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_mkdir_p_IFS" 54565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 54665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Bail out if we (or some other process) failed to create a directory. 54765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -d "$my_directory_path" || \ 54865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "Failed to create \`$1'" 54965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 55065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 55165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 55265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 55365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mktempdir [string] 55465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make a temporary directory that won't clash with other running 55565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libtool processes, and avoids race conditions if possible. If 55665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# given, STRING is the basename for that directory. 55765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mktempdir () 55865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 55965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_template="${TMPDIR-/tmp}/${1-$progname}" 56065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 56165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_dry_run" = ":"; then 56265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Return a directory name, but don't create it in dry-run mode 56365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_tmpdir="${my_template}-$$" 56465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 56565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 56665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If mktemp works, use that first and foremost 56765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 56865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 56965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -d "$my_tmpdir"; then 57065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Failing that, at least try and use $RANDOM to avoid a race 57165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_tmpdir="${my_template}-${RANDOM-0}$$" 57265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 57365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_mktempdir_umask=`umask` 57465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich umask 0077 57565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MKDIR "$my_tmpdir" 57665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich umask $save_mktempdir_umask 57765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 57865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 57965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If we're not in dry-run mode, bomb out on failure 58065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -d "$my_tmpdir" || \ 58165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 58265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 58365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 58465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$my_tmpdir" 58565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 58665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 58765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 58865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_quote_for_eval arg 58965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Aesthetically quote ARG to be evaled later. 59065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 59165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is double-quoted, suitable for a subsequent eval, whereas 59265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 59365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# which are still active within double quotes backslashified. 59465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_quote_for_eval () 59565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 59665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 59765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\\\`\"\$]*) 59865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 59965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 60065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval_unquoted_result="$1" ;; 60165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 60265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 60365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $func_quote_for_eval_unquoted_result in 60465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Double-quote args containing shell metacharacters to delay 60565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # word splitting, command substitution and and variable 60665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # expansion for a subsequent eval. 60765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Many Bourne shells cannot handle close brackets correctly 60865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # in scan sets, so we specify it separately. 60965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 61065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 61165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 61265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 61365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 61465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 61565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 61665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 61765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 61865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_quote_for_expand arg 61965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Aesthetically quote ARG to be evaled later; same as above, 62065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# but do not quote variable references. 62165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_quote_for_expand () 62265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 62365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 62465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\\\`\"]*) 62565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_arg=`$ECHO "$1" | $SED \ 62665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 62765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 62865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_arg="$1" ;; 62965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 63065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 63165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $my_arg in 63265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Double-quote args containing shell metacharacters to delay 63365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # word splitting and command substitution for a subsequent eval. 63465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Many Bourne shells cannot handle close brackets correctly 63565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # in scan sets, so we specify it separately. 63665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 63765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_arg="\"$my_arg\"" 63865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 63965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 64065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 64165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand_result="$my_arg" 64265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 64365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 64465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 64565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_show_eval cmd [fail_exp] 64665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 64765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 64865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is given, then evaluate it. 64965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_show_eval () 65065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 65165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_cmd="$1" 65265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_fail_exp="${2-:}" 65365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 65465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ${opt_silent-false} || { 65565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand "$my_cmd" 65665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "func_echo $func_quote_for_expand_result" 65765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 65865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 65965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ${opt_dry_run-false}; then :; else 66065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$my_cmd" 66165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_status=$? 66265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$my_status" -eq 0; then :; else 66365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "(exit $my_status); $my_fail_exp" 66465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 66565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 66665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 66765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 66865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 66965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_show_eval_locale cmd [fail_exp] 67065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 67165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 67265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is given, then evaluate it. Use the saved locale for evaluation. 67365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_show_eval_locale () 67465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 67565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_cmd="$1" 67665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_fail_exp="${2-:}" 67765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 67865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ${opt_silent-false} || { 67965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand "$my_cmd" 68065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "func_echo $func_quote_for_expand_result" 68165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 68265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 68365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ${opt_dry_run-false}; then :; else 68465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$lt_user_locale 68565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $my_cmd" 68665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_status=$? 68765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$lt_safe_locale" 68865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$my_status" -eq 0; then :; else 68965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "(exit $my_status); $my_fail_exp" 69065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 69165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 69265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 69365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 69465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_tr_sh 69565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Turn $1 into a string suitable for a shell variable name. 69665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is stored in $func_tr_sh_result. All characters 69765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 69865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if $1 begins with a digit, a '_' is prepended as well. 69965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_tr_sh () 70065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 70165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 70265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [0-9]* | *[!a-zA-Z0-9_]*) 70365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 70465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 70565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) 70665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_tr_sh_result=$1 70765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 70865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 70965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 71065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 71165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 71265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_version 71365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo version message to standard output and exit. 71465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_version () 71565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 71665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 71765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 71865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n '/(C)/!b go 71965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich :more 72065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /\./!{ 72165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich N 72265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\n# / / 72365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich b more 72465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 72565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich :go 72665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^# '$PROGRAM' (GNU /,/# warranty; / { 72765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# // 72865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# *$// 72965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 73065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p 73165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich }' < "$progpath" 73265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 73365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 73465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 73565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_usage 73665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo short help message to standard output and exit. 73765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_usage () 73865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 73965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 74065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 74165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n '/^# Usage:/,/^# *.*--help/ { 74265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# // 74365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# *$// 74465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\$progname/'$progname'/ 74565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p 74665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich }' < "$progpath" 74765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 74865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "run \`$progname --help | more' for full usage" 74965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 75065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 75165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 75265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_help [NOEXIT] 75365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo long help message to standard output and exit, 75465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# unless 'noexit' is passed as argument. 75565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_help () 75665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 75765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 75865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 75965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n '/^# Usage:/,/# Report bugs to/ { 76065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich :print 76165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# // 76265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^# *$// 76365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$progname*'$progname'* 76465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$host*'"$host"'* 76565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$SHELL*'"$SHELL"'* 76665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$LTCC*'"$LTCC"'* 76765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$LTCFLAGS*'"$LTCFLAGS"'* 76865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s*\$LD*'"$LD"'* 76965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\$with_gnu_ld/'"$with_gnu_ld"'/ 77065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 77165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 77265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p 77365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich d 77465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 77565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^# .* home page:/b print 77665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^# General help using/b print 77765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ' < "$progpath" 77865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ret=$? 77965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$1"; then 78065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $ret 78165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 78265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 78365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 78465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_missing_arg argname 78565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error and set global 78665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# exit_cmd. 78765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_missing_arg () 78865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 78965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 79065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 79165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "missing argument for $1." 79265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit_cmd=exit 79365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 79465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 79565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 79665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_split_short_opt shortopt 79765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set func_split_short_opt_name and func_split_short_opt_arg shell 79865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variables after splitting SHORTOPT after the 2nd character. 79965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_split_short_opt () 80065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 80165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_sed_short_opt='1s/^\(..\).*$/\1/;q' 80265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 80365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 80465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 80565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 80665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_split_short_opt may be replaced by extended shell implementation 80765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 80865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 80965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_split_long_opt longopt 81065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set func_split_long_opt_name and func_split_long_opt_arg shell 81165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variables after splitting LONGOPT at the `=' sign. 81265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_split_long_opt () 81365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 81465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 81565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_sed_long_arg='1s/^--[^=]*=//' 81665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 81765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 81865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 81965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_split_long_opt may be replaced by extended shell implementation 82065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit_cmd=: 82265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 82765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmagic="%%%MAGIC variable%%%" 82865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmagic_exe="%%%MAGIC EXE variable%%%" 82965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 83065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Global variables. 83165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonopt= 83265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpreserve_args= 83365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlo2o="s/\\.lo\$/.${objext}/" 83465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicho2lo="s/\\.${objext}\$/.lo/" 83565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextracted_archives= 83665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextracted_serial=0 83765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 83865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If this variable is set in any of the actions, the command in it 83965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will be execed at the end. This prevents here-documents from being 84065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# left over by shells. 84165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexec_cmd= 84265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 84365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_append var value 84465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Append VALUE to the end of shell variable VAR. 84565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append () 84665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 84765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "${1}=\$${1}\${2}" 84865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_append may be replaced by extended shell implementation 84965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 85065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_append_quoted var value 85165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Quote VALUE and append to the end of shell variable VAR, separated 85265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# by a space. 85365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append_quoted () 85465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 85565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "${2}" 85665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 85765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_append_quoted may be replaced by extended shell implementation 85865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 85965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 86065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_arith arithmetic-term... 86165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_arith () 86265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 86365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith_result=`expr "${@}"` 86465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_arith may be replaced by extended shell implementation 86565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 86665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 86765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_len string 86865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# STRING may not start with a hyphen. 86965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_len () 87065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 87165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 87265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_len may be replaced by extended shell implementation 87365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 87465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 87565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lo2o object 87665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lo2o () 87765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 87865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 87965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_lo2o may be replaced by extended shell implementation 88065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 88165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 88265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_xform libobj-or-source 88365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_xform () 88465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 88565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 88665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_xform may be replaced by extended shell implementation 88765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 88865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 88965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_configuration arg... 89065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, followed by 89165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a configuration failure hint, and exit. 89265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_configuration () 89365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 89465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error ${1+"$@"} 89565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "See the $PACKAGE documentation for more information." 89665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "Fatal configuration error." 89765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 89865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 89965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 90065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_config 90165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Display the configuration for all the tags in this script. 90265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_config () 90365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 90465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich re_begincf='^# ### BEGIN LIBTOOL' 90565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich re_endcf='^# ### END LIBTOOL' 90665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 90765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Default configuration. 90865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 90965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 91065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now print the configurations for the tags. 91165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for tagname in $taglist; do 91265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 91365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 91465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 91565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 91665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 91765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 91865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_features 91965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Display the features supported by this script. 92065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_features () 92165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 92265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "host: $host" 92365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 92465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "enable shared libraries" 92565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 92665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "disable shared libraries" 92765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 92865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes; then 92965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "enable static libraries" 93065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 93165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "disable static libraries" 93265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 93365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 93465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 93565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 93665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 93765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_enable_tag tagname 93865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that TAGNAME is valid, and either flag an error and exit, or 93965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 94065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variable here. 94165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_enable_tag () 94265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 94365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Global variable: 94465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tagname="$1" 94565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 94665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 94765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 94865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sed_extractcf="/$re_begincf/,/$re_endcf/p" 94965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 95065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Validate tagname. 95165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $tagname in 95265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[!-_A-Za-z0-9,/]*) 95365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "invalid tag name: $tagname" 95465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 95565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 95665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 95765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't test for the "default" C tag, as we know it's 95865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # there but not specially marked. 95965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $tagname in 96065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC) ;; 96165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 96265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 96365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich taglist="$taglist $tagname" 96465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 96565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Evaluate the configuration. Be careful to quote the path 96665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and the sed script, to avoid splitting on whitespace, but 96765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # also don't use non-portable quotes within backquotes within 96865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # quotes we have to do it in 2 steps: 96965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 97065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$extractedcf" 97165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 97265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "ignoring unknown tag $tagname" 97365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 97465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 97565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 97665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 97765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 97865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_check_version_match 97965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Ensure that we are using m4 macros, and libtool script from the same 98065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# release of libtool. 98165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_check_version_match () 98265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 98365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$package_revision" != "$macro_revision"; then 98465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$VERSION" != "$macro_version"; then 98565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$macro_version"; then 98665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat >&2 <<_LT_EOF 98765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 98865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: definition of this LT_INIT comes from an older release. 98965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: and run autoconf again. 99165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF 99265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 99365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat >&2 <<_LT_EOF 99465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 99565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 99665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: and run autoconf again. 99865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF 99965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 100065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 100165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat >&2 <<_LT_EOF 100265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 100365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: but the definition of this LT_INIT comes from revision $macro_revision. 100465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from revision $package_revision 100565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: of $PACKAGE $VERSION and run autoconf again. 100665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF 100765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 100865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 100965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_MISMATCH 101065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 101165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 101265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 101365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 101465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Shorthand for --mode=foo, only valid as the first argument 101565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $1 in 101665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichclean|clea|cle|cl) 101765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode clean ${1+"$@"}; shift 101865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 101965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompile|compil|compi|comp|com|co|c) 102065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode compile ${1+"$@"}; shift 102165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 102265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexecute|execut|execu|exec|exe|ex|e) 102365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode execute ${1+"$@"}; shift 102465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 102565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfinish|finis|fini|fin|fi|f) 102665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode finish ${1+"$@"}; shift 102765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 102865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinstall|instal|insta|inst|ins|in|i) 102965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode install ${1+"$@"}; shift 103065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 103165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlink|lin|li|l) 103265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode link ${1+"$@"}; shift 103365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 103465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 103565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift; set dummy --mode uninstall ${1+"$@"}; shift 103665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 103765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac 103865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 103965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 104065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 104165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Option defaults: 104265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_debug=: 104365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_dry_run=false 104465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_config=false 104565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_preserve_dup_deps=false 104665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_features=false 104765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_finish=false 104865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=false 104965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help_all=false 105065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=: 105165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_warning=: 105265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=: 105365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=false 105465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=false 105565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 105665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 105765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Parse options once, thoroughly. This comes as soon as possible in the 105865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# script to make things like `--version' happen as quickly as we can. 105965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 106065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # this just eases exit handling 106165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test $# -gt 0; do 106265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt="$1" 106365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 106465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $opt in 106565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --debug|-x) opt_debug='set -x' 106665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_echo "enabling shell trace mode" 106765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 106865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 106965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --dry-run|--dryrun|-n) 107065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_dry_run=: 107165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 107265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --config) 107365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_config=: 107465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_config 107565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 107665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --dlopen|-dlopen) 107765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich optarg="$1" 107865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_dlopen="${opt_dlopen+$opt_dlopen 107965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}$optarg" 108065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 108165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 108265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --preserve-dup-deps) 108365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_preserve_dup_deps=: 108465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 108565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --features) 108665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_features=: 108765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_features 108865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 108965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --finish) 109065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_finish=: 109165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichset dummy --mode finish ${1+"$@"}; shift 109265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 109365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --help) 109465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_help=: 109565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 109665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --help-all) 109765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_help_all=: 109865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=': help-all' 109965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 110065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --mode) 110165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test $# = 0 && func_missing_arg $opt && break 110265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich optarg="$1" 110365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_mode="$optarg" 110465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $optarg in 110565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Valid mode arguments: 110665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich clean|compile|execute|finish|install|link|relink|uninstall) ;; 110765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 110865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Catch anything else as an error 110965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_error "invalid argument for $opt" 111065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit_cmd=exit 111165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 111265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 111365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac 111465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 111565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 111665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --no-silent|--no-quiet) 111765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_silent=false 111865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt" 111965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 112065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --no-warning|--no-warn) 112165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_warning=false 112265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt" 112365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 112465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --no-verbose) 112565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_verbose=false 112665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt" 112765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 112865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --silent|--quiet) 112965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_silent=: 113065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt" 113165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_verbose=false 113265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 113365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --verbose|-v) 113465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_verbose=: 113565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt" 113665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=false 113765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 113865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --tag) 113965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test $# = 0 && func_missing_arg $opt && break 114065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich optarg="$1" 114165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_tag="$optarg" 114265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt $optarg" 114365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_enable_tag "$optarg" 114465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 114565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 114665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 114765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -\?|-h) func_usage ;; 114865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --help) func_help ;; 114965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --version) func_version ;; 115065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 115165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Separate optargs to long options: 115265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --*=*) 115365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_long_opt "$opt" 115465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 115565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 115665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 115765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 115865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Separate non-argument short options: 115965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -\?*|-h*|-n*|-v*) 116065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_split_short_opt "$opt" 116165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 116265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 116365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 116465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 116565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --) break ;; 116665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -*) func_fatal_help "unrecognized option \`$opt'" ;; 116765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) set dummy "$opt" ${1+"$@"}; shift; break ;; 116865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 116965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 117065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 117165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Validate options: 117265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 117365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # save first non-option argument 117465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$#" -gt 0; then 117565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonopt="$opt" 117665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 117765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 117865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 117965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # preserve --debug 118065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$opt_debug" = : || func_append preserve_args " --debug" 118165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 118265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 118365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *pw32* | *cegcc*) 118465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # don't eliminate duplications in $postdeps and $predeps 118565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_duplicate_compiler_generated_deps=: 118665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 118765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 118865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 118965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 119065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 119165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 119265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_help || { 119365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Sanity checks first: 119465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_check_version_match 119565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 119665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 119765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_configuration "not configured to build any kind of library" 119865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 119965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 120065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Darwin sucks 120165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval std_shrext=\"$shrext_cmds\" 120265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 120365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only execute mode is allowed to have -dlopen flags. 120465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 120565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "unrecognized option \`-dlopen'" 120665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$help" 1>&2 120765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 120865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 120965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 121065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Change the help message to a mode-specific one. 121165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich generic_help="$help" 121265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich help="Try \`$progname --help --mode=$opt_mode' for more information." 121365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 121465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 121565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 121665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Bail if the options were screwed 121765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $exit_cmd $EXIT_FAILURE 121865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 121965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 122065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 122165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 122265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 122365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich## ----------- ## 122465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich## Main. ## 122565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich## ----------- ## 122665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 122765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lalib_p file 122865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file. 122965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out 123065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters. 123165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lalib_p () 123265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 123365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$1" && 123465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e 4q "$1" 2>/dev/null \ 123565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 123665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 123765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 123865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lalib_unsafe_p file 123965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file. 124065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function implements the same check as func_lalib_p without 124165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# resorting to external programs. To this end, it redirects stdin and 124265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# closes it afterwards, without saving the original file descriptor. 124365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# As a safety measure, use it only where a negative result would be 124465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# fatal anyway. Works if `file' does not exist. 124565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lalib_unsafe_p () 124665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 124765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lalib_p=no 124865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 124965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lalib_p_l in 1 2 3 4 125065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 125165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich read lalib_p_line 125265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$lalib_p_line" in 125365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 125465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 125565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 125665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec 0<&5 5<&- 125765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 125865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$lalib_p" = yes 125965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 126065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 126165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_script_p file 126265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper script 126365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out 126465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters. 126565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_script_p () 126665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 126765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lalib_p "$1" 126865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 126965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 127065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_executable_p file 127165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper executable 127265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out 127365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters. 127465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_executable_p () 127565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 127665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_exec_suffix= 127765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 127865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe) ;; 127965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_ltwrapper_exec_suffix=.exe ;; 128065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 128165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 128265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 128365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 128465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_scriptname file 128565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Assumes file is an ltwrapper_executable 128665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# uses $file to determine the appropriate filename for a 128765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# temporary ltwrapper_script. 128865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_scriptname () 128965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 129065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_and_basename "$1" "" "." 129165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$func_basename_result" 129265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 129365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 129465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 129565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_p file 129665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper script or wrapper executable 129765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out 129865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters. 129965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_p () 130065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 130165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 130265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 130365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 130465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 130565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_execute_cmds commands fail_cmd 130665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Execute tilde-delimited COMMANDS. 130765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If FAIL_CMD is given, eval that upon failure. 130865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FAIL_CMD may read-access the current command in variable CMD! 130965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_execute_cmds () 131065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 131165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 131265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs=$IFS; IFS='~' 131365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for cmd in $1; do 131465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$save_ifs 131565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmd=\"$cmd\" 131665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$cmd" "${2-:}" 131765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 131865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$save_ifs 131965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 132065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 132165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 132265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_source file 132365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Source FILE, adding directory component if necessary. 132465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Note that it is not necessary on cygwin/mingw to append a dot to 132565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 132665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# behavior happens only for exec(3), not for open(2)! Also, sourcing 132765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `FILE.' does not work on cygwin managed mounts. 132865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_source () 132965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 133065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 133165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $1 in 133265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */* | *\\*) . "$1" ;; 133365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) . "./$1" ;; 133465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 133565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 133665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 133765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 133865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_resolve_sysroot PATH 133965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Replace a leading = in PATH with a sysroot. Store the result into 134065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_resolve_sysroot_result 134165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_resolve_sysroot () 134265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 134365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot_result=$1 134465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $func_resolve_sysroot_result in 134565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich =*) 134665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '=' '' "$func_resolve_sysroot_result" 134765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 134865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 134965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 135065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 135165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 135265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_replace_sysroot PATH 135365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If PATH begins with the sysroot, replace it with = and 135465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# store the result into func_replace_sysroot_result. 135565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_replace_sysroot () 135665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 135765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$lt_sysroot:$1" in 135865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ?*:"$lt_sysroot"*) 135965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname "$lt_sysroot" '' "$1" 136065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot_result="=$func_stripname_result" 136165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 136265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 136365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Including no sysroot. 136465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot_result=$1 136565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 136665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 136765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 136865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 136965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_infer_tag arg 137065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Infer tagged configuration to use if any are available and 137165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if one wasn't chosen via the "--tag" command line option. 137265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Only attempt this if the compiler in the base compile 137365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# command doesn't match the default compiler. 137465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# arg is usually of the form 'gcc ...' 137565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_infer_tag () 137665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 137765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 137865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$available_tags" && test -z "$tagname"; then 137965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_quoted= 138065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg in $CC; do 138165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append_quoted CC_quoted "$arg" 138265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 138365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_expanded=`func_echo_all $CC` 138465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_quoted_expanded=`func_echo_all $CC_quoted` 138565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $@ in 138665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Blanks in the command may have been stripped by the calling shell, 138765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but not from the CC environment variable when configure was run. 138865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 138965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 139065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Blanks at the start of $base_compile will cause this to fail 139165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # if we don't check for them as well. 139265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 139365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for z in $available_tags; do 139465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 139565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Evaluate the configuration. 139665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 139765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_quoted= 139865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg in $CC; do 139965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Double-quote args containing other shell metacharacters. 140065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append_quoted CC_quoted "$arg" 140165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 140265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_expanded=`func_echo_all $CC` 140365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CC_quoted_expanded=`func_echo_all $CC_quoted` 140465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$@ " in 140565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 140665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 140765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The compiler in the base compile command matches 140865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the one in the tagged configuration. 140965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Assume this is the tagged configuration we want. 141065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tagname=$z 141165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 141265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 141365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 141465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 141565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 141665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If $tagname still isn't set, then no tagged configuration 141765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # was found and let the user know that the "--tag" command 141865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # line option must be used. 141965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$tagname"; then 142065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_echo "unable to infer tagged configuration" 142165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "specify a tag with \`--tag'" 142265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# else 142365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_verbose "using $tagname tagged configuration" 142465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 142565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 142665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 142765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 142865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 142965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 143065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 143165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 143265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_write_libtool_object output_name pic_name nonpic_name 143365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Create a libtool object file (analogous to a ".la" file), 143465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# but don't create it if we're doing a dry run. 143565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_write_libtool_object () 143665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 143765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich write_libobj=${1} 143865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 143965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich write_lobj=\'${2}\' 144065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 144165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich write_lobj=none 144265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 144365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 144465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes; then 144565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich write_oldobj=\'${3}\' 144665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 144765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich write_oldobj=none 144865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 144965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 145065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 145165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat >${write_libobj}T <<EOF 145265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $write_libobj - a libtool object file 145365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 145465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 145565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Please DO NOT delete this file! 145665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# It is necessary for linking the library. 145765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 145865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Name of the PIC object. 145965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpic_object=$write_lobj 146065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 146165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Name of the non-PIC object 146265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnon_pic_object=$write_oldobj 146365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 146465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 146565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV "${write_libobj}T" "${write_libobj}" 146665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 146765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 146865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 146965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 147065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich################################################## 147165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 147265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich################################################## 147365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 147465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_file_wine_to_w32 ARG 147565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Helper function used by file name conversion functions when $build is *nix, 147665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and $host is mingw, cygwin, or some other w32 environment. Relies on a 147765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# correctly configured wine environment available, with the winepath program 147865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in $build's $PATH. 147965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 148065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is the $build file name to be converted to w32 format. 148165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in $func_convert_core_file_wine_to_w32_result, and will 148265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# be empty on error (or when ARG is empty) 148365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_file_wine_to_w32 () 148465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 148565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 148665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32_result="$1" 148765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 148865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Unfortunately, winepath does not exit with a non-zero error code, so we 148965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # are forced to check the contents of stdout. On the other hand, if the 149065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # command is not found, the shell will set an exit code of 127 and print 149165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # *an error message* to stdout. So we must check for both error code of 149265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # zero AND non-empty stdout, which explains the odd construction: 149365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 149465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 149565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 149665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e "$lt_sed_naive_backslashify"` 149765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 149865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32_result= 149965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 150065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 150165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 150265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_convert_core_file_wine_to_w32 150365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 150465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 150565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_path_wine_to_w32 ARG 150665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Helper function used by path conversion functions when $build is *nix, and 150765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 150865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# configured wine environment available, with the winepath program in $build's 150965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $PATH. Assumes ARG has no leading or trailing path separator characters. 151065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 151165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is path to be converted from $build format to win32. 151265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in $func_convert_core_path_wine_to_w32_result. 151365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unconvertible file (directory) names in ARG are skipped; if no directory names 151465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# are convertible, then the result may be empty. 151565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_path_wine_to_w32 () 151665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 151765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 151865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # unfortunately, winepath doesn't convert paths, only file names 151965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_path_wine_to_w32_result="" 152065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 152165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldIFS=$IFS 152265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=: 152365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for func_convert_core_path_wine_to_w32_f in $1; do 152465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$oldIFS 152565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 152665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$func_convert_core_file_wine_to_w32_result" ; then 152765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$func_convert_core_path_wine_to_w32_result"; then 152865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 152965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 153065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 153165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 153265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 153365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 153465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS=$oldIFS 153565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 153665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 153765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_convert_core_path_wine_to_w32 153865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 153965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 154065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygpath ARGS... 154165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 154265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 154365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 154465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (2), returns the Cygwin file name or path in func_cygpath_result (input 154565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# file name or path is assumed to be in w32 format, as previously converted 154665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# from $build's *nix or MSYS format). In case (3), returns the w32 file name 154765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# or path in func_cygpath_result (input file name or path is assumed to be in 154865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Cygwin format). Returns an empty string on error. 154965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 155065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARGS are passed to cygpath, with the last one being the file name or path to 155165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# be converted. 155265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 155365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 155465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# environment variable; do not put it in $PATH. 155565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygpath () 155665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 155765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 155865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 155965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 156065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$?" -ne 0; then 156165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # on failure, ensure result is empty 156265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath_result= 156365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 156465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 156565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath_result= 156665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 156765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 156865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 156965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#end: func_cygpath 157065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 157165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 157265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_msys_to_w32 ARG 157365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name or path ARG from MSYS format to w32 format. Return 157465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# result in func_convert_core_msys_to_w32_result. 157565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_msys_to_w32 () 157665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 157765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 157865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # awkward: cmd appends spaces to result 157965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 158065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 158165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 158265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#end: func_convert_core_msys_to_w32 158365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 158465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 158565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_check ARG1 ARG2 158665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that ARG1 (a file name in $build format) was converted to $host 158765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# format in ARG2. Otherwise, emit an error message, but continue (resetting 158865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result to ARG1). 158965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_check () 159065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 159165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 159265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$2" && test -n "$1" ; then 159365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "Could not determine host file name corresponding to" 159465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error " \`$1'" 159565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "Continuing, but uninstalled executables may not work." 159665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Fallback: 159765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 159865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 159965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 160065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_check 160165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 160265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 160365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 160465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that FROM_PATH (a path in $build format) was converted to $host 160565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 160665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result to a simplistic fallback value (see below). 160765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_check () 160865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 160965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 161065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$4" && test -n "$3"; then 161165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "Could not determine the host path corresponding to" 161265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error " \`$3'" 161365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "Continuing, but uninstalled executables may not work." 161465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Fallback. This is a deliberately simplistic "conversion" and 161565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # should not be "improved". See libtool.info. 161665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$1" != "x$2"; then 161765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_replace_pathsep_chars="s|$1|$2|g" 161865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result=`echo "$3" | 161965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e "$lt_replace_pathsep_chars"` 162065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 162165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$3" 162265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 162365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 162465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 162565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_check 162665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 162765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 162865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 162965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 163065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and appending REPL if ORIG matches BACKPAT. 163165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_front_back_pathsep () 163265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 163365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 163465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $4 in 163565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $1 ) func_to_host_path_result="$3$func_to_host_path_result" 163665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 163765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 163865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $4 in 163965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $2 ) func_append func_to_host_path_result "$3" 164065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 164165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 164265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 164365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_front_back_pathsep 164465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 164565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 164665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich################################################## 164765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build to $host FILE NAME CONVERSION FUNCTIONS # 164865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich################################################## 164965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# invoked via `$to_host_file_cmd ARG' 165065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 165165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# In each case, ARG is the path to be converted from $build to $host format. 165265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result will be available in $func_to_host_file_result. 165365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 165465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 165565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file ARG 165665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Converts the file name ARG from $build format to $host format. Return result 165765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_file_result. 165865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_host_file () 165965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 166065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 166165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $to_host_file_cmd "$1" 166265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 166365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_host_file 166465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 166565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 166665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_tool_file ARG LAZY 166765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# converts the file name ARG from $build format to toolchain format. Return 166865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# result in func_to_tool_file_result. If the conversion in use is listed 166965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in (the comma separated) LAZY, no conversion takes place. 167065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_tool_file () 167165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 167265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 167365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case ,$2, in 167465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *,"$to_tool_file_cmd",*) 167565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file_result=$1 167665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 167765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 167865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $to_tool_file_cmd "$1" 167965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file_result=$func_to_host_file_result 168065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 168165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 168265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 168365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_tool_file 168465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 168565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 168665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_noop ARG 168765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copy ARG to func_to_host_file_result. 168865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_noop () 168965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 169065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 169165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 169265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_noop 169365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 169465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 169565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_msys_to_w32 ARG 169665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 169765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# conversion to w32 is not available inside the cwrapper. Returns result in 169865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result. 169965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_msys_to_w32 () 170065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 170165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 170265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 170365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 170465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_msys_to_w32 "$1" 170565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$func_convert_core_msys_to_w32_result" 170665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 170765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 170865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 170965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_msys_to_w32 171065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 171165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 171265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_cygwin_to_w32 ARG 171365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from Cygwin to w32 format. Returns result in 171465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result. 171565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_cygwin_to_w32 () 171665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 171765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 171865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 171965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 172065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 172165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # LT_CYGPATH in this case. 172265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result=`cygpath -m "$1"` 172365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 172465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 172565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 172665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_cygwin_to_w32 172765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 172865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 172965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_nix_to_w32 ARG 173065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from *nix to w32 format. Requires a wine environment 173165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and a working winepath. Returns result in func_to_host_file_result. 173265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_nix_to_w32 () 173365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 173465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 173565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 173665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 173765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32 "$1" 173865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 173965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 174065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 174165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 174265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_nix_to_w32 174365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 174465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 174565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_msys_to_cygwin ARG 174665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 174765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Returns result in func_to_host_file_result. 174865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_msys_to_cygwin () 174965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 175065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 175165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 175265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 175365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_msys_to_w32 "$1" 175465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath -u "$func_convert_core_msys_to_w32_result" 175565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$func_cygpath_result" 175665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 175765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 175865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 175965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_msys_to_cygwin 176065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 176165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 176265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_nix_to_cygwin ARG 176365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 176465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 176565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_file_result. 176665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_nix_to_cygwin () 176765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 176865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 176965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$1" 177065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 177165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 177265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_file_wine_to_w32 "$1" 177365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 177465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_file_result="$func_cygpath_result" 177565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 177665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 177765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 177865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_nix_to_cygwin 177965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 178065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 178165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich############################################# 178265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build to $host PATH CONVERSION FUNCTIONS # 178365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich############################################# 178465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# invoked via `$to_host_path_cmd ARG' 178565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 178665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# In each case, ARG is the path to be converted from $build to $host format. 178765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The result will be available in $func_to_host_path_result. 178865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 178965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Path separators are also converted from $build format to $host format. If 179065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG begins or ends with a path separator character, it is preserved (but 179165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# converted to $host format) on output. 179265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 179365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# All path conversion functions are named using the following convention: 179465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# file name conversion function : func_convert_file_X_to_Y () 179565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# path conversion function : func_convert_path_X_to_Y () 179665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# where, for any given $build/$host combination the 'X_to_Y' value is the 179765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# same. If conversion functions are added for new $build/$host combinations, 179865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the two new functions must follow this pattern, or func_init_to_host_path_cmd 179965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will break. 180065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 180165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 180265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_init_to_host_path_cmd 180365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Ensures that function "pointer" variable $to_host_path_cmd is set to the 180465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# appropriate value, based on the value of $to_host_file_cmd. 180565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto_host_path_cmd= 180665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_init_to_host_path_cmd () 180765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 180865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 180965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$to_host_path_cmd"; then 181065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 181165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich to_host_path_cmd="func_convert_path_${func_stripname_result}" 181265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 181365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 181465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 181565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 181665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_path ARG 181765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Converts the path ARG from $build format to $host format. Return result 181865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_path_result. 181965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_host_path () 182065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 182165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 182265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_init_to_host_path_cmd 182365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $to_host_path_cmd "$1" 182465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 182565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_host_path 182665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 182765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 182865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_noop ARG 182965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copy ARG to func_to_host_path_result. 183065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_noop () 183165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 183265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 183365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 183465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_noop 183565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 183665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 183765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_msys_to_w32 ARG 183865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 183965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# conversion to w32 is not available inside the cwrapper. Returns result in 184065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_path_result. 184165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_msys_to_w32 () 184265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 184365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 184465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 184565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 184665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove leading and trailing path separator characters from ARG. MSYS 184765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 184865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and winepath ignores them completely. 184965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname : : "$1" 185065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_tmp1=$func_stripname_result 185165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 185265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$func_convert_core_msys_to_w32_result" 185365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_check : ";" \ 185465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 185565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 185665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 185765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 185865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_msys_to_w32 185965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 186065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 186165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_cygwin_to_w32 ARG 186265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from Cygwin to w32 format. Returns result in 186365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result. 186465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_cygwin_to_w32 () 186565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 186665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 186765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 186865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 186965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See func_convert_path_msys_to_w32: 187065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname : : "$1" 187165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_tmp1=$func_stripname_result 187265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 187365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_check : ";" \ 187465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 187565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 187665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 187765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 187865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_cygwin_to_w32 187965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 188065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 188165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_nix_to_w32 ARG 188265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from *nix to w32 format. Requires a wine environment and 188365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a working winepath. Returns result in func_to_host_file_result. 188465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_nix_to_w32 () 188565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 188665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 188765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 188865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 188965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See func_convert_path_msys_to_w32: 189065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname : : "$1" 189165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_tmp1=$func_stripname_result 189265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 189365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 189465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_check : ";" \ 189565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 189665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 189765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 189865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 189965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_nix_to_w32 190065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 190165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 190265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_msys_to_cygwin ARG 190365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 190465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Returns result in func_to_host_file_result. 190565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_msys_to_cygwin () 190665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 190765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 190865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 190965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 191065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See func_convert_path_msys_to_w32: 191165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname : : "$1" 191265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_tmp1=$func_stripname_result 191365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 191465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 191565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$func_cygpath_result" 191665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_check : : \ 191765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 191865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" : "$1" 191965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 192065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 192165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_msys_to_cygwin 192265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 192365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 192465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_nix_to_cygwin ARG 192565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 192665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 192765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result. 192865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_nix_to_cygwin () 192965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 193065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 193165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$1" 193265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 193365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove leading and trailing path separator characters from 193465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ARG. msys behavior is inconsistent here, cygpath turns them 193565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # into '.;' and ';.', and winepath ignores them completely. 193665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname : : "$1" 193765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_tmp1=$func_stripname_result 193865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 193965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 194065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path_result="$func_cygpath_result" 194165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_check : : \ 194265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 194365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" : "$1" 194465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 194565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 194665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_nix_to_cygwin 194765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 194865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 194965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_compile arg... 195065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_compile () 195165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 195265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 195365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Get the compilation command and the source file. 195465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich base_compile= 195565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich srcfile="$nonopt" # always keep a non-empty value in "srcfile" 195665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich suppress_opt=yes 195765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich suppress_output= 195865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg_mode=normal 195965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj= 196065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich later= 196165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pie_flag= 196265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 196365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg 196465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 196565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg_mode in 196665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg ) 196765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # do not "continue". Instead, add this to base_compile 196865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lastarg="$arg" 196965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg_mode=normal 197065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 197165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 197265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich target ) 197365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj="$arg" 197465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg_mode=normal 197565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 197665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 197765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 197865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich normal ) 197965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Accept any command-line options. 198065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 198165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o) 198265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$libobj" && \ 198365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "you cannot specify \`-o' more than once" 198465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg_mode=target 198565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 198665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 198765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 198865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -pie | -fpie | -fPIE) 198965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append pie_flag " $arg" 199065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 199165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 199265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 199365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared | -static | -prefer-pic | -prefer-non-pic) 199465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append later " $arg" 199565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 199665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 199765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 199865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-suppress) 199965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich suppress_opt=no 200065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 200165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 200265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 200365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xcompiler) 200465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg_mode=arg # the next one goes into the "base_compile" arg list 200565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue # The current "srcfile" will either be retained or 200665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; # replaced later. I would guess that would be a bug. 200765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 200865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wc,*) 200965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-Wc,' '' "$arg" 201065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich args=$func_stripname_result 201165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lastarg= 201265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS=',' 201365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg in $args; do 201465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 201565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append_quoted lastarg "$arg" 201665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 201765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 201865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname ' ' '' "$lastarg" 201965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lastarg=$func_stripname_result 202065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 202165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the arguments to base_compile. 202265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append base_compile " $lastarg" 202365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 202465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 202565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 202665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 202765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Accept the current argument as the source file. 202865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The previous "srcfile" becomes the current argument. 202965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 203065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lastarg="$srcfile" 203165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich srcfile="$arg" 203265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 203365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # case $arg 203465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 203565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # case $arg_mode 203665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 203765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Aesthetically quote the previous argument. 203865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append_quoted base_compile "$lastarg" 203965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # for arg 204065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 204165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg_mode in 204265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg) 204365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "you must specify an argument for -Xcompile" 204465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 204565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich target) 204665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "you must specify a target with \`-o'" 204765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 204865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 204965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Get the name of the library object. 205065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libobj" && { 205165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$srcfile" 205265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj="$func_basename_result" 205365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 205465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 205565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 205665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 205765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Recognize several different file suffixes. 205865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the user specifies -o file.o, it is replaced with file.lo 205965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $libobj in 206065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.[cCFSifmso] | \ 206165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.ada | *.adb | *.ads | *.asm | \ 206265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 206365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 206465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_xform "$libobj" 206565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj=$func_xform_result 206665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 206765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 206865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 206965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $libobj in 207065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 207165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 207265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot determine name of library object from \`$libobj'" 207365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 207465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 207565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 207665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_infer_tag $base_compile 207765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 207865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg in $later; do 207965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 208065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared) 208165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_libtool_libs" != yes && \ 208265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_configuration "can not build a shared library" 208365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=no 208465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 208565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 208665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 208765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static) 208865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 208965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 209065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 209165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 209265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 209365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -prefer-pic) 209465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_mode=yes 209565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 209665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 209765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 209865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -prefer-non-pic) 209965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_mode=no 210065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 210165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 210265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 210365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 210465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 210565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$libobj" 210665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobj" != "X$func_quote_for_eval_result" \ 210765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 210865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && func_warning "libobj name \`$libobj' may not contain shell special characters." 210965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_and_basename "$obj" "/" "" 211065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objname="$func_basename_result" 211165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xdir="$func_dirname_result" 211265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lobj=${xdir}$objdir/$objname 211365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 211465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$base_compile" && \ 211565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify a compilation command" 211665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 211765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete any leftover library objects. 211865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes; then 211965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich removelist="$obj $lobj $libobj ${libobj}T" 212065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 212165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich removelist="$lobj $libobj ${libobj}T" 212265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 212365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 212465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # On Cygwin there's no "real" PIC flag so we must build both object types 212565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 212665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cygwin* | mingw* | pw32* | os2* | cegcc*) 212765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_mode=default 212865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 212965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 213065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 213165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # non-PIC code in shared libraries is not supported 213265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_mode=default 213365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 213465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 213565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Calculate the filename of the output object if compiler does 213665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # not support -o with -c 213765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$compiler_c_o" = no; then 213865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 213965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lockfile="$output_obj.lock" 214065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 214165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_obj= 214265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich need_locks=no 214365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lockfile= 214465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 214565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 214665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Lock this critical section if it is needed 214765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We use this script file to make the link, it avoids creating a new file 214865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_locks" = yes; then 214965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 215065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_echo "Waiting for $lockfile to be removed" 215165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sleep 2 215265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 215365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$need_locks" = warn; then 215465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$lockfile"; then 215565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 215665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile exists and contains: 215765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null` 215865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 215965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same 216065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because 216165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 216265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 216365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 216465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler." 216565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 216665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $removelist 216765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 216865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 216965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append removelist " $output_obj" 217065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$srcfile" > "$lockfile" 217165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 217265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 217365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $removelist 217465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append removelist " $lockfile" 217565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 217665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 217765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 217865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich srcfile=$func_to_tool_file_result 217965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$srcfile" 218065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich qsrcfile=$func_quote_for_eval_result 218165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 218265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only build a PIC object if we are building libtool libraries. 218365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 218465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Without this assignment, base_compile gets emptied. 218565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fbsd_hideous_sh_bug=$base_compile 218665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 218765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pic_mode" != no; then 218865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich command="$base_compile $qsrcfile $pic_flag" 218965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 219065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't build PIC code 219165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich command="$base_compile $qsrcfile" 219265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 219365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 219465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mkdir_p "$xdir$objdir" 219565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 219665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$output_obj"; then 219765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Place PIC objects in $objdir 219865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append command " -o $lobj" 219965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 220065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 220165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval_locale "$command" \ 220265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 220365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 220465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_locks" = warn && 220565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 220665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 220765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile contains: 220865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null` 220965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 221065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbut it should contain: 221165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$srcfile 221265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 221365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same 221465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because 221565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 221665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 221765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 221865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler." 221965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 222065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $removelist 222165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 222265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 222365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 222465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just move the object if needed, then go on to compile the next one 222565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 222665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$MV "$output_obj" "$lobj"' \ 222765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 222865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 222965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 223065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Allow error messages only from the first compilation. 223165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$suppress_opt" = yes; then 223265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich suppress_output=' >/dev/null 2>&1' 223365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 223465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 223565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 223665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only build a position-dependent object if we build old libraries. 223765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes; then 223865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pic_mode" != yes; then 223965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't build PIC code 224065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich command="$base_compile $qsrcfile$pie_flag" 224165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 224265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich command="$base_compile $qsrcfile $pic_flag" 224365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 224465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$compiler_c_o" = yes; then 224565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append command " -o $obj" 224665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 224765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 224865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Suppress compiler output if we already did a PIC compilation. 224965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append command "$suppress_output" 225065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval_locale "$command" \ 225165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 225265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 225365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_locks" = warn && 225465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 225565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 225665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile contains: 225765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null` 225865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 225965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbut it should contain: 226065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$srcfile 226165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 226265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same 226365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because 226465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 226565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 226665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 226765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler." 226865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 226965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $removelist 227065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 227165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 227265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 227365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just move the object if needed 227465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 227565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$MV "$output_obj" "$obj"' \ 227665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 227765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 227865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 227965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 228065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 228165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 228265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 228365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Unlock the critical section if it was locked 228465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_locks" != no; then 228565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich removelist=$lockfile 228665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM "$lockfile" 228765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 228865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 228965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 229065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 229165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 229265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 229365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$opt_help || { 229465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 229565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 229665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 229765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_help () 229865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 229965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need to display help for each of the modes. 230065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $opt_mode in 230165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "") 230265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Generic help is extracted from the usage comments 230365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # at the start of this file. 230465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_help 230565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 230665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 230765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich clean) 230865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 230965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 231065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 231165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRemove files from the build directory. 231265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 231365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRM is the name of the program to use to delete files associated with each FILE 231465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 231565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto RM. 231665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 231765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf FILE is a libtool library, object or program, all the files associated 231865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichwith it are deleted. Otherwise, only FILE itself is deleted using RM." 231965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 232065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 232165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile) 232265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 232365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 232465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 232565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichCompile a source file into a libtool library object. 232665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 232765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode accepts the following additional options: 232865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 232965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o OUTPUT-FILE set the output file name to OUTPUT-FILE 233065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-suppress do not suppress compiler output for multiple passes 233165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -prefer-pic try to build PIC objects only 233265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -prefer-non-pic try to build non-PIC objects only 233365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared do not build a \`.o' file suitable for static linking 233465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static only build a \`.o' file suitable for static linking 233565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wc,FLAG pass FLAG directly to the compiler 233665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 233765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 233865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfrom the given SOURCEFILE. 233965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 234065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe output file name is determined by removing the directory component from 234165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichSOURCEFILE, then substituting the C source code suffix \`.c' with the 234265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibrary object suffix, \`.lo'." 234365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 234465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 234565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich execute) 234665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 234765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 234865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 234965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAutomatically set library path, then run a program. 235065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 235165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode accepts the following additional options: 235265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 235365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -dlopen FILE add the directory containing FILE to the library path 235465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 235565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode sets the library path environment variable according to \`-dlopen' 235665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichflags. 235765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 235865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf any of the ARGS are libtool executable wrappers, then they are translated 235965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinto their corresponding uninstalled binary, and any of their required library 236065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdirectories are added to the library path. 236165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 236265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThen, COMMAND is executed, with ARGS as arguments." 236365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 236465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 236565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finish) 236665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 236765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 236865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 236965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichComplete the installation of libtool libraries. 237065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 237165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEach LIBDIR is a directory that contains libtool libraries. 237265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 237365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe commands that this mode executes may require superuser privileges. Use 237465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthe \`--dry-run' option if you just want to see what would be executed." 237565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 237665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 237765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install) 237865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 237965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 238065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 238165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichInstall executables or libraries. 238265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 238365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichINSTALL-COMMAND is the installation command. The first component should be 238465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicheither the \`install' or \`cp' program. 238565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 238665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe following components of INSTALL-COMMAND are treated specially: 238765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 238865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 238965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 239065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe rest of the components are interpreted as arguments to that command (only 239165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBSD-compatible install options are recognized)." 239265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 239365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 239465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link) 239565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 239665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 239765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 239865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLink object files or libraries together to form another library, or to 239965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcreate an executable program. 240065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 240165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLINK-COMMAND is a command using the C compiler that you would use to create 240265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicha program from several object files. 240365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 240465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe following components of LINK-COMMAND are treated specially: 240565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 240665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -all-static do not do any dynamic linking at all 240765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -avoid-version do not add a version suffix if possible 240865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -bindir BINDIR specify path to binaries directory (for systems where 240965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libraries must be found in the PATH setting at runtime) 241065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 241165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 241265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 241365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -export-symbols SYMFILE 241465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich try to export only the symbols listed in SYMFILE 241565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -export-symbols-regex REGEX 241665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich try to export only the symbols matching REGEX 241765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -LLIBDIR search LIBDIR for required installed libraries 241865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -lNAME OUTPUT-FILE requires the installed library libNAME 241965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -module build a library that can dlopened 242065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-fast-install disable the fast-install mode 242165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-install link a not-installable executable 242265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-undefined declare that a library does not refer to external symbols 242365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 242465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -objectlist FILE Use a list of object files found in FILE to specify objects 242565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -precious-files-regex REGEX 242665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich don't remove output files matching REGEX 242765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -release RELEASE specify package release information 242865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -rpath LIBDIR the created library will eventually be installed in LIBDIR 242965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 243065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared only do dynamic linking of libtool libraries 243165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shrext SUFFIX override the standard shared library file extension 243265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static do not do any dynamic linking of uninstalled libtool libraries 243365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static-libtool-libs 243465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do not do any dynamic linking of libtool libraries 243565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -version-info CURRENT[:REVISION[:AGE]] 243665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich specify library version info [each variable defaults to 0] 243765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -weak LIBNAME declare that the target provides the LIBNAME interface 243865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wc,FLAG 243965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 244065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wl,FLAG 244165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xlinker FLAG pass linker-specific FLAG directly to the linker 244265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 244365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 244465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAll other options (arguments beginning with \`-') are ignored. 244565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 244665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEvery other argument is treated as a filename. Files ending in \`.la' are 244765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtreated as uninstalled libtool libraries, other files are standard or library 244865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichobject files. 244965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 245065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 245165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichonly library objects (\`.lo' files) may be specified, and \`-rpath' is 245265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrequired, except when creating a convenience library. 245365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 245465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 245565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichusing \`ar' and \`ranlib', or on Windows using \`lib'. 245665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 245765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 245865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichis created, otherwise an executable program is created." 245965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 246065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 246165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich uninstall) 246265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \ 246365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 246465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 246565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRemove libraries from an installation directory. 246665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 246765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRM is the name of the program to use to delete files associated with each FILE 246865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 246965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto RM. 247065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 247165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf FILE is a libtool library, all the files associated with it are deleted. 247265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichOtherwise, only FILE itself is deleted using RM." 247365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 247465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 247565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 247665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "invalid operation mode \`$opt_mode'" 247765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 247865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 247965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 248065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 248165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "Try \`$progname --help' for more information about other modes." 248265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 248365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 248465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Now that we've collected a possible --mode arg, show help if necessary 248565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif $opt_help; then 248665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_help" = :; then 248765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mode_help 248865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 248965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 249065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_help noexit 249165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for opt_mode in compile link execute install finish uninstall clean; do 249265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mode_help 249365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 249465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } | sed -n '1p; 2,$s/^Usage:/ or: /p' 249565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 249665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_help noexit 249765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for opt_mode in compile link execute install finish uninstall clean; do 249865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 249965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mode_help 250065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 250165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } | 250265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sed '1d 250365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^When reporting/,/^Report/{ 250465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich H 250565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich d 250665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 250765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $x 250865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /information about other modes/d 250965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /more detailed .*MODE/d 251065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 251165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 251265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $? 251365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 251465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 251565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 251665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_execute arg... 251765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_execute () 251865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 251965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 252065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The first argument is the command name. 252165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmd="$nonopt" 252265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$cmd" && \ 252365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify a COMMAND" 252465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 252565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Handle -dlopen flags immediately. 252665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $opt_dlopen; do 252765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$file" \ 252865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || func_fatal_help "\`$file' is not a file" 252965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 253065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir= 253165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 253265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 253365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$file" 253465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=$func_resolve_sysroot_result 253565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 253665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that this really is a libtool archive. 253765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lalib_unsafe_p "$file" \ 253865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || func_fatal_help "\`$lib' is not a valid libtool archive" 253965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 254065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Read the libtool library. 254165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlname= 254265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich library_names= 254365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$file" 254465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 254565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Skip this library if it cannot be dlopened. 254665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$dlname"; then 254765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Warn if it was a shared library. 254865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$library_names" && \ 254965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`$file' was not linked with \`-export-dynamic'" 255065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 255165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 255265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 255365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$file" "" "." 255465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$func_dirname_result" 255565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 255665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$dir/$objdir/$dlname"; then 255765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dir "/$objdir" 255865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 255965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -f "$dir/$dlname"; then 256065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 256165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 256265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 256365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 256465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 256565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 256665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just add the directory containing the .lo file. 256765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$file" "" "." 256865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$func_dirname_result" 256965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 257065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 257165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 257265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 257365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 257465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 257565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 257665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 257765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Get the absolute pathname. 257865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir=`cd "$dir" && pwd` 257965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$absdir" && dir="$absdir" 258065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 258165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now add the directory to shlibpath_var. 258265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval "test -z \"\$$shlibpath_var\""; then 258365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$shlibpath_var=\"\$dir\"" 258465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 258565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 258665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 258765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 258865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 258965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This variable tells wrapper scripts just to set shlibpath_var 259065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # rather than running their programs. 259165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libtool_execute_magic="$magic" 259265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 259365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check if any of the arguments is a wrapper script. 259465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich args= 259565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file 259665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 259765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 259865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -* | *.la | *.lo ) ;; 259965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 260065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do a test to see if this is really a libtool program. 260165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_ltwrapper_script_p "$file"; then 260265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$file" 260365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform arg to wrapped name. 260465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file="$progdir/$program" 260565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif func_ltwrapper_executable_p "$file"; then 260665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_scriptname "$file" 260765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$func_ltwrapper_scriptname_result" 260865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform arg to wrapped name. 260965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file="$progdir/$program" 261065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 261165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 261265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 261365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Quote arguments (to preserve shell metacharacters). 261465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append_quoted args "$file" 261565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 261665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 261765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$opt_dry_run" = Xfalse; then 261865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath_var"; then 261965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Export the shlibpath_var. 262065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "export $shlibpath_var" 262165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 262265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 262365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore saved environment variables 262465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 262565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 262665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "if test \"\${save_$lt_var+set}\" = set; then 262765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $lt_var=\$save_$lt_var; export $lt_var 262865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 262965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $lt_unset $lt_var 263065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi" 263165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 263265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 263365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now prepare to actually exec the command. 263465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec_cmd="\$cmd$args" 263565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 263665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Display what would be done. 263765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath_var"; then 263865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 263965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "export $shlibpath_var" 264065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 264165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$cmd$args" 264265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 264365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 264465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 264565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 264665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 264765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 264865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 264965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_finish arg... 265065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_finish () 265165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 265265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 265365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libs= 265465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdirs= 265565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich admincmds= 265665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 265765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for opt in "$nonopt" ${1+"$@"} 265865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 265965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -d "$opt"; then 266065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libdirs " $opt" 266165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 266265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -f "$opt"; then 266365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_unsafe_p "$opt"; then 266465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libs " $opt" 266565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 266665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`$opt' is not a valid libtool archive" 266765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 266865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 266965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 267065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "invalid argument \`$opt'" 267165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 267265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 267365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 267465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$libs"; then 267565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$lt_sysroot"; then 267665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 267765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 267865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 267965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sysroot_cmd= 268065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 268165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 268265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove sysroot references 268365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_dry_run; then 268465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $libs; do 268565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 268665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 268765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 268865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmpdir=`func_mktempdir` 268965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $libs; do 269065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 269165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich > $tmpdir/tmp-la 269265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich mv -f $tmpdir/tmp-la $lib 269365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 269465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ${RM}r "$tmpdir" 269565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 269665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 269765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 269865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 269965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $libdirs; do 270065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finish_cmds"; then 270165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the finish commands. 270265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 270365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich'"$cmd"'"' 270465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 270565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finish_eval"; then 270665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do the single finish_eval. 270765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmds=\"$finish_eval\" 270865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval "$cmds" || func_append admincmds " 270965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $cmds" 271065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 271165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 271265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 271365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 271465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Exit here if they wanted silent mode. 271565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_silent && exit $EXIT_SUCCESS 271665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 271765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 271865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "----------------------------------------------------------------------" 271965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "Libraries have been installed in:" 272065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $libdirs; do 272165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO " $libdir" 272265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 272365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 272465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "If you ever happen to want to link against installed libraries" 272565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "in a given directory, LIBDIR, you must either use libtool, and" 272665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 272765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "flag during linking and do at least one of the following:" 272865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath_var"; then 272965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 273065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " during execution" 273165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 273265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$runpath_var"; then 273365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " - add LIBDIR to the \`$runpath_var' environment variable" 273465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " during linking" 273565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 273665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 273765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir=LIBDIR 273865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 273965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 274065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO " - use the \`$flag' linker flag" 274165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 274265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$admincmds"; then 274365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO " - have your system administrator run these commands:$admincmds" 274465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 274565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f /etc/ld.so.conf; then 274665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 274765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 274865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 274965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 275065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "See any operating system documentation about shared libraries for" 275165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 275265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich solaris2.[6789]|solaris2.1[0-9]) 275365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 275465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "pages." 275565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 275665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 275765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "more information, such as the ld(1) and ld.so(8) manual pages." 275865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 275965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 276065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "----------------------------------------------------------------------" 276165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 276265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 276365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 276465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 276565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 276665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 276765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 276865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_install arg... 276965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_install () 277065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 277165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 277265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # There may be an optional sh(1) argument at the beginning of 277365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # install_prog (especially on Windows NT). 277465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 277565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Allow the use of GNU shtool's install command. 277665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $nonopt in *shtool*) :;; *) false;; esac; then 277765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Aesthetically quote it. 277865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$nonopt" 277965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install_prog="$func_quote_for_eval_result " 278065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$1 278165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 278265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 278365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install_prog= 278465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$nonopt 278565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 278665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 278765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The real first argument should be the name of the installation program. 278865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Aesthetically quote it. 278965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 279065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append install_prog "$func_quote_for_eval_result" 279165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install_shared_prog=$install_prog 279265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $install_prog " in 279365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\\\ /]cp\ *) install_cp=: ;; 279465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) install_cp=false ;; 279565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 279665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 279765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need to accept at least all the BSD install flags. 279865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dest= 279965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich files= 280065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich opts= 280165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 280265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install_type= 280365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich isdir=no 280465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich stripme= 280565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no_mode=: 280665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg 280765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 280865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg2= 280965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dest"; then 281065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append files " $dest" 281165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dest=$arg 281265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 281365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 281465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 281565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 281665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -d) isdir=yes ;; 281765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -f) 281865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $install_cp; then :; else 281965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=$arg 282065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 282165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 282265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -g | -m | -o) 282365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=$arg 282465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 282565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -s) 282665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich stripme=" -s" 282765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 282865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 282965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -*) 283065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 283165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 283265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the previous option needed an argument, then skip it. 283365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$prev"; then 283465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$prev" = x-m && test -n "$install_override_mode"; then 283565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg2=$install_override_mode 283665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no_mode=false 283765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 283865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 283965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 284065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dest=$arg 284165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 284265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 284365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 284465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 284565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 284665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Aesthetically quote the argument. 284765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 284865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append install_prog " $func_quote_for_eval_result" 284965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$arg2"; then 285065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg2" 285165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 285265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append install_shared_prog " $func_quote_for_eval_result" 285365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 285465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 285565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$install_prog" && \ 285665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify an install program" 285765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 285865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$prev" && \ 285965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "the \`$prev' option requires an argument" 286065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 286165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$install_override_mode" && $no_mode; then 286265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $install_cp; then :; else 286365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$install_override_mode" 286465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append install_shared_prog " -m $func_quote_for_eval_result" 286565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 286665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 286765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 286865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$files"; then 286965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$dest"; then 287065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "no file or destination specified" 287165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 287265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify a destination" 287365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 287465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 287565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 287665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Strip any trailing slash from the destination. 287765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '/' "$dest" 287865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dest=$func_stripname_result 287965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 288065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that the destination is a directory. 288165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -d "$dest" && isdir=yes 288265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$isdir" = yes; then 288365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destdir="$dest" 288465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destname= 288565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 288665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_and_basename "$dest" "" "." 288765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destdir="$func_dirname_result" 288865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destname="$func_basename_result" 288965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 289065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Not a directory, so check to see that there is only one file specified. 289165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $files; shift 289265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$#" -gt 1 && \ 289365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "\`$dest' is not a directory" 289465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 289565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $destdir in 289665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 289765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 289865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $files; do 289965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 290065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) ;; 290165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 290265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "\`$destdir' must be an absolute directory name" 290365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 290465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 290565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 290665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 290765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 290865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 290965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This variable tells wrapper scripts just to set variables rather 291065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # than running their programs. 291165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libtool_install_magic="$magic" 291265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 291365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich staticlibs= 291465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich future_libdirs= 291565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich current_libdirs= 291665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $files; do 291765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 291865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each installation. 291965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 292065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$libext) 292165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do the static libraries later. 292265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append staticlibs " $file" 292365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 292465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 292565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 292665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$file" 292765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=$func_resolve_sysroot_result 292865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 292965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that this really is a libtool archive. 293065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lalib_unsafe_p "$file" \ 293165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || func_fatal_help "\`$file' is not a valid libtool archive" 293265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 293365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich library_names= 293465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_library= 293565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 293665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$file" 293765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 293865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the libdir to current_libdirs if it is the destination. 293965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$destdir" = "X$libdir"; then 294065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$current_libdirs " in 294165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 294265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append current_libdirs " $libdir" ;; 294365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 294465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 294565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Note the libdir as a future libdir. 294665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$future_libdirs " in 294765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 294865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append future_libdirs " $libdir" ;; 294965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 295065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 295165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 295265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$file" "/" "" 295365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$func_dirname_result" 295465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dir "$objdir" 295565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 295665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$relink_command"; then 295765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Determine the prefix the user has applied to our future dir. 295865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 295965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 296065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't allow the user to place us outside of our expected 296165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # location b/c this prevents finding dependent libraries that 296265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # are installed to the same prefix. 296365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # At present, this check doesn't affect windows .dll's that 296465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # are installed into $libdir/../bin (currently, that works fine) 296565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but it's something to keep an eye on. 296665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$inst_prefix_dir" = "$destdir" && \ 296765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 296865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 296965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$inst_prefix_dir"; then 297065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Stick the inst_prefix_dir data into the link command. 297165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 297265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 297365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 297465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 297565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 297665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "relinking \`$file'" 297765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$relink_command" \ 297865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 297965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 298065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 298165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See the names of the shared library. 298265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $library_names; shift 298365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$1"; then 298465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich realname="$1" 298565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 298665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 298765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich srcname="$realname" 298865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$relink_command" && srcname="$realname"T 298965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 299065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install the shared library and build the symlinks. 299165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 299265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'exit $?' 299365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tstripme="$stripme" 299465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 299565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cygwin* | mingw* | pw32* | cegcc*) 299665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $realname in 299765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.dll.a) 299865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tstripme="" 299965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 300065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 300165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 300265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 300365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$tstripme" && test -n "$striplib"; then 300465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$striplib $destdir/$realname" 'exit $?' 300565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 300665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 300765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$#" -gt 0; then 300865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the old symlinks, and create new ones. 300965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try `ln -sf' first, because the `ln' binary might depend on 301065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the symlink we replace! Solaris /bin/ln does not understand -f, 301165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # so we also need to try rm && ln -s. 301265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for linkname 301365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 301465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$linkname" != "$realname" \ 301565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 301665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 301765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 301865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 301965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the postinstall commands. 302065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib="$destdir/$realname" 302165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$postinstall_cmds" 'exit $?' 302265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 302365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 302465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install the pseudo-library for information purposes. 302565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file" 302665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 302765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich instname="$dir/$name"i 302865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 302965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 303065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Maybe install the static library, too. 303165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$old_library" && func_append staticlibs " $dir/$old_library" 303265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 303365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 303465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 303565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install (i.e. copy) a libtool object. 303665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 303765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Figure out destination file name, if it wasn't already specified. 303865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$destname"; then 303965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$destdir/$destname" 304065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 304165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file" 304265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$func_basename_result" 304365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$destdir/$destfile" 304465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 304565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 304665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Deduce the name of the destination old-style object file. 304765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $destfile in 304865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 304965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o "$destfile" 305065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich staticdest=$func_lo2o_result 305165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 305265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$objext) 305365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich staticdest="$destfile" 305465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile= 305565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 305665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 305765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "cannot copy a libtool object to \`$destfile'" 305865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 305965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 306065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 306165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install the libtool object if requested. 306265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$destfile" && \ 306365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_prog $file $destfile" 'exit $?' 306465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 306565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install the old object if enabled. 306665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes; then 306765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Deduce the name of the old-style object file. 306865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o "$file" 306965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich staticobj=$func_lo2o_result 307065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 307165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 307265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 307365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 307465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 307565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 307665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Figure out destination file name, if it wasn't already specified. 307765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$destname"; then 307865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$destdir/$destname" 307965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 308065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file" 308165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$func_basename_result" 308265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile="$destdir/$destfile" 308365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 308465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 308565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the file is missing, and there is a .exe on the end, strip it 308665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # because it is most likely a libtool script we actually want to 308765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # install 308865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich stripped_ext="" 308965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 309065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe) 309165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -f "$file"; then 309265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$file" 309365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=$func_stripname_result 309465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich stripped_ext=".exe" 309565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 309665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 309765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 309865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 309965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do a test to see if this is really a libtool program. 310065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 310165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw*) 310265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_ltwrapper_executable_p "$file"; then 310365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_scriptname "$file" 310465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrapper=$func_ltwrapper_scriptname_result 310565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 310665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$file" 310765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrapper=$func_stripname_result 310865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 310965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 311065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 311165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrapper=$file 311265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 311365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 311465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_ltwrapper_script_p "$wrapper"; then 311565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich notinst_deplibs= 311665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 311765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 311865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$wrapper" 311965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 312065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check the variables that should have been set. 312165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$generated_by_libtool_version" && \ 312265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "invalid libtool wrapper script \`$wrapper'" 312365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 312465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize=yes 312565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $notinst_deplibs; do 312665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that each library is installed. 312765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir= 312865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$lib"; then 312965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$lib" 313065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 313165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 313265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$libdir" && test ! -f "$libfile"; then 313365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`$lib' has not been installed in \`$libdir'" 313465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize=no 313565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 313665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 313765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 313865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 313965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$wrapper" 314065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 314165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich outputname= 314265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" = no && test -n "$relink_command"; then 314365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 314465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$finalize" = yes; then 314565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmpdir=`func_mktempdir` 314665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file$stripped_ext" 314765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file="$func_basename_result" 314865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich outputname="$tmpdir/$file" 314965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Replace the output file specification. 315065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 315165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 315265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_silent || { 315365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand "$relink_command" 315465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "func_echo $func_quote_for_expand_result" 315565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 315665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval "$relink_command"; then : 315765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 315865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "error: relink \`$file' with the above command before installing it" 315965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || ${RM}r "$tmpdir" 316065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 316165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 316265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file="$outputname" 316365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 316465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "cannot relink \`$file'" 316565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 316665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 316765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 316865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Install the binary that we compiled earlier. 316965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 317065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 317165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 317265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 317365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # remove .exe since cygwin /usr/bin/install will append another 317465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # one anyway 317565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $install_prog,$host in 317665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */usr/bin/install*,*cygwin*) 317765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file:$destfile in 317865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe:*.exe) 317965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # this is ok 318065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 318165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe:*) 318265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile=$destfile.exe 318365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 318465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *:*.exe) 318565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$destfile" 318665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destfile=$func_stripname_result 318765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 318865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 318965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 319065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 319165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 319265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || if test -n "$outputname"; then 319365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ${RM}r "$tmpdir" 319465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 319565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 319665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 319765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 319865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 319965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $staticlibs; do 320065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file" 320165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 320265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 320365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Set up the ranlib parameters. 320465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlib="$destdir/$name" 320565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 320665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tool_oldlib=$func_to_tool_file_result 320765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 320865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 320965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 321065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$stripme" && test -n "$old_striplib"; then 321165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 321265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 321365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 321465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the postinstall commands. 321565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$old_postinstall_cmds" 'exit $?' 321665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 321765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 321865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$future_libdirs" && \ 321965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "remember to run \`$progname --finish$future_libdirs'" 322065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 322165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$current_libdirs"; then 322265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Maybe just do a dry run. 322365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run && current_libdirs=" -n$current_libdirs" 322465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 322565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 322665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 322765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 322865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 322965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 323065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = install && func_mode_install ${1+"$@"} 323165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 323265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 323365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_generate_dlsyms outputname originator pic_p 323465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Extract symbols from dlprefiles and create ${outputname}S.o with 323565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a dlpreopen symbol table. 323665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_generate_dlsyms () 323765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 323865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 323965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_outputname="$1" 324065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_originator="$2" 324165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_pic_p="${3-no}" 324265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 324365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_dlsyms= 324465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 324565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 324665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$NM" && test -n "$global_symbol_pipe"; then 324765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_dlsyms="${my_outputname}S.c" 324865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 324965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "not configured to extract global symbols from dlpreopened files" 325065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 325165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 325265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 325365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$my_dlsyms"; then 325465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $my_dlsyms in 325565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "") ;; 325665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.c) 325765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Discover the nlist of each of the dlfiles. 325865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nlist="$output_objdir/${my_outputname}.nm" 325965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 326065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 326165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 326265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Parse the name list into a source file. 326365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating $output_objdir/$my_dlsyms" 326465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 326565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 326665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 326765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 326865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 326965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef __cplusplus 327065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextern \"C\" { 327165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 327265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 327365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 327465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 327565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 327665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 327765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 327865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 327965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* DATA imports from DLLs on WIN32 con't be const, because runtime 328065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relocations are performed -- see ld's documentation on pseudo-relocs. */ 328165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST 328265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__osf__) 328365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* This system does not cope well with relocations in const data. */ 328465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST 328565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 328665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST const 328765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 328865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 328965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* External symbol declarations for the compiler. */\ 329065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 329165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 329265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$dlself" = yes; then 329365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "generating symbol list for \`$output'" 329465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 329565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 329665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 329765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add our own program objects to the symbol list. 329865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 329965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for progfile in $progfiles; do 330065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$progfile" func_convert_file_msys_to_w32 330165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 330265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 330365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 330465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 330565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$exclude_expsyms"; then 330665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 330765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 330865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$MV "$nlist"T "$nlist"' 330965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 331065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 331165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 331265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols_regex"; then 331365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 331465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 331565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$MV "$nlist"T "$nlist"' 331665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 331765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 331865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 331965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepare the list of exported symbols 332065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$export_symbols"; then 332165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols="$output_objdir/$outputname.exp" 332265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 332365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM $export_symbols 332465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 332565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 332665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc* ) 332765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 332865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 332965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 333065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 333165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 333265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 333365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 333465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 333565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 333665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$MV "$nlist"T "$nlist"' 333765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 333865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc* ) 333965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 334065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 334165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 334265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 334365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 334465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 334565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 334665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 334765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dlprefile in $dlprefiles; do 334865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "extracting global C symbols from \`$dlprefile'" 334965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$dlprefile" 335065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 335165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 335265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc* ) 335365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # if an import library, we need to obtain dlname 335465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_win32_import_lib_p "$dlprefile"; then 335565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_tr_sh "$dlprefile" 335665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "curr_lafile=\$libfile_$func_tr_sh_result" 335765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefile_dlbasename="" 335865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 335965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Use subshell, to avoid clobbering current variable values 336065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 336165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlprefile_dlname" ; then 336265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$dlprefile_dlname" 336365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefile_dlbasename="$func_basename_result" 336465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 336565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # no lafile. user explicitly requested -dlpreopen <import library>. 336665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $sharedlib_from_linklib_cmd "$dlprefile" 336765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefile_dlbasename=$sharedlib_from_linklib_result 336865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 336965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 337065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 337165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlprefile_dlbasename" ; then 337265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 337365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 337465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "Could not compute DLL name from $name" 337565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 337665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 337765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 337865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 337965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 338065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 338165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else # not an import lib 338265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 338365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 338465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 338565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 338665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 338765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 338865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 338965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 339065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 339165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 339265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 339365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 339465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 339565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 339665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 339765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 339865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 339965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 340065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure we have at least an empty file. 340165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$nlist" || : > "$nlist" 340265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 340365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$exclude_expsyms"; then 340465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 340565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV "$nlist"T "$nlist" 340665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 340765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 340865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try sorting and uniquifying the output. 340965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $GREP -v "^: " < "$nlist" | 341065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if sort -k 3 </dev/null >/dev/null 2>&1; then 341165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sort -k 3 341265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 341365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sort +2 341465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi | 341565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich uniq > "$nlist"S; then 341665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 341765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 341865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $GREP -v "^: " < "$nlist" > "$nlist"S 341965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 342065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 342165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$nlist"S; then 342265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 342365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 342465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 342565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 342665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 342765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo >> "$output_objdir/$my_dlsyms" "\ 342865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 342965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* The mapping between symbol names and symbols. */ 343065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtypedef struct { 343165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *name; 343265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich void *address; 343365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} lt_dlsymlist; 343465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextern LT_DLSYM_CONST lt_dlsymlist 343565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[]; 343665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLT_DLSYM_CONST lt_dlsymlist 343765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[] = 343865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{\ 343965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { \"$my_originator\", (void *) 0 }," 344065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 344165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $need_lib_prefix in 344265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no) 344365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 344465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 344565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 344665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 344765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 344865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 344965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo >> "$output_objdir/$my_dlsyms" "\ 345065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich {0, (void *) 0} 345165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}; 345265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 345365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* This works around a problem in FreeBSD linker */ 345465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef FREEBSD_WORKAROUND 345565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const void *lt_preloaded_setup() { 345665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return lt_${my_prefix}_LTX_preloaded_symbols; 345765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 345865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 345965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 346065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef __cplusplus 346165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 346265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif\ 346365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 346465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } # !$opt_dry_run 346565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 346665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_flag_for_symtable= 346765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$compile_command " in 346865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -static "*) ;; 346965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 347065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 347165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # compiling the symbol table file with pic_flag works around 347265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # a FreeBSD bug that causes programs to crash when -lm is 347365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # linked before any other PIC object. But we must not use 347465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # pic_flag when linking with -static. The problem exists in 347565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 347665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 347765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 347865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-hpux*) 347965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_flag_for_symtable=" $pic_flag" ;; 348065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 348165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$my_pic_p" != Xno; then 348265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_flag_for_symtable=" $pic_flag" 348365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 348465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 348565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 348665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 348765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 348865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich symtab_cflags= 348965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg in $LTCFLAGS; do 349065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 349165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -pie | -fpie | -fPIE) ;; 349265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append symtab_cflags " $arg" ;; 349365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 349465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 349565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 349665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now compile the dynamic symbol file. 349765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 349865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 349965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Clean up the generated files. 350065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 350165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 350265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform the symbol file into the correct name. 350365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich symfileobj="$output_objdir/${my_outputname}S.$objext" 350465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 350565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc* ) 350665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$output_objdir/$my_outputname.def"; then 350765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 351065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 351365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 351465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 351565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 351865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 351965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 352065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 352165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "unknown suffix for \`$my_dlsyms'" 352265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 352365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 352465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 352565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We keep going just in case the user didn't refer to 352665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 352765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # really was required. 352865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 352965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Nullify the symbol file. 353065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 353165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 353265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 353365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 353465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 353565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_win32_libid arg 353665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# return the library type of file 'arg' 353765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 353865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Need a lot of goo to handle *both* DLLs and import libs 353965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Has to be a shell function in order to 'eat' the argument 354065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# that is supplied when $file_magic_command is called. 354165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Despite the name, also deal with 64 bit binaries. 354265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_win32_libid () 354365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 354465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 354565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_libid_type="unknown" 354665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_fileres=`file -L $1 2>/dev/null` 354765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $win32_fileres in 354865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *ar\ archive\ import\ library*) # definitely import 354965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_libid_type="x86 archive import" 355065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 355165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *ar\ archive*) # could be an import, or static 355265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 355365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 355465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 355565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 355665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 355765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n -e ' 355865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1,100{ 355965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich / I /{ 356065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s,.*,import, 356165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p 356265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich q 356365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 356465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich }'` 356565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $win32_nmres in 356665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich import*) win32_libid_type="x86 archive import";; 356765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) win32_libid_type="x86 archive static";; 356865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 356965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 357065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 357165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *DLL*) 357265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_libid_type="x86 DLL" 357365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 357465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *executable*) # but shell scripts are "executable" too... 357565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $win32_fileres in 357665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *MS\ Windows\ PE\ Intel*) 357765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich win32_libid_type="x86 DLL" 357865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 357965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 358065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 358165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 358265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$win32_libid_type" 358365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 358465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 358565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib ARG 358665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 358765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Platform-specific function to extract the 358865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name of the DLL associated with the specified 358965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# import library ARG. 359065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoked by eval'ing the libtool variable 359165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $sharedlib_from_linklib_cmd 359265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in the variable 359365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $sharedlib_from_linklib_result 359465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib () 359565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 359665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 359765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 359865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 359965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 360065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 360165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 360265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The is the core of a fallback implementation of a 360365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# platform-specific function to extract the name of the 360465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# DLL associated with the specified import library LIBNAME. 360565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 360665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# SECTION_NAME is either .idata$6 or .idata$7, depending 360765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# on the platform and compiler that created the implib. 360865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 360965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echos the name of the DLL associated with the 361065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# specified import library. 361165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib_fallback_core () 361265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 361365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 361465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 361565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 361665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED '/^Contents of section '"$match_literal"':/{ 361765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Place marker at beginning of archive member dllname section 361865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/.*/====MARK====/ 361965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p 362065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich d 362165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 362265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # These lines can sometimes be longer than 43 characters, but 362365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # are always uninteresting 362465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /:[ ]*file format pe[i]\{,1\}-/d 362565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^In archive [^:]*:/d 362665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Ensure marker is printed 362765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^====MARK====/p 362865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove all lines with less than 43 characters 362965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^.\{43\}/!d 363065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # From remaining lines, remove first 43 characters 363165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^.\{43\}//' | 363265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n ' 363365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Join marker and all lines until next marker into a single line 363465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /^====MARK====/ b para 363565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich H 363665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ b para 363765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich b 363865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich :para 363965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich x 364065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/\n//g 364165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove the marker 364265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/^====MARK====// 364365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove trailing dots and whitespace 364465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich s/[\. \t]*$// 364565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Print 364665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /./p' | 364765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we now have a list, one entry per line, of the stringified 364865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # contents of the appropriate section of all members of the 364965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # archive which possess that section. Heuristic: eliminate 365065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # all those which have a first or second character that is 365165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # a '.' (that is, objdump's representation of an unprintable 365265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # character.) This should work for all archives with less than 365365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 0x302f exports -- but will fail for DLLs whose name actually 365465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # begins with a literal '.' or a single character followed by 365565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # a '.'. 365665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 365765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Of those that remain, print the first one. 365865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e '/^\./d;/^.\./d;q' 365965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 366065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 366165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_gnu_implib_p ARG 366265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This predicate returns with zero status (TRUE) if 366365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is a GNU/binutils-style import library. Returns 366465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# with nonzero status (FALSE) otherwise. 366565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_gnu_implib_p () 366665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 366765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 366865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 366965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 367065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$func_cygming_gnu_implib_tmp" 367165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 367265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 367365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_ms_implib_p ARG 367465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This predicate returns with zero status (TRUE) if 367565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is an MS-style import library. Returns 367665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# with nonzero status (FALSE) otherwise. 367765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_ms_implib_p () 367865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 367965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 368065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 368165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 368265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$func_cygming_ms_implib_tmp" 368365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 368465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 368565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib_fallback ARG 368665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Platform-specific function to extract the 368765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name of the DLL associated with the specified 368865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# import library ARG. 368965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 369065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This fallback implementation is for use when $DLLTOOL 369165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# does not support the --identify-strict option. 369265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoked by eval'ing the libtool variable 369365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $sharedlib_from_linklib_cmd 369465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in the variable 369565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $sharedlib_from_linklib_result 369665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib_fallback () 369765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 369865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 369965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_cygming_gnu_implib_p "$1" ; then 370065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # binutils import library 370165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 370265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif func_cygming_ms_implib_p "$1" ; then 370365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ms-generated import library 370465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 370565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 370665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # unknown 370765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sharedlib_from_linklib_result="" 370865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 370965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 371065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 371165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 371265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_extract_an_archive dir oldlib 371365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_extract_an_archive () 371465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 371565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 371665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich f_ex_an_ar_dir="$1"; shift 371765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich f_ex_an_ar_oldlib="$1" 371865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$lock_old_archive_extraction" = yes; then 371965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lockfile=$f_ex_an_ar_oldlib.lock 372065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 372165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_echo "Waiting for $lockfile to be removed" 372265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sleep 2 372365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 372465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 372565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 372665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 'stat=$?; rm -f "$lockfile"; exit $stat' 372765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$lock_old_archive_extraction" = yes; then 372865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || rm -f "$lockfile" 372965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 373065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 373165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 373265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 373365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 373465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 373565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 373665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 373765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 373865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_extract_archives gentop oldlib ... 373965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_extract_archives () 374065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 374165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 374265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_gentop="$1"; shift 374365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_oldlibs=${1+"$@"} 374465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_oldobjs="" 374565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xlib="" 374665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xabs="" 374765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xdir="" 374865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 374965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for my_xlib in $my_oldlibs; do 375065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract the objects. 375165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $my_xlib in 375265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 375365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) my_xabs=`pwd`"/$my_xlib" ;; 375465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 375565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$my_xlib" 375665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xlib="$func_basename_result" 375765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xlib_u=$my_xlib 375865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while :; do 375965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $extracted_archives " in 376065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $my_xlib_u "*) 376165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $extracted_serial + 1 376265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich extracted_serial=$func_arith_result 376365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xlib_u=lt$extracted_serial-$my_xlib ;; 376465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) break ;; 376565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 376665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 376765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich extracted_archives="$extracted_archives $my_xlib_u" 376865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_xdir="$my_gentop/$my_xlib_u" 376965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 377065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mkdir_p "$my_xdir" 377165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 377265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 377365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-darwin*) 377465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "Extracting $my_xabs" 377565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do not bother doing anything if just a dry run 377665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 377765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_orig_dir=`pwd` 377865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cd $my_xdir || exit $? 377965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_archive=$my_xabs 378065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_curdir=`pwd` 378165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_base_archive=`basename "$darwin_archive"` 378265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 378365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$darwin_arches"; then 378465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 378565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_arch= 378665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 378765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for darwin_arch in $darwin_arches ; do 378865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 378965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 379065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 379165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_an_archive "`pwd`" "${darwin_base_archive}" 379265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cd "$darwin_curdir" 379365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 379465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # $darwin_arches 379565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ## Okay now we've a bunch of thin objects, gotta fatten them up :) 379665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 379765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_file= 379865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_files= 379965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for darwin_file in $darwin_filelist; do 380065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 380165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $LIPO -create -output "$darwin_file" $darwin_files 380265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # $darwin_filelist 380365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM -rf unfat-$$ 380465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cd "$darwin_orig_dir" 380565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 380665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cd $darwin_orig_dir 380765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_an_archive "$my_xdir" "$my_xabs" 380865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $darwin_arches 380965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } # !$opt_dry_run 381065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 381165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 381265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_an_archive "$my_xdir" "$my_xabs" 381365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 381465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 381565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 381665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 381765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 381865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives_result="$my_oldobjs" 381965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 382065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 382165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 382265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_emit_wrapper [arg=no] 382365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 382465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Emit a libtool wrapper script on stdout. 382565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Don't directly open a file because we may want to 382665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# incorporate the script contents within a cygwin/mingw 382765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# wrapper executable. Must ONLY be called from within 382865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_link because it depends on a number of variables 382965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# set therein. 383065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 383165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 383265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variable will take. If 'yes', then the emitted script 383365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will assume that the directory in which it is stored is 383465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the $objdir directory. This is a cygwin/mingw-specific 383565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# behavior. 383665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_emit_wrapper () 383765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 383865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_emit_wrapper_arg1=${1-no} 383965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 384065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 384165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#! $SHELL 384265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 384365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $output - temporary wrapper script for $objdir/$outputname 384465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 384565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 384665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The $output program cannot be directly executed until all the libtool 384765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libraries that it depends on are installed. 384865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 384965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This wrapper script should never be moved out of the build directory. 385065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If it is, it will not operate correctly. 385165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 385265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that helps us do robust quoting. It backslashifies 385365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# metacharacters that are still active within double-quoted strings. 385465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_quote_subst='$sed_quote_subst' 385565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 385665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Be Bourne compatible 385765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 385865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich emulate sh 385965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich NULLCMD=: 386065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 386165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # is contrary to our usage. Disable this feature. 386265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich alias -g '\${1+\"\$@\"}'='\"\$@\"' 386365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich setopt NO_GLOB_SUBST 386465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse 386565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 386665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 386765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64 386865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichDUALCASE=1; export DUALCASE # for MKS sh 386965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 387065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The HP-UX ksh and POSIX shell print the target directory to stdout 387165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if CDPATH is set. 387265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 387365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 387465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrelink_command=\"$relink_command\" 387565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 387665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This environment variable determines our operation mode. 387765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test \"\$libtool_install_magic\" = \"$magic\"; then 387865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # install mode needs the following variables: 387965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich generated_by_libtool_version='$macro_version' 388065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich notinst_deplibs='$notinst_deplibs' 388165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse 388265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # When we are sourced in execute mode, \$file and \$ECHO are already set. 388365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test \"\$libtool_execute_magic\" != \"$magic\"; then 388465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=\"\$0\"" 388565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 388665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 388765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 388865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 388965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function that is used when there is no print builtin or printf. 389065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fallback_echo () 389165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 389265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval 'cat <<_LTECHO_EOF 389365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich\$1 389465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LTECHO_EOF' 389565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 389665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ECHO=\"$qECHO\" 389765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 389865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 389965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Very basic option parsing. These options are (a) specific to 390065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the libtool wrapper, (b) are identical between the wrapper 390165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# /script/ and the wrapper /executable/ which is used only on 390265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# windows platforms, and (c) all begin with the string "--lt-" 390365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (application programs are unlikely to have options which match 390465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# this pattern). 390565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 390665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# There are only two supported options: --lt-debug and 390765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --lt-dump-script. There is, deliberately, no --lt-help. 390865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 390965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The first argument to this parsing function should be the 391065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# script's $0 value, followed by "$@". 391165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_option_debug= 391265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_parse_lt_options () 391365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 391465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_script_arg0=\$0 391565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 391665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lt_opt 391765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 391865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \"\$lt_opt\" in 391965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --lt-debug) lt_option_debug=1 ;; 392065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --lt-dump-script) 392165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 392265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 392365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 392465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat \"\$lt_dump_D/\$lt_dump_F\" 392565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 0 392665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 392765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --lt-*) 392865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 392965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1 393065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 393165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 393265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 393365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 393465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Print the debug banner immediately: 393565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n \"\$lt_option_debug\"; then 393665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 393765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 393865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 393965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 394065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Used when --lt-debug. Prints its arguments to stdout 394165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (redirection is the responsibility of the caller) 394265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lt_dump_args () 394365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 394465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_dump_args_N=1; 394565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lt_arg 394665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 394765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 394865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 394965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 395065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 395165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 395265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Core function for launching the target application 395365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_exec_program_core () 395465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 395565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 395665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 395765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Backslashes separate directories on plain windows 395865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-mingw | *-*-os2* | *-cegcc*) 395965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 396065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n \"\$lt_option_debug\"; then 396165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 396265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lt_dump_args \${1+\"\$@\"} 1>&2 396365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 396465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 396565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 396665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 396765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 396865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 396965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 397065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n \"\$lt_option_debug\"; then 397165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 397265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lt_dump_args \${1+\"\$@\"} 1>&2 397365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 397465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exec \"\$progdir/\$program\" \${1+\"\$@\"} 397565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 397665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 397765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 397865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 397965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 398065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1 398165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 398265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 398365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function to encapsulate launching the target application 398465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Strips options in the --lt-* namespace from \$@ and 398565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# launches target application with the remaining arguments. 398665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_exec_program () 398765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 398865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \" \$* \" in 398965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *\\ --lt-*) 399065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lt_wr_arg 399165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 399265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \$lt_wr_arg in 399365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich --lt-*) ;; 399465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 399565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 399665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 399765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done ;; 399865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 399965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_exec_program_core \${1+\"\$@\"} 400065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 400165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 400265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Parse options 400365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_parse_lt_options \"\$0\" \${1+\"\$@\"} 400465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 400565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Find the directory that this script lives in. 400665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 400765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test \"x\$thisdir\" = \"x\$file\" && thisdir=. 400865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 400965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Follow symbolic links until we get to the real thisdir. 401065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 401165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test -n \"\$file\"; do 401265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 401365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 401465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If there was a directory component, then change thisdir. 401565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test \"x\$destdir\" != \"x\$file\"; then 401665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \"\$destdir\" in 401765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 401865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) thisdir=\"\$thisdir/\$destdir\" ;; 401965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 402065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 402165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 402265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 402365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 402465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 402565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 402665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Usually 'no', except on cygwin/mingw when embedded into 402765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the cwrapper. 402865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 402965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 403065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # special case for '.' 403165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test \"\$thisdir\" = \".\"; then 403265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich thisdir=\`pwd\` 403365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 403465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # remove .libs from thisdir 403565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case \"\$thisdir\" in 403665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 403765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $objdir ) thisdir=. ;; 403865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 403965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 404065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 404165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try to get the absolute directory name. 404265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir=\`cd \"\$thisdir\" && pwd\` 404365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n \"\$absdir\" && thisdir=\"\$absdir\" 404465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 404565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 404665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" = yes; then 404765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 404865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich program=lt-'$outputname'$exeext 404965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progdir=\"\$thisdir/$objdir\" 405065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 405165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -f \"\$progdir/\$program\" || 405265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 405365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test \"X\$file\" != \"X\$progdir/\$program\"; }; then 405465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 405565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=\"\$\$-\$program\" 405665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 405765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -d \"\$progdir\"; then 405865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MKDIR \"\$progdir\" 405965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 406065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM \"\$progdir/\$file\" 406165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi" 406265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 406365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 406465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 406565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # relink executable if necessary 406665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n \"\$relink_command\"; then 406765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if relink_command_output=\`eval \$relink_command 2>&1\`; then : 406865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 406965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO \"\$relink_command_output\" >&2 407065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM \"\$progdir/\$file\" 407165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1 407265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 407365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 407465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 407565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 407665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { $RM \"\$progdir/\$program\"; 407765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 407865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM \"\$progdir/\$file\" 407965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi" 408065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 408165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 408265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich program='$outputname' 408365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich progdir=\"\$thisdir/$objdir\" 408465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 408565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 408665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 408765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 408865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 408965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f \"\$progdir/\$program\"; then" 409065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 409165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # fixup the dll searchpath if we need to. 409265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 409365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Fix the DLL searchpath if we need to. Do this before prepending 409465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # to shlibpath, because on Windows, both are PATH and uninstalled 409565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # libraries must come first. 409665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dllsearchpath"; then 409765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 409865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the dll search path components to the executable PATH 409965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich PATH=$dllsearchpath:\$PATH 410065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 410165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 410265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 410365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Export our shlibpath_var if we have one. 410465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 410565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 410665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add our own library path to $shlibpath_var 410765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 410865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 410965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Some systems cannot cope with colon-terminated $shlibpath_var 411065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The second colon is a workaround for a bug in BeOS R4 sed 411165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 411265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 411365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export $shlibpath_var 411465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 411565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 411665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 411765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "\ 411865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test \"\$libtool_execute_magic\" != \"$magic\"; then 411965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Run the actual program with our arguments. 412065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_exec_program \${1+\"\$@\"} 412165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 412265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 412365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The program doesn't exist. 412465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 412565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 412665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 412765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit 1 412865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 412965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi\ 413065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich" 413165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 413265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 413365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 413465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_emit_cwrapperexe_src 413565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# emit the source code for a wrapper executable on stdout 413665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Must ONLY be called from within func_mode_link because 413765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it depends on a number of variable set therein. 413865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_emit_cwrapperexe_src () 413965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 414065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 414165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 414265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 414365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 414465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 414565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich The $output program cannot be directly executed until all the libtool 414665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libraries that it depends on are installed. 414765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 414865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich This wrapper executable should never be moved out of the build directory. 414965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich If it is, it will not operate correctly. 415065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*/ 415165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 415265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 415365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef _MSC_VER 415465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define _CRT_SECURE_NO_DEPRECATE 1 415565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 415665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdio.h> 415765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdlib.h> 415865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef _MSC_VER 415965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <direct.h> 416065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <process.h> 416165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <io.h> 416265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 416365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <unistd.h> 416465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <stdint.h> 416565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __CYGWIN__ 416665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <io.h> 416765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 416865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 416965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <malloc.h> 417065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdarg.h> 417165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <assert.h> 417265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <string.h> 417365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <ctype.h> 417465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <errno.h> 417565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <fcntl.h> 417665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <sys/stat.h> 417765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 417865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* declarations of non-ANSI functions */ 417965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(__MINGW32__) 418065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __STRICT_ANSI__ 418165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint _putenv (const char *); 418265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 418365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__CYGWIN__) 418465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __STRICT_ANSI__ 418565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *realpath (const char *, char *); 418665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint putenv (char *); 418765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint setenv (const char *, const char *, int); 418865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 418965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* #elif defined (other platforms) ... */ 419065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 419165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 419265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* portability defines, excluding path handling macros */ 419365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(_MSC_VER) 419465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define setmode _setmode 419565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define stat _stat 419665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define chmod _chmod 419765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define getcwd _getcwd 419865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define putenv _putenv 419965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXUSR _S_IEXEC 420065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef _INTPTR_T_DEFINED 420165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define _INTPTR_T_DEFINED 420265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define intptr_t int 420365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 420465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__MINGW32__) 420565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define setmode _setmode 420665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define stat _stat 420765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define chmod _chmod 420865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define getcwd _getcwd 420965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define putenv _putenv 421065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__CYGWIN__) 421165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define HAVE_SETENV 421265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "wb" 421365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* #elif defined (other platforms) ... */ 421465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 421565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 421665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(PATH_MAX) 421765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX PATH_MAX 421865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(MAXPATHLEN) 421965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX MAXPATHLEN 422065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 422165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX 1024 422265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 422365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 422465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_IXOTH 422565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXOTH 0 422665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 422765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_IXGRP 422865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXGRP 0 422965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 423065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 423165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* path handling portability macros */ 423265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef DIR_SEPARATOR 423365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define DIR_SEPARATOR '/' 423465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define PATH_SEPARATOR ':' 423565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 423665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 423765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 423865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich defined (__OS2__) 423965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define HAVE_DOS_BASED_FILE_SYSTEM 424065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "wb" 424165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef DIR_SEPARATOR_2 424265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define DIR_SEPARATOR_2 '\\' 424365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 424465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef PATH_SEPARATOR_2 424565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define PATH_SEPARATOR_2 ';' 424665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif 424765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 424865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 424965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef DIR_SEPARATOR_2 425065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 425165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else /* DIR_SEPARATOR_2 */ 425265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_DIR_SEPARATOR(ch) \ 425365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 425465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif /* DIR_SEPARATOR_2 */ 425565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 425665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef PATH_SEPARATOR_2 425765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 425865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else /* PATH_SEPARATOR_2 */ 425965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 426065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif /* PATH_SEPARATOR_2 */ 426165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 426265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef FOPEN_WB 426365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "w" 426465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 426565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef _O_BINARY 426665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define _O_BINARY 0 426765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 426865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 426965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 427065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define XFREE(stale) do { \ 427165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (stale) { free ((void *) stale); stale = 0; } \ 427265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} while (0) 427365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 427465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(LT_DEBUGWRAPPER) 427565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic int lt_debug = 1; 427665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 427765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic int lt_debug = 0; 427865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 427965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 428065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 428165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 428265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid *xmalloc (size_t num); 428365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *xstrdup (const char *string); 428465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char *base_name (const char *name); 428565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *find_executable (const char *wrapper); 428665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *chase_symlinks (const char *pathspec); 428765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint make_executable (const char *path); 428865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint check_executable (const char *path); 428965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *strendzap (char *str, const char *pat); 429065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 429165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_fatal (const char *file, int line, const char *message, ...); 429265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *nonnull (const char *s); 429365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *nonempty (const char *s); 429465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_setenv (const char *name, const char *value); 429565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 429665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_update_exe_path (const char *name, const char *value); 429765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_update_lib_path (const char *name, const char *value); 429865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar **prepare_spawn (char **argv); 429965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_dump_script (FILE *f); 430065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 430165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 430265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 430365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvolatile const char * MAGIC_EXE = "$magic_exe"; 430465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 430565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 430665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 430765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 430865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path "$temp_rpath" 430965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 431065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 431165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 431265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 431365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 431465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VALUE = ""; 431565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 431665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 431765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 431865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dllsearchpath"; then 431965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_host_path "$dllsearchpath:" 432065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 432165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VARNAME = "PATH"; 432265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 432365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 432465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 432565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 432665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VARNAME = ""; 432765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VALUE = ""; 432865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 432965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 433065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 433165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" = yes; then 433265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 433365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 433465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 433565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 433665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 433765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 433865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 433965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 434065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 434165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 434265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 434365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 434465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define LTWRAPPER_OPTION_PREFIX "--lt-" 434565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 434665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 434765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 434865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 434965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 435065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint 435165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmain (int argc, char *argv[]) 435265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 435365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char **newargz; 435465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int newargc; 435565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *tmp_pathspec; 435665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *actual_cwrapper_path; 435765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *actual_cwrapper_name; 435865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *target_name; 435965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *lt_argv_zero; 436065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich intptr_t rval = 127; 436165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 436265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int i; 436365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 436465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich program_name = (char *) xstrdup (base_name (argv[0])); 436565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargz = XMALLOC (char *, argc + 1); 436665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 436765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* very simple arg parsing; don't want to rely on getopt 436865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * also, copy all non cwrapper options to newargz, except 436965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * argz[0], which is handled differently 437065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */ 437165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargc=0; 437265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (i = 1; i < argc; i++) 437365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 437465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (strcmp (argv[i], dumpscript_opt) == 0) 437565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 437665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 437765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$host" in 437865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *mingw* | *cygwin* ) 437965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # make stdout use "unix" line endings 438065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo " setmode(1,_O_BINARY);" 438165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 438265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 438365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 438465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 438565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_dump_script (stdout); 438665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 0; 438765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 438865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (strcmp (argv[i], debug_opt) == 0) 438965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 439065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debug = 1; 439165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue; 439265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 439365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 439465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 439565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 439665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich namespace, but it is not one of the ones we know about and 439765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich have already dealt with, above (inluding dump-script), then 439865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich report an error. Otherwise, targets might begin to believe 439965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 440065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich namespace. The first time any user complains about this, we'll 440165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich need to make LTWRAPPER_OPTION_PREFIX a configure-time option 440265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich or a configure.ac-settable value. 440365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */ 440465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, 440565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "unrecognized %s option: '%s'", 440665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ltwrapper_option_prefix, argv[i]); 440765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 440865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* otherwise ... */ 440965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargz[++newargc] = xstrdup (argv[i]); 441065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 441165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargz[++newargc] = NULL; 441265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 441365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 441465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 441565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* The GNU banner must be the first non-error debug message */ 441665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 441765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 441865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 441965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 442065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 442165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 442265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = find_executable (argv[0]); 442365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (tmp_pathspec == NULL) 442465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 442565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 442665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(main) found exe (before symlink chase) at: %s\n", 442765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec); 442865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 442965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich actual_cwrapper_path = chase_symlinks (tmp_pathspec); 443065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 443165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(main) found exe (after symlink chase) at: %s\n", 443265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich actual_cwrapper_path); 443365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (tmp_pathspec); 443465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 443565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 443665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strendzap (actual_cwrapper_path, actual_cwrapper_name); 443765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 443865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* wrapper name transforms */ 443965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strendzap (actual_cwrapper_name, ".exe"); 444065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 444165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (actual_cwrapper_name); 444265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich actual_cwrapper_name = tmp_pathspec; 444365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = 0; 444465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 444565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* target_name transforms -- use actual target program name; might have lt- prefix */ 444665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 444765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strendzap (target_name, ".exe"); 444865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 444965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (target_name); 445065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich target_name = tmp_pathspec; 445165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = 0; 445265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 445365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 445465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(main) libtool target name: %s\n", 445565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich target_name); 445665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 445765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 445865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<EOF 445965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargz[0] = 446065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XMALLOC (char, (strlen (actual_cwrapper_path) + 446165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 446265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (newargz[0], actual_cwrapper_path); 446365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcat (newargz[0], "$objdir"); 446465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcat (newargz[0], "/"); 446565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 446665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 446765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 446865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* stop here, and copy so we don't have to do this twice */ 446965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = xstrdup (newargz[0]); 447065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 447165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 447265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcat (newargz[0], actual_cwrapper_name); 447365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 447465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* DO want the lt- prefix here if it exists, so use target_name */ 447565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 447665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (tmp_pathspec); 447765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = NULL; 447865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 447965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 448065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 448165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich mingw*) 448265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 448365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 448465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char* p; 448565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while ((p = strchr (newargz[0], '\\')) != NULL) 448665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 448765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p = '/'; 448865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 448965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while ((p = strchr (lt_argv_zero, '\\')) != NULL) 449065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 449165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p = '/'; 449265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 449365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 449465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 449565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 449665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 449765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 449865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 449965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (target_name); 450065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (actual_cwrapper_path); 450165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (actual_cwrapper_name); 450265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 450365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 450465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 450565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 450665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 450765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich because on Windows, both *_VARNAMEs are PATH but uninstalled 450865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libraries must come first. */ 450965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 451065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 451165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 451265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 451365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (lt_argv_zero)); 451465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (i = 0; i < newargc; i++) 451565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 451665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 451765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich i, nonnull (newargz[i])); 451865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 451965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 452065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 452165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 452265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 452365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich mingw*) 452465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 452565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* execv doesn't actually work on mingw as expected on unix */ 452665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newargz = prepare_spawn (newargz); 452765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 452865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (rval == -1) 452965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 453065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* failed to start process */ 453165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 453265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(main) failed to launch target \"%s\": %s\n", 453365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_argv_zero, nonnull (strerror (errno))); 453465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 127; 453565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 453665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return rval; 453765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 453865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 453965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 454065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 454165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich execv (lt_argv_zero, newargz); 454265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return rval; /* =127, but avoids unused variable warning */ 454365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 454465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 454565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 454665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 454765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 454865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 454965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 455065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid * 455165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichxmalloc (size_t num) 455265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 455365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich void *p = (void *) malloc (num); 455465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (!p) 455565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, "memory exhausted"); 455665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 455765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return p; 455865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 455965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 456065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar * 456165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichxstrdup (const char *string) 456265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 456365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 456465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich string) : NULL; 456565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 456665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 456765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * 456865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbase_name (const char *name) 456965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 457065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *base; 457165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 457265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 457365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Skip over the disk name in MSDOS pathnames. */ 457465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (isalpha ((unsigned char) name[0]) && name[1] == ':') 457565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name += 2; 457665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 457765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 457865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (base = name; *name; name++) 457965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (IS_DIR_SEPARATOR (*name)) 458065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich base = name + 1; 458165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return base; 458265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 458365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 458465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint 458565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcheck_executable (const char *path) 458665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 458765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich struct stat st; 458865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 458965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 459065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonempty (path)); 459165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ((!path) || (!*path)) 459265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 0; 459365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 459465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ((stat (path, &st) >= 0) 459565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 459665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 1; 459765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 459865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 0; 459965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 460065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 460165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint 460265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmake_executable (const char *path) 460365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 460465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int rval = 0; 460565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich struct stat st; 460665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 460765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 460865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonempty (path)); 460965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ((!path) || (!*path)) 461065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return 0; 461165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 461265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (stat (path, &st) >= 0) 461365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 461465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 461565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 461665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return rval; 461765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 461865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 461965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Searches for the full path of the wrapper. Returns 462065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newly allocated full path name if found, NULL otherwise 462165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich Does not chase symlinks, even on platforms that support them. 462265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*/ 462365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar * 462465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfind_executable (const char *wrapper) 462565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 462665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int has_slash = 0; 462765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *p; 462865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *p_next; 462965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* static buffer for getcwd */ 463065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char tmp[LT_PATHMAX + 1]; 463165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int tmp_len; 463265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *concat_name; 463365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 463465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 463565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonempty (wrapper)); 463665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 463765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ((wrapper == NULL) || (*wrapper == '\0')) 463865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return NULL; 463965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 464065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Absolute path? */ 464165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 464265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 464365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 464465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name = xstrdup (wrapper); 464565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (check_executable (concat_name)) 464665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return concat_name; 464765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (concat_name); 464865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 464965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 465065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 465165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 465265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (IS_DIR_SEPARATOR (wrapper[0])) 465365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 465465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name = xstrdup (wrapper); 465565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (check_executable (concat_name)) 465665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return concat_name; 465765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (concat_name); 465865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 465965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 466065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 466165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 466265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 466365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (p = wrapper; *p; p++) 466465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (*p == '/') 466565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 466665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich has_slash = 1; 466765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break; 466865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 466965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (!has_slash) 467065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 467165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* no slashes; search PATH */ 467265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *path = getenv ("PATH"); 467365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (path != NULL) 467465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 467565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (p = path; *p; p = p_next) 467665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 467765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *q; 467865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich size_t p_len; 467965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (q = p; *q; q++) 468065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (IS_PATH_SEPARATOR (*q)) 468165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break; 468265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p_len = q - p; 468365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p_next = (*q == '\0' ? q : q + 1); 468465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (p_len == 0) 468565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 468665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* empty path: current directory */ 468765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (getcwd (tmp, LT_PATHMAX) == NULL) 468865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 468965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (strerror (errno))); 469065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_len = strlen (tmp); 469165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name = 469265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 469365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich memcpy (concat_name, tmp, tmp_len); 469465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name[tmp_len] = '/'; 469565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (concat_name + tmp_len + 1, wrapper); 469665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 469765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 469865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 469965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name = 470065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 470165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich memcpy (concat_name, p, p_len); 470265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name[p_len] = '/'; 470365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (concat_name + p_len + 1, wrapper); 470465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 470565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (check_executable (concat_name)) 470665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return concat_name; 470765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (concat_name); 470865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 470965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 471065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* not found in PATH; assume curdir */ 471165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 471265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Relative path | not found in path: prepend cwd */ 471365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (getcwd (tmp, LT_PATHMAX) == NULL) 471465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 471565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (strerror (errno))); 471665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_len = strlen (tmp); 471765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 471865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich memcpy (concat_name, tmp, tmp_len); 471965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_name[tmp_len] = '/'; 472065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (concat_name + tmp_len + 1, wrapper); 472165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 472265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (check_executable (concat_name)) 472365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return concat_name; 472465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (concat_name); 472565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return NULL; 472665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 472765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 472865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar * 472965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchase_symlinks (const char *pathspec) 473065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 473165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_ISLNK 473265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return xstrdup (pathspec); 473365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 473465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char buf[LT_PATHMAX]; 473565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich struct stat s; 473665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *tmp_pathspec = xstrdup (pathspec); 473765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *p; 473865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int has_symlinks = 0; 473965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while (strlen (tmp_pathspec) && !has_symlinks) 474065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 474165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 474265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "checking path component for symlinks: %s\n", 474365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec); 474465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (lstat (tmp_pathspec, &s) == 0) 474565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 474665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (S_ISLNK (s.st_mode) != 0) 474765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 474865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich has_symlinks = 1; 474965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break; 475065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 475165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 475265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* search backwards for last DIR_SEPARATOR */ 475365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p = tmp_pathspec + strlen (tmp_pathspec) - 1; 475465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p--; 475665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 475865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* no more DIR_SEPARATORS left */ 475965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break; 476065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 476165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p = '\0'; 476265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 476365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 476465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 476565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, 476665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "error accessing file \"%s\": %s", 476765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec, nonnull (strerror (errno))); 476865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 476965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 477065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (tmp_pathspec); 477165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 477265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (!has_symlinks) 477365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 477465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return xstrdup (pathspec); 477565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 477665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 477765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_pathspec = realpath (pathspec, buf); 477865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (tmp_pathspec == 0) 477965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 478065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_fatal (__FILE__, __LINE__, 478165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "could not follow symlinks for %s", pathspec); 478265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 478365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return xstrdup (tmp_pathspec); 478465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 478565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 478665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 478765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar * 478865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstrendzap (char *str, const char *pat) 478965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 479065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich size_t len, patlen; 479165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 479265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich assert (str != NULL); 479365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich assert (pat != NULL); 479465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 479565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len = strlen (str); 479665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich patlen = strlen (pat); 479765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 479865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (patlen <= len) 479965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 480065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich str += len - patlen; 480165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (strcmp (str, pat) == 0) 480265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *str = '\0'; 480365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 480465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return str; 480565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 480665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 480765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid 480865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_debugprintf (const char *file, int line, const char *fmt, ...) 480965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 481065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_list args; 481165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (lt_debug) 481265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 481365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 481465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_start (args, fmt); 481565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich (void) vfprintf (stderr, fmt, args); 481665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_end (args); 481765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 481865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 481965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 482065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic void 482165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_error_core (int exit_status, const char *file, 482265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int line, const char *mode, 482365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *message, va_list ap) 482465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 482565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 482665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vfprintf (stderr, message, ap); 482765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fprintf (stderr, ".\n"); 482865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 482965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (exit_status >= 0) 483065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit (exit_status); 483165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 483265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 483365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid 483465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_fatal (const char *file, int line, const char *message, ...) 483565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 483665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_list ap; 483765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_start (ap, message); 483865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 483965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich va_end (ap); 484065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 484165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 484265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char * 484365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonnull (const char *s) 484465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 484565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return s ? s : "(null)"; 484665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 484765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 484865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char * 484965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonempty (const char *s) 485065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 485165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return (s && !*s) ? "(empty)" : nonnull (s); 485265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 485365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 485465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid 485565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_setenv (const char *name, const char *value) 485665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 485765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 485865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(lt_setenv) setting '%s' to '%s'\n", 485965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (name), nonnull (value)); 486065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 486165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef HAVE_SETENV 486265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* always make a copy, for consistency with !HAVE_SETENV */ 486365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *str = xstrdup (value); 486465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich setenv (name, str, 1); 486565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else 486665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int len = strlen (name) + 1 + strlen (value) + 1; 486765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *str = XMALLOC (char, len); 486865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sprintf (str, "%s=%s", name, value); 486965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (putenv (str) != EXIT_SUCCESS) 487065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 487165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (str); 487265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 487365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif 487465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 487565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 487665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 487765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar * 487865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_extend_str (const char *orig_value, const char *add, int to_end) 487965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 488065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *new_value; 488165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (orig_value && *orig_value) 488265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 488365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int orig_value_len = strlen (orig_value); 488465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int add_len = strlen (add); 488565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_value = XMALLOC (char, add_len + orig_value_len + 1); 488665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (to_end) 488765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 488865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (new_value, orig_value); 488965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (new_value + orig_value_len, add); 489065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 489165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 489265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 489365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (new_value, add); 489465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich strcpy (new_value + add_len, orig_value); 489565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 489665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 489765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 489865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 489965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_value = xstrdup (add); 490065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 490165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return new_value; 490265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 490365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 490465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid 490565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_update_exe_path (const char *name, const char *value) 490665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 490765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 490865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 490965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (name), nonnull (value)); 491065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 491165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (name && *name && value && *value) 491265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 491365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *new_value = lt_extend_str (getenv (name), value, 0); 491465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* some systems can't cope with a ':'-terminated path #' */ 491565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int len = strlen (new_value); 491665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 491765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 491865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_value[len-1] = '\0'; 491965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 492065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_setenv (name, new_value); 492165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (new_value); 492265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 492365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 492465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 492565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid 492665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_update_lib_path (const char *name, const char *value) 492765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 492865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_debugprintf (__FILE__, __LINE__, 492965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 493065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonnull (name), nonnull (value)); 493165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 493265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (name && *name && value && *value) 493365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 493465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *new_value = lt_extend_str (getenv (name), value, 0); 493565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_setenv (name, new_value); 493665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich XFREE (new_value); 493765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 493865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 493965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 494065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 494165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 494265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich mingw*) 494365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 494465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 494565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Prepares an argument vector before calling spawn(). 494665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich Note that spawn() does not by itself call the command interpreter 494765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 494865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 494965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich GetVersionEx(&v); 495065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich v.dwPlatformId == VER_PLATFORM_WIN32_NT; 495165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich }) ? "cmd.exe" : "command.com"). 495265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich Instead it simply concatenates the arguments, separated by ' ', and calls 495365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich CreateProcess(). We must quote the arguments since Win32 CreateProcess() 495465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 495565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich special way: 495665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich - Space and tab are interpreted as delimiters. They are not treated as 495765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich delimiters if they are surrounded by double quotes: "...". 495865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich - Unescaped double quotes are removed from the input. Their only effect is 495965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich that within double quotes, space and tab are treated like normal 496065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich characters. 496165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich - Backslashes not followed by double quotes are not special. 496265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich - But 2*n+1 backslashes followed by a double quote become 496365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich n backslashes followed by a double quote (n >= 0): 496465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \" -> " 496565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \\\" -> \" 496665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich \\\\\" -> \\" 496765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */ 496865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 496965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 497065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar ** 497165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprepare_spawn (char **argv) 497265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 497365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich size_t argc; 497465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char **new_argv; 497565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich size_t i; 497665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 497765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Count number of arguments. */ 497865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (argc = 0; argv[argc] != NULL; argc++) 497965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ; 498065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 498165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Allocate new argument vector. */ 498265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_argv = XMALLOC (char *, argc + 1); 498365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 498465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich /* Put quoted arguments into the new argument vector. */ 498565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (i = 0; i < argc; i++) 498665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 498765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *string = argv[i]; 498865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 498965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (string[0] == '\0') 499065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_argv[i] = xstrdup ("\"\""); 499165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 499265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 499365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 499465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich size_t length; 499565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich unsigned int backslashes; 499665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich const char *s; 499765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *quoted_string; 499865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char *p; 499965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 500065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich length = 0; 500165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes = 0; 500265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (quote_around) 500365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich length++; 500465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (s = string; *s != '\0'; s++) 500565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 500665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char c = *s; 500765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (c == '"') 500865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich length += backslashes + 1; 500965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich length++; 501065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (c == '\\') 501165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes++; 501265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 501365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes = 0; 501465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 501565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (quote_around) 501665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich length += backslashes + 1; 501765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 501865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich quoted_string = XMALLOC (char, length + 1); 501965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 502065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich p = quoted_string; 502165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes = 0; 502265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (quote_around) 502365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p++ = '"'; 502465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (s = string; *s != '\0'; s++) 502565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 502665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich char c = *s; 502765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (c == '"') 502865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 502965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich unsigned int j; 503065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (j = backslashes + 1; j > 0; j--) 503165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p++ = '\\'; 503265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 503365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p++ = c; 503465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (c == '\\') 503565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes++; 503665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 503765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich backslashes = 0; 503865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 503965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (quote_around) 504065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { 504165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich unsigned int j; 504265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for (j = backslashes; j > 0; j--) 504365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p++ = '\\'; 504465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p++ = '"'; 504565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 504665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *p = '\0'; 504765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 504865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_argv[i] = quoted_string; 504965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 505065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 505165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_argv[i] = (char *) string; 505265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 505365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_argv[argc] = NULL; 505465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 505565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich return new_argv; 505665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 505765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 505865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 505965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 506065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 506165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 506265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_dump_script (FILE* f) 506365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 506465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 506565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_emit_wrapper yes | 506665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -n -e ' 506765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/^\(.\{79\}\)\(..*\)/\1\ 506865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich\2/ 506965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichh 507065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/\([\\"]\)/\\\1/g 507165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/$/\\n/ 507265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/\([^\n]*\).*/ fputs ("\1", f);/p 507365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichg 507465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichD' 507565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat <<"EOF" 507665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 507765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 507865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 507965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_emit_cwrapperexe_src 508065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 508165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_win32_import_lib_p ARG 508265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True if ARG is an import lib, as indicated by $file_magic_cmd 508365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_win32_import_lib_p () 508465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 508565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 508665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 508765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *import*) : ;; 508865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) false ;; 508965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 509065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 509165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 509265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_link arg... 509365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_link () 509465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 509565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 509665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 509765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 509865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # It is impossible to link a dll without this setting, and 509965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we shouldn't force the makefile maintainer to figure out 510065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # which system we are compiling for in order to pass an extra 510165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # flag for every libtool invocation. 510265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # allow_undefined=no 510365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 510465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: Unfortunately, there are problems with the above when trying 510565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # to make a dll which has undefined symbols, in which case not 510665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # even a static library is built. For now, we need to specify 510765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -no-undefined on the libtool link line when we can be certain 510865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that all symbols are satisfied, otherwise we get a static library. 510965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich allow_undefined=yes 511065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 511165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 511265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich allow_undefined=yes 511365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 511465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 511565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libtool_args=$nonopt 511665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich base_compile="$nonopt $@" 511765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=$nonopt 511865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=$nonopt 511965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 512065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_rpath= 512165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_rpath= 512265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_shlibpath= 512365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_shlibpath= 512465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich convenience= 512565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_convenience= 512665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs= 512765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_deplibs= 512865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compiler_flags= 512965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linker_flags= 513065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dllsearchpath= 513165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_search_path=`pwd` 513265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich inst_prefix_dir= 513365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_inherited_linker_flags= 513465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 513565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich avoid_version=no 513665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich bindir= 513765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles= 513865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefiles= 513965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlself=no 514065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_dynamic=no 514165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols= 514265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols_regex= 514365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich generated= 514465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs= 514565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ltlibs= 514665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich module=no 514765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no_install=no 514865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objs= 514965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_objects= 515065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich precious_files_regex= 515165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prefer_static_libs=no 515265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich preload=no 515365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 515465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prevarg= 515565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release= 515665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 515765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xrpath= 515865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich perm_rpath= 515965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich temp_rpath= 516065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich thread_safe=no 516165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vinfo= 516265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vinfo_number=no 516365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich weak_libs= 516465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich single_module="${wl}-single_module" 516565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_infer_tag $base_compile 516665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 516765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need to know -static, to get the right output filenames. 516865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg 516965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 517065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 517165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared) 517265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_libtool_libs" != yes && \ 517365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_configuration "can not build a shared library" 517465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=no 517565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 517665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 517765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -all-static | -static | -static-libtool-libs) 517865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 517965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -all-static) 518065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 518165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "complete static linking is impossible in this configuration" 518265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 518365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$link_static_flag"; then 518465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopen_self=$dlopen_self_static 518565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 518665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prefer_static_libs=yes 518765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 518865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static) 518965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_flag" && test -n "$link_static_flag"; then 519065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopen_self=$dlopen_self_static 519165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 519265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prefer_static_libs=built 519365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 519465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static-libtool-libs) 519565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_flag" && test -n "$link_static_flag"; then 519665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopen_self=$dlopen_self_static 519765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 519865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prefer_static_libs=yes 519965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 520065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 520165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 520265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 520365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 520465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 520565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 520665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 520765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 520865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See if our shared archives depend on static archives. 520965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$old_archive_from_new_cmds" && build_old_libs=yes 521065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 521165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Go through the arguments, transforming them on the way. 521265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test "$#" -gt 0; do 521365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$1" 521465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 521565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 521665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich qarg=$func_quote_for_eval_unquoted_result 521765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libtool_args " $func_quote_for_eval_result" 521865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 521965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the previous option needs an argument, assign it. 522065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$prev"; then 522165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $prev in 522265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output) 522365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " @OUTPUT@" 522465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " @OUTPUT@" 522565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 522665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 522765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 522865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $prev in 522965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich bindir) 523065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich bindir="$arg" 523165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 523265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 523365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 523465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles|dlprefiles) 523565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$preload" = no; then 523665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the symbol object into the linking commands. 523765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " @SYMFILE@" 523865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " @SYMFILE@" 523965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich preload=yes 524065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 524165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 524265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la | *.lo) ;; # We handle these cases below. 524365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich force) 524465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$dlself" = no; then 524565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlself=needless 524665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_dynamic=yes 524765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 524865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 524965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 525065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 525165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich self) 525265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlprefiles; then 525365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlself=yes 525465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 525565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlself=yes 525665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 525765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlself=needless 525865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_dynamic=yes 525965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 526065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 526165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 526265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 526365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 526465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlfiles; then 526565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlfiles " $arg" 526665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 526765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlprefiles " $arg" 526865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 526965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 527065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 527165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 527265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 527365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 527465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich expsyms) 527565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols="$arg" 527665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$arg" \ 527765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || func_fatal_error "symbol file \`$arg' does not exist" 527865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 527965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 528065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 528165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich expsyms_regex) 528265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols_regex="$arg" 528365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 528465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 528565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 528665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich framework) 528765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 528865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-darwin*) 528965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$deplibs " in 529065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $qarg.ltframework "*) ;; 529165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append deplibs " $qarg.ltframework" # this is fixed later 529265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 529365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 529465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 529565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 529665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 529765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 529865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 529965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich inst_prefix) 530065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich inst_prefix_dir="$arg" 530165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 530265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 530365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 530465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objectlist) 530565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$arg"; then 530665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_arg=$arg 530765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich moreargs= 530865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for fil in `cat "$save_arg"` 530965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 531065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_append moreargs " $fil" 531165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$fil 531265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A libtool-controlled object. 531365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 531465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that this really is a libtool object. 531565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_unsafe_p "$arg"; then 531665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object= 531765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object= 531865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 531965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Read the .lo file 532065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$arg" 532165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 532265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_object" || 532365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$non_pic_object" || 532465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$pic_object" = none && 532565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$non_pic_object" = none; then 532665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find name of object for \`$arg'" 532765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 532865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 532965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract subdirectory from the argument. 533065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$arg" "/" "" 533165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xdir="$func_dirname_result" 533265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 533365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pic_object" != none; then 533465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepend the subdirectory the object is found in. 533565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object="$xdir$pic_object" 533665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 533765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlfiles; then 533865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 533965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlfiles " $pic_object" 534065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 534165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 534265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 534365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If libtool objects are unsupported, then we need to preload. 534465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=dlprefiles 534565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 534665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 534765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 534865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # CHECK ME: I think I busted this. -Ossama 534965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlprefiles; then 535065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Preload the old-style object. 535165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlprefiles " $pic_object" 535265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 535365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 535465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 535565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A PIC object. 535665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $pic_object" 535765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$pic_object" 535865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 535965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 536065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Non-PIC object. 536165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$non_pic_object" != none; then 536265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepend the subdirectory the object is found in. 536365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object="$xdir$non_pic_object" 536465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 536565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A standard non-PIC object 536665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 536765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_object" || test "$pic_object" = none ; then 536865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$non_pic_object" 536965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 537065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 537165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the PIC object exists, use it instead. 537265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $xdir was prepended to $pic_object above. 537365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object="$pic_object" 537465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 537565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 537665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 537765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only an error if not doing a dry-run. 537865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_dry_run; then 537965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract subdirectory from the argument. 538065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$arg" "/" "" 538165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xdir="$func_dirname_result" 538265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 538365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o "$arg" 538465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object=$xdir$objdir/$func_lo2o_result 538565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object=$xdir$func_lo2o_result 538665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $pic_object" 538765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 538865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 538965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$arg' is not a valid libtool object" 539065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 539165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 539265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 539365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 539465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "link input file \`$arg' does not exist" 539565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 539665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$save_arg 539765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 539865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 539965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 540065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich precious_regex) 540165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich precious_files_regex="$arg" 540265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 540365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 540465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 540565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release) 540665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release="-$arg" 540765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 540865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 540965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 541065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath | xrpath) 541165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need an absolute path. 541265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 541365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 541465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 541565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "only absolute run-paths are allowed" 541665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 541765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 541865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = rpath; then 541965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$rpath " in 542065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $arg "*) ;; 542165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append rpath " $arg" ;; 542265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 542365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 542465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$xrpath " in 542565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $arg "*) ;; 542665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append xrpath " $arg" ;; 542765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 542865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 542965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 543065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 543165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 543265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shrext) 543365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shrext_cmds="$arg" 543465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 543565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 543665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 543765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich weak) 543865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append weak_libs " $arg" 543965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 544065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 544165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 544265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xcclinker) 544365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linker_flags " $qarg" 544465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $qarg" 544565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 544665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $qarg" 544765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $qarg" 544865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 544965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 545065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xcompiler) 545165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $qarg" 545265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 545365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $qarg" 545465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $qarg" 545565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 545665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 545765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xlinker) 545865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linker_flags " $qarg" 545965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $wl$qarg" 546065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 546165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $wl$qarg" 546265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $wl$qarg" 546365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 546465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 546565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 546665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$prev=\"\$arg\"" 546765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 546865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 546965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 547065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 547165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # test -n "$prev" 547265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 547365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prevarg="$arg" 547465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 547565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 547665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -all-static) 547765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$link_static_flag"; then 547865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See comment for -static flag below, for more details. 547965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $link_static_flag" 548065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $link_static_flag" 548165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 548265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 548365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 548465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 548565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -allow-undefined) 548665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: remove this flag sometime in the future. 548765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`-allow-undefined' must not be used because it is the default" 548865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 548965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 549065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -avoid-version) 549165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich avoid_version=yes 549265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 549365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 549465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 549565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -bindir) 549665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=bindir 549765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 549865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 549965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 550065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -dlopen) 550165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=dlfiles 550265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 550365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 550465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 550565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -dlpreopen) 550665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=dlprefiles 550765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 550865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 550965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 551065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -export-dynamic) 551165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_dynamic=yes 551265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 551365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 551465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 551565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -export-symbols | -export-symbols-regex) 551665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 551765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "more than one -exported-symbols argument is not allowed" 551865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 551965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$arg" = "X-export-symbols"; then 552065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=expsyms 552165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 552265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=expsyms_regex 552365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 552465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 552565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 552665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 552765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -framework) 552865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=framework 552965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 553065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 553165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 553265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -inst-prefix-dir) 553365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=inst_prefix 553465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 553565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 553665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 553765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 553865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # so, if we see these flags be careful not to treat them like -L 553965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L[A-Z][A-Z]*:*) 554065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $with_gcc/$host in 554165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no/*-*-irix* | /*-*-irix*) 554265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 554365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 554465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 554565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 554665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 554765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 554865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 554965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 555065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname "-L" '' "$arg" 555165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$func_stripname_result"; then 555265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$#" -gt 0; then 555365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "require no space between \`-L' and \`$1'" 555465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 555565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "need path for \`-L' option" 555665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 555765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 555865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result" 555965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$func_resolve_sysroot_result 556065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need an absolute path. 556165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $dir in 556265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 556365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 556465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir=`cd "$dir" && pwd` 556565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$absdir" && \ 556665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot determine absolute directory name of \`$dir'" 556765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$absdir" 556865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 556965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 557065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$deplibs " in 557165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -L$dir "* | *" $arg "*) 557265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Will only happen for absolute or sysroot arguments 557365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 557465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 557565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Preserve sysroot, but never include relative directories 557665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $dir in 557765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 557865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append deplibs " -L$dir" ;; 557965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 558065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append lib_search_path " $dir" 558165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 558265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 558365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 558465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 558565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 558665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$dllsearchpath: in 558765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$dir:"*) ;; 558865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ::) dllsearchpath=$dir;; 558965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dllsearchpath ":$dir";; 559065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 559165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$dllsearchpath: in 559265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$testbindir:"*) ;; 559365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ::) dllsearchpath=$testbindir;; 559465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dllsearchpath ":$testbindir";; 559565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 559665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 559765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 559865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 559965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 560065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 560165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 560265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 560365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 560465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 560565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # These systems don't actually have a C or math library (as such) 560665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 560765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 560865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-os2*) 560965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # These systems don't actually have a C library (as such) 561065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$arg" = "X-lc" && continue 561165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 561265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 561365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do not include libc due to us having libc/libc_r. 561465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$arg" = "X-lc" && continue 561565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 561665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 561765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Rhapsody C and math libraries are in the System framework 561865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " System.ltframework" 561965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 562065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 562165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sco3.2v5* | *-*-sco5v6*) 562265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Causes problems with __ctype 562365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$arg" = "X-lc" && continue 562465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 562565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 562665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Compiler inserts libc in the correct place for threads to work 562765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$arg" = "X-lc" && continue 562865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 562965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 563065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "X$arg" = "X-lc_r"; then 563165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 563265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 563365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do not include libc_r directly, use -pthread flag. 563465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 563565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 563665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 563765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 563865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " $arg" 563965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 564065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 564165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 564265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -module) 564365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich module=yes 564465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 564565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 564665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 564765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Tru64 UNIX uses -model [arg] to determine the layout of C++ 564865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # classes, name mangling, and exception handling. 564965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Darwin uses the -arch flag to determine output architecture. 565065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -model|-arch|-isysroot|--sysroot) 565165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $arg" 565265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 565365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 565465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=xcompiler 565565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 565665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 565765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 565865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 565965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 566065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $arg" 566165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 566265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 566365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$new_inherited_linker_flags " in 566465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $arg "*) ;; 566565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) func_append new_inherited_linker_flags " $arg" ;; 566665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 566765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 566865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 566965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 567065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -multi_module) 567165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich single_module="${wl}-multi_module" 567265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 567365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 567465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 567565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-fast-install) 567665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fast_install=no 567765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 567865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 567965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 568065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-install) 568165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 568265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 568365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The PATH hackery in wrapper scripts is required on Windows 568465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and Darwin in order for the loader to find any dlls it needs. 568565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-no-install' is ignored for $host" 568665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "assuming \`-no-fast-install' instead" 568765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fast_install=no 568865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 568965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) no_install=yes ;; 569065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 569165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 569265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 569365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 569465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -no-undefined) 569565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich allow_undefined=no 569665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 569765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 569865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 569965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -objectlist) 570065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=objectlist 570165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 570265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 570365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 570465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -o) prev=output ;; 570565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 570665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -precious-files-regex) 570765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=precious_regex 570865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 570965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 571065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 571165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -release) 571265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=release 571365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 571465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 571565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 571665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -rpath) 571765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=rpath 571865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 571965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 572065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 572165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R) 572265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=xrpath 572365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 572465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 572565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 572665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R*) 572765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-R' '' "$arg" 572865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$func_stripname_result 572965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need an absolute path. 573065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $dir in 573165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 573265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich =*) 573365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '=' '' "$dir" 573465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$lt_sysroot$func_stripname_result 573565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 573665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 573765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "only absolute run-paths are allowed" 573865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 573965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 574065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$xrpath " in 574165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $dir "*) ;; 574265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append xrpath " $dir" ;; 574365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 574465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 574565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 574665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 574765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shared) 574865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The effects of -shared are defined in a previous loop. 574965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 575065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 575165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 575265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -shrext) 575365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=shrext 575465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 575565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 575665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 575765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -static | -static-libtool-libs) 575865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The effects of -static are defined in a previous loop. 575965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We used to do the same as -all-static on platforms that 576065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # didn't have a PIC flag, but the assumption that the effects 576165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # would be equivalent was wrong. It would break on at least 576265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Digital Unix and AIX. 576365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 576465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 576565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 576665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -thread-safe) 576765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich thread_safe=yes 576865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 576965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 577065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 577165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -version-info) 577265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=vinfo 577365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 577465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 577565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 577665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -version-number) 577765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=vinfo 577865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vinfo_number=yes 577965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 578065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 578165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 578265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -weak) 578365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=weak 578465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 578565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 578665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 578765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wc,*) 578865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-Wc,' '' "$arg" 578965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich args=$func_stripname_result 579065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg= 579165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS=',' 579265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for flag in $args; do 579365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 579465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$flag" 579565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append arg " $func_quote_for_eval_result" 579665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $func_quote_for_eval_result" 579765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 579865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 579965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname ' ' '' "$arg" 580065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$func_stripname_result 580165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 580265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 580365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Wl,*) 580465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-Wl,' '' "$arg" 580565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich args=$func_stripname_result 580665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg= 580765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS=',' 580865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for flag in $args; do 580965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 581065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$flag" 581165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append arg " $wl$func_quote_for_eval_result" 581265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $wl$func_quote_for_eval_result" 581365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linker_flags " $func_quote_for_eval_result" 581465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 581565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 581665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname ' ' '' "$arg" 581765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg=$func_stripname_result 581865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 581965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 582065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xcompiler) 582165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=xcompiler 582265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 582365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 582465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 582565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -Xlinker) 582665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=xlinker 582765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 582865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 582965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 583065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -XCClinker) 583165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=xcclinker 583265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 583365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 583465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 583565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -msg_* for osf cc 583665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -msg_*) 583765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 583865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$func_quote_for_eval_result" 583965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 584065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 584165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Flags to be passed through unchanged, with rationale: 584265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 584365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -r[0-9][0-9]* specify processor for the SGI compiler 584465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 584565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # +DA*, +DD* enable 64-bit mode for the HP compiler 584665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -q* compiler args for the IBM compiler 584765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 584865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -F/path path to uninstalled frameworks, gcc on darwin 584965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 585065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # @file GCC response files 585165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -tp=* Portland pgcc target processor selection 585265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # --sysroot=* for sysroot support 585365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 585465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 585565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 585665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 585765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 585865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$func_quote_for_eval_result" 585965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 586065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 586165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $arg" 586265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 586365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 586465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 586565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Some other compiler flag. 586665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -* | +*) 586765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 586865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$func_quote_for_eval_result" 586965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 587065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 587165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$objext) 587265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A standard object. 587365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append objs " $arg" 587465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 587565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 587665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 587765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A libtool-controlled object. 587865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 587965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that this really is a libtool object. 588065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_unsafe_p "$arg"; then 588165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object= 588265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object= 588365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 588465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Read the .lo file 588565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$arg" 588665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 588765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_object" || 588865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$non_pic_object" || 588965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$pic_object" = none && 589065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$non_pic_object" = none; then 589165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find name of object for \`$arg'" 589265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 589365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 589465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract subdirectory from the argument. 589565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$arg" "/" "" 589665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xdir="$func_dirname_result" 589765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 589865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pic_object" != none; then 589965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepend the subdirectory the object is found in. 590065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object="$xdir$pic_object" 590165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 590265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlfiles; then 590365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 590465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlfiles " $pic_object" 590565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 590665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 590765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 590865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If libtool objects are unsupported, then we need to preload. 590965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev=dlprefiles 591065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 591165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 591265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 591365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # CHECK ME: I think I busted this. -Ossama 591465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlprefiles; then 591565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Preload the old-style object. 591665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlprefiles " $pic_object" 591765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 591865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 591965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 592065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A PIC object. 592165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $pic_object" 592265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$pic_object" 592365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 592465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 592565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Non-PIC object. 592665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$non_pic_object" != none; then 592765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepend the subdirectory the object is found in. 592865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object="$xdir$non_pic_object" 592965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 593065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A standard non-PIC object 593165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 593265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$pic_object" || test "$pic_object" = none ; then 593365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$non_pic_object" 593465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 593565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 593665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the PIC object exists, use it instead. 593765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $xdir was prepended to $pic_object above. 593865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object="$pic_object" 593965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 594065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 594165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 594265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only an error if not doing a dry-run. 594365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_dry_run; then 594465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract subdirectory from the argument. 594565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$arg" "/" "" 594665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xdir="$func_dirname_result" 594765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 594865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o "$arg" 594965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pic_object=$xdir$objdir/$func_lo2o_result 595065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich non_pic_object=$xdir$func_lo2o_result 595165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $pic_object" 595265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append non_pic_objects " $non_pic_object" 595365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 595465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$arg' is not a valid libtool object" 595565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 595665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 595765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 595865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 595965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$libext) 596065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # An archive. 596165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " $arg" 596265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append old_deplibs " $arg" 596365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 596465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 596565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 596665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 596765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # A libtool-controlled library. 596865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 596965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$arg" 597065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$prev" = dlfiles; then 597165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This library was specified with -dlopen. 597265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlfiles " $func_resolve_sysroot_result" 597365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 597465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$prev" = dlprefiles; then 597565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The library was specified with -dlpreopen. 597665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlprefiles " $func_resolve_sysroot_result" 597765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prev= 597865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 597965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " $func_resolve_sysroot_result" 598065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 598165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 598265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 598365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 598465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Some other compiler argument. 598565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 598665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Unknown arguments in both finalize_command and compile_command need 598765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # to be aesthetically quoted because they are evaled later. 598865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$arg" 598965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich arg="$func_quote_for_eval_result" 599065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 599165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # arg 599265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 599365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now actually substitute the argument into the commands. 599465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$arg"; then 599565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 599665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 599765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 599865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # argument parsing loop 599965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 600065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$prev" && \ 600165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "the \`$prevarg' option requires an argument" 600265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 600365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 600465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval arg=\"$export_dynamic_flag_spec\" 600565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $arg" 600665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $arg" 600765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 600865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 600965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs= 601065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # calculate the name of the file, without its directory 601165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$output" 601265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich outputname="$func_basename_result" 601365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs_save="$libobjs" 601465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 601565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath_var"; then 601665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # get the directories listed in $shlibpath_var 601765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 601865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 601965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shlib_search_path= 602065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 602165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 602265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 602365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 602465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$output" "/" "" 602565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_objdir="$func_dirname_result$objdir" 602665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output_objdir/" 602765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tool_output_objdir=$func_to_tool_file_result 602865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Create the object directory. 602965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mkdir_p "$output_objdir" 603065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 603165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Determine the type of output 603265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $output in 603365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich "") 603465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify an output file" 603565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 603665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$libext) linkmode=oldlib ;; 603765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo | *.$objext) linkmode=obj ;; 603865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) linkmode=lib ;; 603965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) linkmode=prog ;; # Anything else should be a program. 604065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 604165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 604265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich specialdeplibs= 604365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 604465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libs= 604565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Find all interdependent deplibs by searching for libraries 604665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that are linked more than once (e.g. -la -lb -la) 604765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $deplibs; do 604865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_preserve_dup_deps ; then 604965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$libs " in 605065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 605165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 605265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 605365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libs " $deplib" 605465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 605565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 605665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib; then 605765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libs="$predeps $libs $compiler_lib_search_path $postdeps" 605865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 605965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Compute libraries that are listed more than once in $predeps 606065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $postdeps and mark them as special (i.e., whose duplicates are 606165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # not to be eliminated). 606265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pre_post_deps= 606365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_duplicate_compiler_generated_deps; then 606465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for pre_post_dep in $predeps $postdeps; do 606565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$pre_post_deps " in 606665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 606765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 606865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append pre_post_deps " $pre_post_dep" 606965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 607065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 607165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pre_post_deps= 607265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 607365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 607465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs= 607565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdependency_libs= 607665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newlib_search_path= 607765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich need_relink=no # whether we're linking any uninstalled libtool libraries 607865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich notinst_deplibs= # not-installed libtool libraries 607965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich notinst_path= # paths that contain not-installed libtool libraries 608065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 608165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $linkmode in 608265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib) 608365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich passes="conv dlpreopen link" 608465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $dlfiles $dlprefiles; do 608565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 608665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) ;; 608765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 608865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 608965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 609065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 609165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 609265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 609365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prog) 609465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs= 609565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs= 609665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich alldeplibs=no 609765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlfiles= 609865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlprefiles= 609965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich passes="conv scan dlopen dlpreopen link" 610065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 610165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) passes="conv" 610265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 610365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 610465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 610565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for pass in $passes; do 610665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The preopen pass in lib mode reverses $deplibs; put it back here 610765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # so that -L comes before libs that need it for instance... 610865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "lib,link"; then 610965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ## FIXME: Find the place where the list is rebuilt in the wrong 611065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ## order, and fix it there properly 611165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_deplibs= 611265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $deplibs; do 611365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_deplibs="$deplib $tmp_deplibs" 611465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 611565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$tmp_deplibs" 611665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 611765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 611865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "lib,link" || 611965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$linkmode,$pass" = "prog,scan"; then 612065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libs="$deplibs" 612165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs= 612265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 612365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog; then 612465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $pass in 612565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopen) libs="$dlfiles" ;; 612665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlpreopen) libs="$dlprefiles" ;; 612765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 612865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 612965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 613065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "lib,dlpreopen"; then 613165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Collect and forward deplibs of preopened libtool libs 613265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $dlprefiles; do 613365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Ignore non-libtool-libs 613465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs= 613565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$lib" 613665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $lib in 613765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) func_source "$func_resolve_sysroot_result" ;; 613865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 613965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 614065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Collect preopened libtool deplibs, except any this library 614165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # has declared as weak libs 614265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 614365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$deplib" 614465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib_base=$func_basename_result 614565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $weak_libs " in 614665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib_base "*) ;; 614765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append deplibs " $deplib" ;; 614865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 614965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 615065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 615165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libs="$dlprefiles" 615265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 615365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = dlopen; then 615465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Collect dlpreopened libraries 615565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_deplibs="$deplibs" 615665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs= 615765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 615865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 615965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $libs; do 616065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib= 616165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=no 616265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 616365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 616465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 616565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 616665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 616765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 616865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 616965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " $deplib" 617065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib ; then 617165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$new_inherited_linker_flags " in 617265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 617365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) func_append new_inherited_linker_flags " $deplib" ;; 617465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 617565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 617665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 617765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 617865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 617965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 618065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" != lib && test "$linkmode" != prog; then 618165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-l' is ignored for archives/objects" 618265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 618365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 618465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-l' '' "$deplib" 618565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 618665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib; then 618765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 618865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 618965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 619065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 619165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for searchdir in $searchdirs; do 619265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for search_ext in .la $std_shrext .so .a; do 619365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Search the libtool library 619465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib="$searchdir/lib${name}${search_ext}" 619565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$lib"; then 619665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$search_ext" = ".la"; then 619765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=yes 619865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 619965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=no 620065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 620165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 2 620265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 620365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 620465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 620565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$found" != yes; then 620665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # deplib doesn't seem to be a libtool library 620765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 620865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 620965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 621065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 621165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 621265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 621365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 621465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 621565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else # deplib is a libtool library 621665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 621765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need to do some special things here, and not later. 621865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 621965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps " in 622065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) 622165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_p "$lib"; then 622265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich library_names= 622365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_library= 622465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$lib" 622565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for l in $old_library $library_names; do 622665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ll="$l" 622765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 622865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$ll" = "X$old_library" ; then # only static version available 622965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich found=no 623065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$lib" "" "." 623165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ladir="$func_dirname_result" 623265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$ladir/$old_library 623365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 623465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 623565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 623665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 623765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 623865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 623965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 624065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 624165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 624265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 624365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 624465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) ;; 624565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 624665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 624765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 624865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; # -l 624965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.ltframework) 625065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 625165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 625265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 625365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 625465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 625565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib ; then 625665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$new_inherited_linker_flags " in 625765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 625865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) func_append new_inherited_linker_flags " $deplib" ;; 625965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 626065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 626165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 626265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 626365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 626465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 626565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $linkmode in 626665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib) 626765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 626865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$pass" = conv && continue 626965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdependency_libs="$deplib $newdependency_libs" 627065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-L' '' "$deplib" 627165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result" 627265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 627365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 627465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prog) 627565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = conv; then 627665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 627765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 627865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 627965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = scan; then 628065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 628165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 628265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 628365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 628465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 628565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-L' '' "$deplib" 628665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result" 628765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 628865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 628965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 629065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-L' is ignored for archives/objects" 629165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 629265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # linkmode 629365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 629465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; # -L 629565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R*) 629665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = link; then 629765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '-R' '' "$deplib" 629865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result" 629965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$func_resolve_sysroot_result 630065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure the xrpath contains only unique directories. 630165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$xrpath " in 630265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $dir "*) ;; 630365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append xrpath " $dir" ;; 630465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 630565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 630665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 630765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 630865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 630965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 631065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$deplib" 631165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib=$func_resolve_sysroot_result 631265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 631365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$libext) 631465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = conv; then 631565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 631665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 631765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 631865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $linkmode in 631965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib) 632065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Linking convenience modules into shared libraries is allowed, 632165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but linking other static libraries is non-portable. 632265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $dlpreconveniencelibs " in 632365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 632465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 632565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich valid_a_lib=no 632665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplibs_check_method in 632765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich match_pattern*) 632865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $deplibs_check_method; shift 632965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 633065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 633165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich | $EGREP "$match_pattern_regex" > /dev/null; then 633265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich valid_a_lib=yes 633365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 633465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 633565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pass_all) 633665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich valid_a_lib=yes 633765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 633865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 633965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$valid_a_lib" != yes; then 634065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 634165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: Trying to link with static lib archive $deplib." 634265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 634365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 634465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which you do not appear to have" 634565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because the file extensions .$libext of this argument makes me believe" 634665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** that it is just a static archive that I should not use here." 634765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 634865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 634965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the" 635065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** static library $deplib is not portable!" 635165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 635265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 635365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 635465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 635565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 635665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 635765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prog) 635865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" != link; then 635965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 636065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 636165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 636265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 636365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 636465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 636565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 636665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # linkmode 636765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; # *.$libext 636865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo | *.$objext) 636965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = conv; then 637065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 637165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$linkmode" = prog; then 637265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 637365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If there is no dlopen support or we're linking statically, 637465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we need to preload. 637565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $deplib" 637665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$deplib $compile_deplibs" 637765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 637865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 637965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlfiles " $deplib" 638065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 638165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 638265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 638365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 638465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich %DEPLIBS%) 638565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich alldeplibs=yes 638665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 638765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 638865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac # case $deplib 638965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 639065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$found" = yes || test -f "$lib"; then : 639165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 639265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 639365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 639465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 639565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see that this really is a libtool archive. 639665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lalib_unsafe_p "$lib" \ 639765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || func_fatal_error "\`$lib' is not a valid libtool archive" 639865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 639965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$lib" "" "." 640065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ladir="$func_dirname_result" 640165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 640265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlname= 640365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopen= 640465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlpreopen= 640565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir= 640665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich library_names= 640765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_library= 640865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich inherited_linker_flags= 640965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the library was installed with an old release of libtool, 641065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # it will not redefine variables installed, or shouldnotlink 641165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich installed=yes 641265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shouldnotlink=no 641365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich avoidtemprpath= 641465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 641565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 641665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Read the .la file 641765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source "$lib" 641865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 641965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Convert "-framework foo" to "foo.ltframework" 642065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$inherited_linker_flags"; then 642165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 642265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 642365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_inherited_linker_flags " in 642465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $tmp_inherited_linker_flag "*) ;; 642565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 642665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 642765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 642865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 642965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 643065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "lib,link" || 643165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$linkmode,$pass" = "prog,scan" || 643265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$linkmode" != prog && test "$linkmode" != lib; }; then 643365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$dlopen" && func_append dlfiles " $dlopen" 643465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 643565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 643665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 643765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = conv; then 643865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only check for convenience libraries 643965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$lib $deplibs" 644065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$libdir"; then 644165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$old_library"; then 644265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find name of link library for \`$lib'" 644365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 644465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # It is a libtool convenience library, so add in its objects. 644565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append convenience " $ladir/$objdir/$old_library" 644665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append old_convenience " $ladir/$objdir/$old_library" 644765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$linkmode" != prog && test "$linkmode" != lib; then 644865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$lib' is not a convenience library" 644965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 645065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_libs= 645165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 645265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 645365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_preserve_dup_deps ; then 645465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$tmp_libs " in 645565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 645665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 645765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 645865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append tmp_libs " $deplib" 645965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 646065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 646165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $pass = conv 646265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 646365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 646465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Get the name of the library we link against. 646565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linklib= 646665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$old_library" && 646765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$prefer_static_libs" = yes || 646865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$prefer_static_libs,$installed" = "built,no"; }; then 646965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linklib=$old_library 647065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 647165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for l in $old_library $library_names; do 647265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linklib="$l" 647365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 647465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 647565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$linklib"; then 647665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot find name of link library for \`$lib'" 647765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 647865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 647965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This library was specified with -dlopen. 648065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = dlopen; then 648165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$libdir"; then 648265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 648365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 648465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$dlname" || 648565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$dlopen_support" != yes || 648665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_libtool_libs" = no; then 648765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If there is no dlname, no dlopen support or we're linking 648865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # statically, we need to preload. We also need to preload any 648965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # dependent libraries so libltdl's deplib preloader doesn't 649065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # bomb out in the load deplibs phase. 649165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlprefiles " $lib $dependency_libs" 649265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 649365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlfiles " $lib" 649465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 649565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 649665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $pass = dlopen 649765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 649865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need an absolute path. 649965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $ladir in 650065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 650165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 650265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich abs_ladir=`cd "$ladir" && pwd` 650365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$abs_ladir"; then 650465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "cannot determine absolute directory name of \`$ladir'" 650565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "passing it literally to the linker, although it might fail" 650665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich abs_ladir="$ladir" 650765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 650865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 650965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 651065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$lib" 651165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich laname="$func_basename_result" 651265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 651365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Find the relevant object directory and library name. 651465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$installed" = Xyes; then 651565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 651665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "library \`$lib' was moved." 651765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$ladir" 651865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir="$abs_ladir" 651965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir="$abs_ladir" 652065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 652165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$lt_sysroot$libdir" 652265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir="$lt_sysroot$libdir" 652365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 652465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 652565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 652665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 652765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$ladir" 652865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir="$abs_ladir" 652965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove this search path later 653065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append notinst_path " $abs_ladir" 653165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 653265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$ladir/$objdir" 653365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir="$abs_ladir/$objdir" 653465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove this search path later 653565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append notinst_path " $abs_ladir" 653665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 653765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $installed = yes 653865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname 'lib' '.la' "$laname" 653965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 654065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 654165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This library was specified with -dlpreopen. 654265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = dlpreopen; then 654365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$libdir" && test "$linkmode" = prog; then 654465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 654565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 654665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$host" in 654765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # special handling for platforms with PE-DLLs. 654865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc* ) 654965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Linker will automatically link against shared library if both 655065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # static and shared are present. Therefore, ensure we extract 655165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # symbols from the import library if a shared library is present 655265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # (otherwise, the dlopen module name will be incorrect). We do 655365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # this by putting the import library name into $newdlprefiles. 655465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We recover the dlopen module name by 'saving' the la file 655565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # name in a special purpose variable, and (later) extracting the 655665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # dlname from the la file. 655765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlname"; then 655865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_tr_sh "$dir/$linklib" 655965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 656065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $dir/$linklib" 656165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 656265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $dir/$old_library" 656365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Keep a list of preopened convenience libraries to check 656465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that they are being used correctly in the link pass. 656565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 656665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlpreconveniencelibs " $dir/$old_library" 656765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 656865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 656965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) 657065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prefer using a static library (so that no silly _DYNAMIC symbols 657165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # are required to link). 657265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$old_library"; then 657365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $dir/$old_library" 657465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Keep a list of preopened convenience libraries to check 657565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that they are being used correctly in the link pass. 657665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 657765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dlpreconveniencelibs " $dir/$old_library" 657865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Otherwise, use the dlname, so that lt_dlopen finds it. 657965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$dlname"; then 658065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $dir/$dlname" 658165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 658265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $dir/$linklib" 658365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 658465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 658565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 658665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $pass = dlpreopen 658765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 658865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$libdir"; then 658965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Link the convenience library 659065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib; then 659165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$dir/$old_library $deplibs" 659265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$linkmode,$pass" = "prog,link"; then 659365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$dir/$old_library $compile_deplibs" 659465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$dir/$old_library $finalize_deplibs" 659565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 659665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$lib $deplibs" # used for prog,scan pass 659765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 659865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 659965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 660065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 660165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 660265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog && test "$pass" != link; then 660365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newlib_search_path " $ladir" 660465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$lib $deplibs" 660565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 660665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linkalldeplibs=no 660765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$link_all_deplibs" != no || test -z "$library_names" || 660865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_libtool_libs" = no; then 660965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linkalldeplibs=yes 661065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 661165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 661265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_libs= 661365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 661465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 661565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) func_stripname '-L' '' "$deplib" 661665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result" 661765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 661865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 661965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 662065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Need to link against all dependency_libs? 662165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkalldeplibs" = yes; then 662265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 662365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 662465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Need to hardcode shared library paths 662565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # or/and link against static libraries 662665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdependency_libs="$deplib $newdependency_libs" 662765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 662865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_preserve_dup_deps ; then 662965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$tmp_libs " in 663065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 663165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 663265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 663365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append tmp_libs " $deplib" 663465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # for deplib 663565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 663665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $linkmode = prog... 663765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 663865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 663965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$library_names" && 664065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { { test "$prefer_static_libs" = no || 664165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$prefer_static_libs,$installed" = "built,yes"; } || 664265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$old_library"; }; then 664365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need to hardcode the library path 664465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 664565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure the rpath contains only unique directories. 664665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$temp_rpath:" in 664765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *"$absdir:"*) ;; 664865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append temp_rpath "$absdir:" ;; 664965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 665065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 665165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 665265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Hardcode the library path. 665365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Skip directories that are in the system default run-time 665465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # search path. 665565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $sys_lib_dlsearch_path " in 665665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $absdir "*) ;; 665765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 665865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$compile_rpath " in 665965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $absdir "*) ;; 666065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append compile_rpath " $absdir" ;; 666165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 666265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 666365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 666465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $sys_lib_dlsearch_path " in 666565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 666665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 666765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$finalize_rpath " in 666865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 666965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_rpath " $libdir" ;; 667065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 667165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 667265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 667365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # $linkmode,$pass = prog,link... 667465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 667565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$alldeplibs" = yes && 667665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$deplibs_check_method" = pass_all || 667765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$build_libtool_libs" = yes && 667865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$library_names"; }; }; then 667965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We only need to search for static libraries 668065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 668165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 668265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 668365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 668465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_static=no # Whether the deplib will be linked statically 668565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich use_static_libs=$prefer_static_libs 668665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$use_static_libs" = built && test "$installed" = yes; then 668765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich use_static_libs=no 668865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 668965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$library_names" && 669065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$use_static_libs" = no || test -z "$old_library"; }; then 669165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 669265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* | *cegcc*) 669365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # No point in relinking DLLs because paths are not encoded 669465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append notinst_deplibs " $lib" 669565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich need_relink=no 669665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 669765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 669865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$installed" = no; then 669965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append notinst_deplibs " $lib" 670065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich need_relink=yes 670165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 670265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 670365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 670465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This is a shared library 670565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 670665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Warn about portability, can't link against -module's on some 670765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # systems (darwin). Don't bleat about dlopened modules though! 670865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopenmodule="" 670965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dlpremoduletest in $dlprefiles; do 671065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$dlpremoduletest" = "X$lib"; then 671165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlopenmodule="$dlpremoduletest" 671265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 671365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 671465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 671565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 671665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 671765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog; then 671865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: Linking the executable $output against the loadable module" 671965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 672065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the loadable module" 672165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 672265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** $linklib is not portable!" 672365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 672465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib && 672565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$hardcode_into_libs" = yes; then 672665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Hardcode the library path. 672765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Skip directories that are in the system default run-time 672865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # search path. 672965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $sys_lib_dlsearch_path " in 673065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $absdir "*) ;; 673165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 673265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$compile_rpath " in 673365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $absdir "*) ;; 673465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append compile_rpath " $absdir" ;; 673565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 673665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 673765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 673865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $sys_lib_dlsearch_path " in 673965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 674065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 674165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$finalize_rpath " in 674265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 674365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_rpath " $libdir" ;; 674465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 674565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 674665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 674765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 674865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 674965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$old_archive_from_expsyms_cmds"; then 675065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # figure out the soname 675165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $library_names 675265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 675365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich realname="$1" 675465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 675565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 675665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # use dlname if we got it. it's perfectly good, no? 675765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlname"; then 675865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich soname="$dlname" 675965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$soname_spec"; then 676065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # bleh windows 676165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 676265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | mingw* | *cegcc*) 676365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 676465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=$func_arith_result 676565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="-$major" 676665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 676765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 676865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval soname=\"$soname_spec\" 676965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 677065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich soname="$realname" 677165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 677265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 677365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make a new name for the extract_expsyms_cmds to use 677465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich soroot="$soname" 677565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$soroot" 677665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich soname="$func_basename_result" 677765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname 'lib' '.dll' "$soname" 677865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newlib=libimp-$func_stripname_result.a 677965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 678065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the library has no export list, then create one now 678165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$output_objdir/$soname-def"; then : 678265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 678365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "extracting exported symbol list from \`$soname'" 678465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 678565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 678665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 678765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Create $newlib 678865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$output_objdir/$newlib"; then :; else 678965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "generating import library for \`$soname'" 679065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 679165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 679265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # make sure the library variables are pointing to the new library 679365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$output_objdir 679465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linklib=$newlib 679565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # test -n "$old_archive_from_expsyms_cmds" 679665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 679765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog || test "$opt_mode" != relink; then 679865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_shlibpath= 679965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir= 680065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add= 680165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_linked=yes 680265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $hardcode_action in 680365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich immediate | unsupported) 680465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_direct" = no; then 680565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$dir/$linklib" 680665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 680765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 680865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sysv4*uw2*) add_dir="-L$dir" ;; 680965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 681065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-unixware7*) add_dir="-L$dir" ;; 681165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-darwin* ) 681265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # if the lib is a (non-dlopened) module then we can not 681365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # link against it, someone is ignoring the earlier warnings 681465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if /usr/bin/file -L $add 2> /dev/null | 681565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $GREP ": [^:]* bundle" >/dev/null ; then 681665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$dlopenmodule" != "X$lib"; then 681765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: lib $linklib is a module, not a shared library" 681865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$old_library" ; then 681965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 682065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** And there doesn't seem to be a static archive available" 682165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** The link will probably fail, sorry" 682265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 682365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$dir/$old_library" 682465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 682565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$old_library"; then 682665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$dir/$old_library" 682765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 682865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 682965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 683065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_minus_L" = no; then 683165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 683265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sunos*) add_shlibpath="$dir" ;; 683365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 683465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir="-L$dir" 683565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 683665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_shlibpath_var" = no; then 683765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_shlibpath="$dir" 683865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 683965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 684065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_linked=no 684165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 684265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 684365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink) 684465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_direct" = yes && 684565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$hardcode_direct_absolute" = no; then 684665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$dir/$linklib" 684765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_minus_L" = yes; then 684865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir="-L$absdir" 684965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try looking first in the location we're being installed to. 685065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$inst_prefix_dir"; then 685165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $libdir in 685265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]*) 685365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append add_dir " -L$inst_prefix_dir$libdir" 685465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 685565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 685665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 685765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 685865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_shlibpath_var" = yes; then 685965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_shlibpath="$dir" 686065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 686165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 686265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_linked=no 686365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 686465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 686565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) lib_linked=no ;; 686665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 686765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 686865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$lib_linked" != yes; then 686965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_configuration "unsupported hardcode properties" 687065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 687165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 687265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$add_shlibpath"; then 687365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$compile_shlibpath: in 687465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$add_shlibpath:"*) ;; 687565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append compile_shlibpath "$add_shlibpath:" ;; 687665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 687765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 687865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog; then 687965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 688065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add" && compile_deplibs="$add $compile_deplibs" 688165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 688265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add_dir" && deplibs="$add_dir $deplibs" 688365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add" && deplibs="$add $deplibs" 688465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_direct" != yes && 688565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$hardcode_minus_L" != yes && 688665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$hardcode_shlibpath_var" = yes; then 688765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$finalize_shlibpath: in 688865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$libdir:"*) ;; 688965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_shlibpath "$libdir:" ;; 689065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 689165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 689265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 689365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 689465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 689565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog || test "$opt_mode" = relink; then 689665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_shlibpath= 689765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir= 689865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add= 689965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Finalize command for both is simple: just hardcode it. 690065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_direct" = yes && 690165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$hardcode_direct_absolute" = no; then 690265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$libdir/$linklib" 690365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_minus_L" = yes; then 690465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir="-L$libdir" 690565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 690665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_shlibpath_var" = yes; then 690765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$finalize_shlibpath: in 690865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$libdir:"*) ;; 690965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_shlibpath "$libdir:" ;; 691065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 691165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 691265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$hardcode_automatic" = yes; then 691365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$inst_prefix_dir" && 691465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$inst_prefix_dir$libdir/$linklib" ; then 691565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$inst_prefix_dir$libdir/$linklib" 691665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 691765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="$libdir/$linklib" 691865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 691965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 692065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We cannot seem to hardcode it, guess we'll fake it. 692165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add_dir="-L$libdir" 692265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try looking first in the location we're being installed to. 692365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$inst_prefix_dir"; then 692465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $libdir in 692565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]*) 692665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append add_dir " -L$inst_prefix_dir$libdir" 692765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 692865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 692965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 693065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich add="-l$name" 693165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 693265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 693365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog; then 693465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 693565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 693665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 693765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add_dir" && deplibs="$add_dir $deplibs" 693865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$add" && deplibs="$add $deplibs" 693965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 694065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 694165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$linkmode" = prog; then 694265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Here we assume that one of hardcode_direct or hardcode_minus_L 694365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # is not unsupported. This is valid on all known static and 694465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # shared platforms. 694565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_direct" != unsupported; then 694665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$old_library" && linklib="$old_library" 694765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$dir/$linklib $compile_deplibs" 694865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$dir/$linklib $finalize_deplibs" 694965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 695065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="-l$name -L$dir $compile_deplibs" 695165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="-l$name -L$dir $finalize_deplibs" 695265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 695365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$build_libtool_libs" = yes; then 695465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Not a shared library 695565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$deplibs_check_method" != pass_all; then 695665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We're trying link a shared library against a static one 695765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but the system doesn't support it. 695865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 695965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just print a warning and add the library to dependency_libs so 696065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that the program can be linked against the static library. 696165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 696265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: This system can not link to static lib archive $lib." 696365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 696465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 696565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which you do not appear to have." 696665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$module" = yes; then 696765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** But as you try to build a module library, libtool will still create " 696865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** a static module, that should work as long as the dlopening application" 696965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 697065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$global_symbol_pipe"; then 697165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 697265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** However, this would only work if libtool was able to extract symbol" 697365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 697465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** not find such a program. So, this module is probably useless." 697565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** \`nm' from GNU binutils and a full rebuild may help." 697665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 697765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = no; then 697865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=module 697965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 698065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 698165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 698265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 698365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 698465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 698565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$dir/$old_library $deplibs" 698665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_static=yes 698765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 698865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # link shared/static library? 698965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 699065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = lib; then 699165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dependency_libs" && 699265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test "$hardcode_into_libs" != yes || 699365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_old_libs" = yes || 699465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$link_static" = yes; }; then 699565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Extract -R from dependency_libs 699665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich temp_deplibs= 699765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $dependency_libs; do 699865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $libdir in 699965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R*) func_stripname '-R' '' "$libdir" 700065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich temp_xrpath=$func_stripname_result 700165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $xrpath " in 700265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $temp_xrpath "*) ;; 700365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append xrpath " $temp_xrpath";; 700465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac;; 700565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append temp_deplibs " $libdir";; 700665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 700765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 700865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs="$temp_deplibs" 700965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 701065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 701165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newlib_search_path " $absdir" 701265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Link against this library 701365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 701465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # ... and its dependency_libs 701565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_libs= 701665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 701765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdependency_libs="$deplib $newdependency_libs" 701865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 701965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) func_stripname '-L' '' "$deplib" 702065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$func_stripname_result";; 702165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_resolve_sysroot "$deplib" ;; 702265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 702365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $opt_preserve_dup_deps ; then 702465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$tmp_libs " in 702565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $func_resolve_sysroot_result "*) 702665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append specialdeplibs " $func_resolve_sysroot_result" ;; 702765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 702865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 702965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append tmp_libs " $func_resolve_sysroot_result" 703065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 703165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 703265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$link_all_deplibs" != no; then 703365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the search paths of all dependency libraries 703465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 703565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich path= 703665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 703765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) path="$deplib" ;; 703865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 703965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$deplib" 704065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib=$func_resolve_sysroot_result 704165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$deplib" "" "." 704265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir=$func_dirname_result 704365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We need an absolute path. 704465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $dir in 704565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 704665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 704765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir=`cd "$dir" && pwd` 704865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$absdir"; then 704965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "cannot determine absolute directory name of \`$dir'" 705065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich absdir="$dir" 705165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 705265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 705365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 705465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $GREP "^installed=no" $deplib > /dev/null; then 705565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 705665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-darwin*) 705765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich depdepl= 705865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 705965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$deplibrary_names" ; then 706065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for tmp in $deplibrary_names ; do 706165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich depdepl=$tmp 706265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 706365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$absdir/$objdir/$depdepl" ; then 706465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich depdepl="$absdir/$objdir/$depdepl" 706565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 706665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$darwin_install_name"; then 706765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 706865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 706965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 707065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 707165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich path= 707265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 707365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 707465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 707565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 707665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich path="-L$absdir/$objdir" 707765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 707865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 707965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 708065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 708165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 708265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$deplib' is not a valid libtool archive" 708365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$absdir" != "$libdir" && \ 708465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`$deplib' seems to be moved" 708565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 708665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich path="-L$absdir" 708765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 708865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 708965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 709065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $deplibs " in 709165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $path "*) ;; 709265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) deplibs="$path $deplibs" ;; 709365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 709465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 709565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # link_all_deplibs != no 709665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi # linkmode = lib 709765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # for deplib in $libs 709865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = link; then 709965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = "prog"; then 710065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 710165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 710265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 710365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 710465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 710565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 710665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs="$newdependency_libs" 710765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" = dlpreopen; then 710865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Link the dlpreopened libraries before other libraries 710965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $save_deplibs; do 711065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$deplib $deplibs" 711165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 711265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 711365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" != dlopen; then 711465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$pass" != conv; then 711565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure lib_search_path contains only unique directories. 711665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib_search_path= 711765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $newlib_search_path; do 711865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$lib_search_path " in 711965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $dir "*) ;; 712065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append lib_search_path " $dir" ;; 712165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 712265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 712365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newlib_search_path= 712465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 712565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 712665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode,$pass" != "prog,link"; then 712765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vars="deplibs" 712865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 712965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich vars="compile_deplibs finalize_deplibs" 713065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 713165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for var in $vars dependency_libs; do 713265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add libraries to $var in reverse order 713365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval tmp_libs=\"\$$var\" 713465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_libs= 713565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $tmp_libs; do 713665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: Pedantically, this is the right thing to do, so 713765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # that some nasty dependency loop isn't accidentally 713865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # broken: 713965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich #new_libs="$deplib $new_libs" 714065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Pragmatically, this seems to cause very few problems in 714165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # practice: 714265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 714365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) new_libs="$deplib $new_libs" ;; 714465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R*) ;; 714565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 714665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # And here is the reason: when a library appears more 714765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # than once as an explicit dependence of a library, or 714865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # is implicitly linked in more than once by the 714965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # compiler, it is considered special, and multiple 715065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # occurrences thereof are not removed. Compare this 715165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # with having the same library being listed as a 715265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # dependency of multiple other libraries: in this case, 715365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we know (pedantically, we assume) the library does not 715465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # need to be listed more than once, so we keep only the 715565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # last copy. This is not always right, but it is rare 715665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # enough that we require users that really mean to play 715765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # such unportable linking tricks to link the library 715865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # using -Wl,-lname, so that libtool does not consider it 715965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # for duplicate removal. 716065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $specialdeplibs " in 716165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) new_libs="$deplib $new_libs" ;; 716265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 716365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_libs " in 716465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 716565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) new_libs="$deplib $new_libs" ;; 716665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 716765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 716865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 716965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 717065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 717165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 717265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_libs= 717365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $new_libs; do 717465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 717565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 717665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $tmp_libs " in 717765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 717865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append tmp_libs " $deplib" ;; 717965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 718065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 718165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append tmp_libs " $deplib" ;; 718265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 718365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 718465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval $var=\"$tmp_libs\" 718565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # for var 718665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 718765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Last step: remove runtime libs from dependency_libs 718865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # (they stay in deplibs) 718965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_libs= 719065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $dependency_libs ; do 719165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps $compiler_lib_search_path " in 719265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $i "*) 719365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich i="" 719465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 719565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 719665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$i" ; then 719765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append tmp_libs " $i" 719865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 719965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 720065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs=$tmp_libs 720165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # for pass 720265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog; then 720365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles="$newdlfiles" 720465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 720565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$linkmode" = prog || test "$linkmode" = lib; then 720665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefiles="$newdlprefiles" 720765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 720865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 720965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $linkmode in 721065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlib) 721165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 721265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-dlopen' is ignored for archives" 721365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 721465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 721565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $deplibs" in 721665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *\ -l* | *\ -L*) 721765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-l' and \`-L' are ignored for archives" ;; 721865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 721965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 722065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$rpath" && \ 722165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-rpath' is ignored for archives" 722265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 722365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$xrpath" && \ 722465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-R' is ignored for archives" 722565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 722665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$vinfo" && \ 722765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-version-info/-version-number' is ignored for archives" 722865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 722965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$release" && \ 723065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-release' is ignored for archives" 723165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 723265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$export_symbols$export_symbols_regex" && \ 723365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-export-symbols' is ignored for archives" 723465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 723565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now set the variables for building old libraries. 723665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 723765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs="$output" 723865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append objs "$old_deplibs" 723965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 724065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 724165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib) 724265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure we only generate libraries of the form `libNAME.la'. 724365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $outputname in 724465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib*) 724565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname 'lib' '.la' "$outputname" 724665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 724765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval shared_ext=\"$shrext_cmds\" 724865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libname=\"$libname_spec\" 724965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 725065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 725165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$module" = no && \ 725265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "libtool library \`$output' must begin with \`lib'" 725365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 725465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_lib_prefix" != no; then 725565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add the "lib" prefix for modules if required 725665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.la' "$outputname" 725765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 725865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval shared_ext=\"$shrext_cmds\" 725965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libname=\"$libname_spec\" 726065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 726165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.la' "$outputname" 726265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=$func_stripname_result 726365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 726465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 726565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 726665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 726765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$objs"; then 726865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$deplibs_check_method" != pass_all; then 726965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 727065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 727165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 727265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 727365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** objects $objs is not portable!" 727465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $objs" 727565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 727665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 727765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 727865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$dlself" != no && \ 727965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-dlopen self' is ignored for libtool libraries" 728065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 728165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $rpath 728265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 728365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$#" -gt 1 && \ 728465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "ignoring multiple \`-rpath's for a libtool library" 728565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 728665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich install_libdir="$1" 728765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 728865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs= 728965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$rpath"; then 729065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 729165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Building a libtool convenience library. 729265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Some compilers have problems with a `.al' extension so 729365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # convenience libraries should have the same extension an 729465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # archive normally would. 729565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs="$output_objdir/$libname.$libext $oldlibs" 729665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=convenience 729765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 729865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 729965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 730065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$vinfo" && \ 730165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 730265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 730365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$release" && \ 730465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-release' is ignored for convenience libraries" 730565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 730665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 730765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Parse the version information argument. 730865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS=':' 730965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $vinfo 0 0 0 731065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 731165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 731265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 731365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$7" && \ 731465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "too many parameters to \`-version-info'" 731565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 731665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # convert absolute version numbers to libtool ages 731765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # this retains compatibility with .la files and attempts 731865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # to make the code below a bit more comprehensible 731965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 732065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $vinfo_number in 732165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich yes) 732265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich number_major="$1" 732365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich number_minor="$2" 732465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich number_revision="$3" 732565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 732665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # There are really only two kinds -- those that 732765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # use the current revision as the major version 732865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and those that subtract age and use age as 732965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # a minor version. But, then there is irix 733065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # which has an extra 1 added just for fun 733165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 733265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $version_type in 733365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # correct linux to gnu/linux during the next big refactor 733465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin|linux|osf|windows|none) 733565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $number_major + $number_minor 733665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich current=$func_arith_result 733765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich age="$number_minor" 733865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich revision="$number_revision" 733965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 734065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich freebsd-aout|freebsd-elf|qnx|sunos) 734165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich current="$number_major" 734265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich revision="$number_minor" 734365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich age="0" 734465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 734565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich irix|nonstopux) 734665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $number_major + $number_minor 734765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich current=$func_arith_result 734865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich age="$number_minor" 734965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich revision="$number_minor" 735065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_irix_increment=no 735165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 735265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 735365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 735465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich no) 735565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich current="$1" 735665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich revision="$2" 735765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich age="$3" 735865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 735965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 736065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 736165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check that each of the things are valid numbers. 736265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $current in 736365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 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]) ;; 736465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 736565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "CURRENT \`$current' must be a nonnegative integer" 736665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 736765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 736865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 736965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 737065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $revision in 737165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 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]) ;; 737265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 737365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "REVISION \`$revision' must be a nonnegative integer" 737465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 737565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 737665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 737765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 737865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $age in 737965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 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]) ;; 738065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 738165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "AGE \`$age' must be a nonnegative integer" 738265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 738365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 738465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 738565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 738665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$age" -gt "$current"; then 738765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_error "AGE \`$age' is greater than the current interface number \`$current'" 738865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 738965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 739065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 739165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Calculate the version variables. 739265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major= 739365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix= 739465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring= 739565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $version_type in 739665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich none) ;; 739765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 739865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin) 739965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Like Linux, but with the current version available in 740065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # verstring for coding it into the library header 740165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 740265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=.$func_arith_result 740365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="$major.$age.$revision" 740465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Darwin ld doesn't like 0 for these options... 740565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current + 1 740665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich minor_current=$func_arith_result 740765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 740865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 740965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 741065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 741165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich freebsd-aout) 741265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=".$current" 741365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".$current.$revision"; 741465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 741565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 741665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich freebsd-elf) 741765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=".$current" 741865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".$current" 741965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 742065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 742165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich irix | nonstopux) 742265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$lt_irix_increment" = "Xno"; then 742365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 742465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 742565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age + 1 742665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 742765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=$func_arith_result 742865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 742965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $version_type in 743065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich nonstopux) verstring_prefix=nonstopux ;; 743165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) verstring_prefix=sgi ;; 743265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 743365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="$verstring_prefix$major.$revision" 743465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 743565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add in all the interfaces that we are compatible with. 743665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich loop=$revision 743765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test "$loop" -ne 0; do 743865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $revision - $loop 743965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich iface=$func_arith_result 744065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $loop - 1 744165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich loop=$func_arith_result 744265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="$verstring_prefix$major.$iface:$verstring" 744365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 744465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 744565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Before this point, $major must not contain `.'. 744665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=.$major 744765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="$major.$revision" 744865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 744965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 745065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linux) # correct to gnu/linux during the next big refactor 745165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 745265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=.$func_arith_result 745365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="$major.$age.$revision" 745465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 745565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 745665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich osf) 745765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 745865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=.$func_arith_result 745965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".$current.$age.$revision" 746065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="$current.$age.$revision" 746165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 746265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add in all the interfaces that we are compatible with. 746365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich loop=$age 746465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test "$loop" -ne 0; do 746565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $loop 746665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich iface=$func_arith_result 746765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $loop - 1 746865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich loop=$func_arith_result 746965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="$verstring:${iface}.0" 747065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 747165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 747265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make executables depend on our current version. 747365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append verstring ":${current}.0" 747465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 747565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 747665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich qnx) 747765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=".$current" 747865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".$current" 747965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 748065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 748165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich sunos) 748265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=".$current" 748365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".$current.$revision" 748465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 748565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 748665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich windows) 748765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Use '-' rather than '.', since we only want one 748865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # extension on DOS 8.3 filesystems. 748965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $current - $age 749065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=$func_arith_result 749165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="-$major" 749265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 749365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 749465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 749565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_configuration "unknown library version type \`$version_type'" 749665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 749765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 749865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 749965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Clear the version info if we defaulted, and they specified a release. 750065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$vinfo" && test -n "$release"; then 750165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major= 750265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $version_type in 750365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich darwin) 750465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # we can't check for "0.0" in archive_cmds due to quoting 750565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # problems, so we reset it completely 750665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring= 750765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 750865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 750965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="0.0" 751065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 751165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 751265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_version" = no; then 751365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix= 751465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 751565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=".0.0" 751665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 751765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 751865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 751965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove version info from name if versioning should be avoided 752065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$avoid_version" = yes && test "$need_version" = no; then 752165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major= 752265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix= 752365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich verstring="" 752465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 752565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 752665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Check to see if the archive will have undefined symbols. 752765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$allow_undefined" = yes; then 752865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$allow_undefined_flag" = unsupported; then 752965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "undefined symbols not allowed in $host shared libraries" 753065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 753165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 753265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 753365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 753465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't allow undefined symbols. 753565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich allow_undefined_flag="$no_undefined_flag" 753665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 753765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 753865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 753965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 754065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_generate_dlsyms "$libname" "$libname" "yes" 754165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $symfileobj" 754265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 754365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 754465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" != relink; then 754565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove our outputs, but don't remove object files since they 754665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # may have been created when compiling PIC objects. 754765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich removelist= 754865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tempremovelist=`$ECHO "$output_objdir/*"` 754965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for p in $tempremovelist; do 755065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $p in 755165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.$objext | *.gcno) 755265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 755365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 755465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$precious_files_regex" != "X"; then 755565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 755665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich then 755765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 755865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 755965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 756065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append removelist " $p" 756165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 756265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) ;; 756365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 756465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 756565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$removelist" && \ 756665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "${RM}r \$removelist" 756765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 756865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 756965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now set the variables for building old libraries. 757065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 757165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append oldlibs " $output_objdir/$libname.$libext" 757265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 757365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform .lo files to .o files. 757465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 757565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 757665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 757765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Eliminate all temporary directories. 757865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich #for path in $notinst_path; do 757965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 758065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 758165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 758265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich #done 758365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 758465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$xrpath"; then 758565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the user specified any rpath flags, then add them. 758665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich temp_xrpath= 758765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $xrpath; do 758865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot "$libdir" 758965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append temp_xrpath " -R$func_replace_sysroot_result" 759065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$finalize_rpath " in 759165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 759265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_rpath " $libdir" ;; 759365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 759465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 759565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 759665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs="$temp_xrpath $dependency_libs" 759765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 759865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 759965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 760065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure dlfiles contains only unique files that won't be dlpreopened 760165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_dlfiles="$dlfiles" 760265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles= 760365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $old_dlfiles; do 760465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $dlprefiles $dlfiles " in 760565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $lib "*) ;; 760665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dlfiles " $lib" ;; 760765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 760865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 760965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 761065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure dlprefiles contains only unique files 761165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_dlprefiles="$dlprefiles" 761265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefiles= 761365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $old_dlprefiles; do 761465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$dlprefiles " in 761565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $lib "*) ;; 761665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dlprefiles " $lib" ;; 761765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 761865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 761965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 762065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 762165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$rpath"; then 762265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 762365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 762465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # these systems don't actually have a c library (as such)! 762565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 762665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 762765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Rhapsody C library is in the System framework 762865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " System.ltframework" 762965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 763065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-netbsd*) 763165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't link with libc until the a.out ld.so is fixed. 763265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 763365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 763465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do not include libc due to us having libc/libc_r. 763565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 763665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sco3.2v5* | *-*-sco5v6*) 763765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Causes problems with __ctype 763865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 763965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 764065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Compiler inserts libc in the correct place for threads to work 764165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 764265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 764365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add libc to deplibs on all other systems if necessary. 764465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_need_lc" = "yes"; then 764565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append deplibs " -lc" 764665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 764765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 764865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 764965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 765065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 765165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform deplibs into only deplibs that can be linked in shared. 765265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name_save=$name 765365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname_save=$libname 765465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release_save=$release 765565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix_save=$versuffix 765665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major_save=$major 765765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # I'm not sure if I'm treating the release correctly. I think 765865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # release should show up in the -l (ie -lgmp5) so we don't want to 765965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # add it in twice. Is that correct? 766065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release="" 766165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix="" 766265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major="" 766365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdeplibs= 766465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=no 766565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplibs_check_method in 766665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich pass_all) 766765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't check for shared/static. Everything works. 766865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This might be a little naive. We might want to check 766965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # whether the library exists or not. But this is on 767065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # osf3 & osf4 and I'm not really sure... Just 767165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # implementing what was already the behavior. 767265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdeplibs=$deplibs 767365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 767465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test_compile) 767565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This code stresses the "libraries are programs" paradigm to its 767665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # limits. Maybe even breaks it. We compile a program, linking it 767765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # against the deplibs as a proxy for the library. Then we can check 767865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # whether they linked in statically or dynamically with ldd. 767965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM conftest.c 768065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cat > conftest.c <<EOF 768165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich int main() { return 0; } 768265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF 768365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM conftest 768465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 768565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ldd_output=`ldd conftest` 768665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $deplibs; do 768765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $i in 768865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 768965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -l '' "$i" 769065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 769165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 769265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps " in 769365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $i "*) 769465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 769565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich i="" 769665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 769765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 769865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 769965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$i" ; then 770065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 770165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 770265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $deplib_matches; shift 770365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib_match=$1 770465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 770565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 770665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 770765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 770865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 770965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: dynamic linker does not accept needed library $i." 771065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 771165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 771265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which I believe you do not have" 771365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because a test_compile did reveal that the linker did not use it for" 771465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** its dynamic dependency list that programs get resolved with at runtime." 771565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 771665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 771765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 771865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 771965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 772065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 772165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 772265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 772365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 772465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Error occurred in the first compile. Let's try to salvage 772565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the situation: Compile a separate program for each library. 772665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $deplibs; do 772765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $i in 772865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 772965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -l '' "$i" 773065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 773165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM conftest 773265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 773365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ldd_output=`ldd conftest` 773465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 773565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps " in 773665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $i "*) 773765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 773865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich i="" 773965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 774065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 774165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 774265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$i" ; then 774365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 774465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 774565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $deplib_matches; shift 774665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplib_match=$1 774765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 774865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 774965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 775065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 775165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 775265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: dynamic linker does not accept needed library $i." 775365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 775465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 775565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which you do not appear to have" 775665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because a test_compile did reveal that the linker did not use this one" 775765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** as a dynamic dependency that programs can get resolved with at runtime." 775865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 775965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 776065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 776165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 776265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 776365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 776465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** make it link in! You will probably need to install it or some" 776565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** library that it depends on before this library will be fully" 776665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** functional. Installing it before continuing would be even better." 776765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 776865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 776965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 777065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $i" 777165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 777265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 777365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 777465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 777565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 777665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file_magic*) 777765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $deplibs_check_method; shift 777865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 777965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for a_deplib in $deplibs; do 778065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $a_deplib in 778165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 778265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -l '' "$a_deplib" 778365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 778465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 778565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps " in 778665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $a_deplib "*) 778765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 778865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich a_deplib="" 778965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 779065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 779165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 779265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$a_deplib" ; then 779365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 779465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$file_magic_glob"; then 779565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 779665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 779765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libnameglob=$libname 779865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 779965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 780065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 780165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$want_nocaseglob" = yes; then 780265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shopt -s nocaseglob 780365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 780465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $nocaseglob 780565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 780665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 780765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 780865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for potent_lib in $potential_libs; do 780965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Follow soft links. 781065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ls -lLd "$potent_lib" 2>/dev/null | 781165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $GREP " -> " >/dev/null; then 781265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 781365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 781465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The statement above tries to avoid entering an 781565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # endless loop below, in case of cyclic links. 781665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We might still enter an endless loop, since a link 781765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # loop can be closed while we follow links, 781865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but so what? 781965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potlib="$potent_lib" 782065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while test -h "$potlib" 2>/dev/null; do 782165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 782265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $potliblink in 782365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 782465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 782565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 782665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 782765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 782865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $SED -e 10q | 782965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $EGREP "$file_magic_regex" > /dev/null; then 783065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 783165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich a_deplib="" 783265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 2 783365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 783465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 783565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 783665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 783765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$a_deplib" ; then 783865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 783965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 784065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 784165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 784265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 784365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which you do not appear to have" 784465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because I did check the linker path looking for a file starting" 784565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$potlib" ; then 784665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 784765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 784865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** with $libname and none of the candidates passed a file format test" 784965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** using a file magic. Last file checked: $potlib" 785065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 785165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 785265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 785365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 785465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add a -L argument. 785565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 785665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 785765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 785865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # Gone through all deplibs. 785965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 786065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich match_pattern*) 786165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $deplibs_check_method; shift 786265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 786365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for a_deplib in $deplibs; do 786465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $a_deplib in 786565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -l*) 786665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -l '' "$a_deplib" 786765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$func_stripname_result 786865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 786965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $predeps $postdeps " in 787065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $a_deplib "*) 787165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 787265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich a_deplib="" 787365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 787465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 787565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 787665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$a_deplib" ; then 787765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 787865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 787965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 788065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for potent_lib in $potential_libs; do 788165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich potlib="$potent_lib" # see symlink-check above in file_magic test 788265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 788365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $EGREP "$match_pattern_regex" > /dev/null; then 788465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 788565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich a_deplib="" 788665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 2 788765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 788865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 788965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 789065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 789165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$a_deplib" ; then 789265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 789365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 789465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 789565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** I have the capability to make that library automatically link in when" 789665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 789765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** shared version of the library, which you do not appear to have" 789865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because I did check the linker path looking for a file starting" 789965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$potlib" ; then 790065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 790165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 790265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** with $libname and none of the candidates passed a file format test" 790365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** using a regex pattern. Last file checked: $potlib" 790465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 790565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 790665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 790765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 790865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add a -L argument. 790965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdeplibs " $a_deplib" 791065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 791165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 791265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done # Gone through all deplibs. 791365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 791465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich none | unknown | *) 791565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdeplibs="" 791665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 791765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 791865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for i in $predeps $postdeps ; do 791965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # can't use Xsed below, because $i might contain '/' 792065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 792165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 792265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 792365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $tmp_deplibs in 792465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[!\ \ ]*) 792565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 792665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$deplibs_check_method" = "Xnone"; then 792765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** Warning: inter-library dependencies are not supported in this platform." 792865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 792965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** Warning: inter-library dependencies are not known to be supported." 793065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 793165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** All declared inter-library dependencies are being dropped." 793265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich droppeddeps=yes 793365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 793465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 793565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 793665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 793765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich versuffix=$versuffix_save 793865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich major=$major_save 793965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich release=$release_save 794065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libname=$libname_save 794165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name=$name_save 794265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 794365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 794465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 794565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # On Rhapsody replace the C library with the System framework 794665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 794765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 794865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 794965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 795065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$droppeddeps" = yes; then 795165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$module" = yes; then 795265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 795365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** Warning: libtool could not satisfy all declared inter-library" 795465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 795565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** a static module, that should work as long as the dlopening" 795665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** application is linked with the -dlopen flag." 795765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$global_symbol_pipe"; then 795865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 795965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** However, this would only work if libtool was able to extract symbol" 796065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 796165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** not find such a program. So, this module is probably useless." 796265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** \`nm' from GNU binutils and a full rebuild may help." 796365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 796465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = no; then 796565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs="$output_objdir/$libname.$libext" 796665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=module 796765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 796865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 796965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 797065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 797165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 797265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** The inter-library dependencies that have been dropped here will be" 797365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** automatically added whenever a program is linked with this library" 797465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** or is declared to -dlopen it." 797565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 797665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$allow_undefined" = no; then 797765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 797865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** Since this library must not contain undefined symbols," 797965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** because either the platform does not support them or" 798065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** it was explicitly requested with -no-undefined," 798165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "*** libtool will only create a static version of it." 798265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_old_libs" = no; then 798365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldlibs="$output_objdir/$libname.$libext" 798465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=module 798565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_old_libs=yes 798665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 798765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 798865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 798965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 799065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 799165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 799265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Done checking deplibs! 799365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs=$newdeplibs 799465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 799565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Time to change all our "foo.ltframework" stuff back to "-framework foo" 799665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 799765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-darwin*) 799865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 799965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 800265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 800365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 800465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # move library search paths that coincide with paths to not yet 800565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # installed libraries to the beginning of the library search list 800665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_libs= 800765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for path in $notinst_path; do 800865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_libs " in 800965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -L$path/$objdir "*) ;; 801065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 801165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $deplibs " in 801265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -L$path/$objdir "*) 801365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append new_libs " -L$path/$objdir" ;; 801465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 801565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 801665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 801765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 801865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $deplibs; do 801965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 802065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 802165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_libs " in 802265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 802365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append new_libs " $deplib" ;; 802465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 802565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 802665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append new_libs " $deplib" ;; 802765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 802865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 802965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$new_libs" 803065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 803165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # All the library-specific variables (install_libdir is set above). 803265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich library_names= 803365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_library= 803465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlname= 803565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 803665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Test again, we may have decided not to build it any more 803765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = yes; then 803865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remove ${wl} instances when linking with ld. 803965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: should test the right _cmds variable. 804065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $archive_cmds in 804165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *\$LD\ *) wl= ;; 804265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 804365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_into_libs" = yes; then 804465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Hardcode the library paths 804565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs= 804665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dep_rpath= 804765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath="$finalize_rpath" 804865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 804965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $rpath; do 805065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 805165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator"; then 805265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot "$libdir" 805365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir=$func_replace_sysroot_result 805465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$hardcode_libdirs"; then 805565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs="$libdir" 805665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 805765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just accumulate the unique libdirs. 805865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 805965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 806065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 806165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 806265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 806365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 806465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 806565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 806665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 806765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 806865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append dep_rpath " $flag" 806965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 807065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$runpath_var"; then 807165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$perm_rpath " in 807265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 807365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append perm_rpath " $libdir" ;; 807465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 807565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 807665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 807765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Substitute the hardcoded libdirs into the rpath. 807865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator" && 807965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$hardcode_libdirs"; then 808065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir="$hardcode_libdirs" 808165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 808265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 808365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$runpath_var" && test -n "$perm_rpath"; then 808465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We should set the runpath_var. 808565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 808665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $perm_rpath; do 808765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rpath "$dir:" 808865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 808965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 809065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 809165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 809265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 809365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 809465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shlibpath="$finalize_shlibpath" 809565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 809665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$shlibpath"; then 809765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 809865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 809965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 810065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Get the real and link names of the library. 810165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval shared_ext=\"$shrext_cmds\" 810265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval library_names=\"$library_names_spec\" 810365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set dummy $library_names 810465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 810565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich realname="$1" 810665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 810765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 810865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$soname_spec"; then 810965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval soname=\"$soname_spec\" 811065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 811165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich soname="$realname" 811265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 811365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$dlname"; then 811465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlname=$soname 811565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 811665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 811765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lib="$output_objdir/$realname" 811865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich linknames= 811965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for link 812065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 812165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linknames " $link" 812265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 812365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 812465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Use standard objects if they are pic 812565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 812665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 812765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 812865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich delfiles= 812965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 813065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 813165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols="$output_objdir/$libname.uexp" 813265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $export_symbols" 813365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 813465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 813565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich orig_export_symbols= 813665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host_os in 813765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cygwin* | mingw* | cegcc*) 813865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 813965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # exporting using user supplied symfile 814065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 814165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and it's NOT already a .def file. Must figure out 814265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # which of the given symbols are data symbols and tag 814365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # them as such. So, trigger use of export_symbols_cmds. 814465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # export_symbols gets reassigned inside the "prepare 814565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the list of exported symbols" if statement, so the 814665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # include_expsyms logic still works. 814765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich orig_export_symbols="$export_symbols" 814865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols= 814965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich always_export_symbols=yes 815065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 815165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 815265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 815365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 815465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 815565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Prepare the list of exported symbols 815665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$export_symbols"; then 815765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 815865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "generating symbol list for \`$libname.la'" 815965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols="$output_objdir/$libname.exp" 816065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $export_symbols 816165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$export_symbols_cmds 816265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS='~' 816365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for cmd1 in $cmds; do 816465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 816565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Take the normal branch if the nm_file_list_spec branch 816665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # doesn't work or if tool conversion is not needed. 816765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $nm_file_list_spec~$to_tool_file_cmd in 816865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 816965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich try_normal_branch=yes 817065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmd=\"$cmd1\" 817165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $cmd" 817265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_len_result 817365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 817465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 817565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich try_normal_branch=no 817665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 817765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 817865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$try_normal_branch" = yes \ 817965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && { test "$len" -lt "$max_cmd_len" \ 818065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich || test "$max_cmd_len" -le -1; } 818165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich then 818265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$cmd" 'exit $?' 818365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich skipped_export=false 818465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$nm_file_list_spec"; then 818565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$output" 818665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_la=$func_basename_result 818765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_libobjs=$libobjs 818865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_output=$output 818965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=${output_objdir}/${output_la}.nm 819065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output" 819165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs=$nm_file_list_spec$func_to_tool_file_result 819265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $output" 819365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating $NM input file list: $output" 819465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_libobjs; do 819565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$obj" 819665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$func_to_tool_file_result" 819765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done > "$output" 819865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmd=\"$cmd1\" 819965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$cmd" 'exit $?' 820065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$save_output 820165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs=$save_libobjs 820265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich skipped_export=false 820365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 820465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The command line is too long to execute in one step. 820565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "using reloadable object file for export list..." 820665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich skipped_export=: 820765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Break out early, otherwise skipped_export may be 820865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # set to false by a later but shorter cmd. 820965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 821065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 821165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 821265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 821365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 821465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 821565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 821665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 821765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 821865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 821965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 822065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 822165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_export_symbols="$export_symbols" 822265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 822365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 822465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 822565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 822665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 822765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The given exports_symbols file has to be filtered, so filter it. 822865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 822965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: $output_objdir/$libname.filter potentially contains lots of 823065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 's' commands which not all seds can handle. GNU sed should be fine 823165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # though. Also, the filter scales superlinearly with the number of 823265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # global variables. join(1) would be nice here, but unfortunately 823365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # isn't a blessed tool. 823465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 823565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $export_symbols $output_objdir/$libname.filter" 823665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols=$output_objdir/$libname.def 823765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 823865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 823965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 824065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_deplibs= 824165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for test_deplib in $deplibs; do 824265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $convenience " in 824365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $test_deplib "*) ;; 824465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 824565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append tmp_deplibs " $test_deplib" 824665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 824765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 824865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 824965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich deplibs="$tmp_deplibs" 825065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 825165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$convenience"; then 825265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$whole_archive_flag_spec" && 825365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$compiler_needs_object" = yes && 825465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libobjs"; then 825565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # extract the archives, so we have objects to list. 825665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # TODO: could optimize this to just extract one archive. 825765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich whole_archive_flag_spec= 825865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 825965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$whole_archive_flag_spec"; then 826065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_libobjs=$libobjs 826165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 826265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 826365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 826465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${outputname}x" 826565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 826665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 826765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives $gentop $convenience 826865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $func_extract_archives_result" 826965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 827065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 827165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 827265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 827365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 827465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval flag=\"$thread_safe_flag_spec\" 827565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append linker_flags " $flag" 827665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 827765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 827865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make a backup of the uninstalled library when relinking 827965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = relink; then 828065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 828165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 828265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 828365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each of the archive commands. 828465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$module" = yes && test -n "$module_cmds" ; then 828565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 828665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$module_expsym_cmds\" 828765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$module_expsym_cmds 828865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 828965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$module_cmds\" 829065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$module_cmds 829165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 829265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 829365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 829465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$archive_expsym_cmds\" 829565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$archive_expsym_cmds 829665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 829765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$archive_cmds\" 829865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$archive_cmds 829965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 830065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 830165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 830265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$skipped_export" != "X:" && 830365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $test_cmds" && 830465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_len_result && 830565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 830665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 830765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 830865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The command line is too long to link in one step, link piecewise 830965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # or, if using GNU ld and skipped_export is not :, use a linker 831065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # script. 831165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 831265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Save the value of $output and $libobjs because we want to 831365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # use them later. If we have whole_archive_flag_spec, we 831465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # want to use save_libobjs as it was before 831565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # whole_archive_flag_spec was expanded, because we can't 831665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # assume the linker understands whole_archive_flag_spec. 831765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This may have to be revisited, in case too many 831865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # convenience libraries get linked in and end up exceeding 831965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the spec. 832065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 832165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_libobjs=$libobjs 832265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 832365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_output=$output 832465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$output" 832565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_la=$func_basename_result 832665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 832765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Clear the reloadable object creation command queue and 832865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # initialize k to one. 832965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test_cmds= 833065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_cmds= 833165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objlist= 833265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich last_robj= 833365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich k=1 833465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 833565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 833665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=${output_objdir}/${output_la}.lnkscript 833765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating GNU ld script: $output" 833865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo 'INPUT (' > $output 833965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_libobjs 834065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 834165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$obj" 834265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$func_to_tool_file_result" >> $output 834365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 834465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo ')' >> $output 834565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $output" 834665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output" 834765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$func_to_tool_file_result 834865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 834965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=${output_objdir}/${output_la}.lnk 835065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating linker input file list: $output" 835165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : > $output 835265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich set x $save_libobjs 835365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 835465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich firstobj= 835565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$compiler_needs_object" = yes; then 835665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich firstobj="$1 " 835765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich shift 835865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 835965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj 836065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 836165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$obj" 836265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$func_to_tool_file_result" >> $output 836365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 836465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $output" 836565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output" 836665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 836765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 836865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$save_libobjs"; then 836965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating reloadable object files..." 837065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$output_objdir/$output_la-${k}.$objext 837165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$reload_cmds\" 837265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $test_cmds" 837365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len0=$func_len_result 837465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$len0 837565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 837665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Loop over the list of objects to be linked. 837765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_libobjs 837865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 837965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $obj" 838065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $len + $func_len_result 838165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_arith_result 838265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$objlist" = X || 838365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$len" -lt "$max_cmd_len"; then 838465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append objlist " $obj" 838565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 838665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The command $test_cmds is almost too long, add a 838765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # command to the queue. 838865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$k" -eq 1 ; then 838965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The first file doesn't have a previous command to add. 839065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_objs=$objlist 839165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"$reload_cmds\" 839265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 839365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # All subsequent reloadable object files will link in 839465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the last one created. 839565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_objs="$objlist $last_robj" 839665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 839765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 839865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich last_robj=$output_objdir/$output_la-${k}.$objext 839965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $k + 1 840065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich k=$func_arith_result 840165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$output_objdir/$output_la-${k}.$objext 840265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objlist=" $obj" 840365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $last_robj" 840465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $len0 + $func_len_result 840565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_arith_result 840665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 840765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 840865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Handle the remaining objects by creating one last 840965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # reloadable object file. All subsequent reloadable object 841065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # files will link in the last one created. 841165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 841265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_objs="$objlist $last_robj" 841365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 841465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$last_robj"; then 841565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 841665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 841765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $output" 841865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 841965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 842065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output= 842165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 842265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 842365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ${skipped_export-false}; then 842465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "generating symbol list for \`$libname.la'" 842565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols="$output_objdir/$libname.exp" 842665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $export_symbols 842765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs=$output 842865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Append the command to create the export file. 842965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 843065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 843165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$last_robj"; then 843265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 843365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 843465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 843565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 843665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$save_libobjs" && 843765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating a temporary reloadable object file: $output" 843865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 843965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Loop through the commands generated above and execute them. 844065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS='~' 844165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for cmd in $concat_cmds; do 844265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 844365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_silent || { 844465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand "$cmd" 844565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "func_echo $func_quote_for_expand_result" 844665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 844765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval "$cmd" || { 844865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_exit=$? 844965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 845065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore the uninstalled library and exit 845165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = relink; then 845265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ( cd "$output_objdir" && \ 845365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM "${realname}T" && \ 845465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV "${realname}U" "$realname" ) 845565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 845665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 845765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $lt_exit 845865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 845965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 846065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 846165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 846265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols_regex" && ${skipped_export-false}; then 846365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 846465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 846565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 846665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 846765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 846865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if ${skipped_export-false}; then 846965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 847065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tmp_export_symbols="$export_symbols" 847165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 847265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 847365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 847465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 847565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$orig_export_symbols"; then 847665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The given exports_symbols file has to be filtered, so filter it. 847765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 847865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: $output_objdir/$libname.filter potentially contains lots of 847965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # 's' commands which not all seds can handle. GNU sed should be fine 848065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # though. Also, the filter scales superlinearly with the number of 848165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # global variables. join(1) would be nice here, but unfortunately 848265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # isn't a blessed tool. 848365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 848465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append delfiles " $export_symbols $output_objdir/$libname.filter" 848565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich export_symbols=$output_objdir/$libname.def 848665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 848765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 848865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 848965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 849065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobjs=$output 849165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore the value of output. 849265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$save_output 849365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 849465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 849565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 849665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 849765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 849865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Expand the library linking commands again to reset the 849965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # value of $libobjs for piecewise linking. 850065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 850165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each of the archive commands. 850265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$module" = yes && test -n "$module_cmds" ; then 850365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 850465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$module_expsym_cmds 850565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 850665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$module_cmds 850765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 850865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 850965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 851065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$archive_expsym_cmds 851165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 851265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$archive_cmds 851365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 851465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 851565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 851665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 851765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$delfiles"; then 851865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Append the command to remove temporary files to $cmds. 851965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmds=\"\$cmds~\$RM $delfiles\" 852065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 852165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 852265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add any objects from preloaded convenience libraries 852365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlprefiles"; then 852465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${outputname}x" 852565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 852665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 852765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives $gentop $dlprefiles 852865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append libobjs " $func_extract_archives_result" 852965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "X$libobjs" = "X " && libobjs= 853065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 853165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 853265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_ifs="$IFS"; IFS='~' 853365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for cmd in $cmds; do 853465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 853565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmd=\"$cmd\" 853665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_silent || { 853765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_expand "$cmd" 853865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval "func_echo $func_quote_for_expand_result" 853965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 854065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval "$cmd" || { 854165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_exit=$? 854265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 854365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore the uninstalled library and exit 854465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = relink; then 854565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ( cd "$output_objdir" && \ 854665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM "${realname}T" && \ 854765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $MV "${realname}U" "$realname" ) 854865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 854965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 855065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $lt_exit 855165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 855265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 855365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich IFS="$save_ifs" 855465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 855565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Restore the uninstalled library and exit 855665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = relink; then 855765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 855865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 855965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$convenience"; then 856065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$whole_archive_flag_spec"; then 856165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '${RM}r "$gentop"' 856265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 856365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 856465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 856565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 856665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 856765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 856865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Create links to the real library. 856965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for linkname in $linknames; do 857065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$realname" != "$linkname"; then 857165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 857265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 857365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 857465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 857565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If -module or -export-dynamic was specified, set the dlname. 857665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$module" = yes || test "$export_dynamic" = yes; then 857765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # On all known operating systems, these are identical. 857865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlname="$soname" 857965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 858065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 858165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 858265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 858365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich obj) 858465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 858565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-dlopen' is ignored for objects" 858665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 858765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 858865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $deplibs" in 858965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *\ -l* | *\ -L*) 859065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-l' and \`-L' are ignored for objects" ;; 859165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 859265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 859365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$rpath" && \ 859465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-rpath' is ignored for objects" 859565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 859665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$xrpath" && \ 859765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-R' is ignored for objects" 859865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 859965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$vinfo" && \ 860065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-version-info' is ignored for objects" 860165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 860265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$release" && \ 860365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-release' is ignored for objects" 860465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 860565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $output in 860665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 860765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$objs$old_deplibs" && \ 860865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "cannot build library object \`$output' from non-libtool objects" 860965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 861065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj=$output 861165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_lo2o "$libobj" 861265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich obj=$func_lo2o_result 861365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 861465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 861565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libobj= 861665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich obj="$output" 861765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 861865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 861965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 862065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the old objects. 862165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $obj $libobj 862265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 862365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Objects from convenience libraries. This assumes 862465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # single-version convenience libraries. Whenever we create 862565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # different ones for PIC/non-PIC, this we'll have to duplicate 862665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the extraction. 862765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_conv_objs= 862865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop= 862965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # reload_cmds runs $LD directly, so let us get rid of 863065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # -Wl from whole_archive_flag_spec and hope we can get by with 863165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # turning comma into space.. 863265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wl= 863365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 863465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$convenience"; then 863565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$whole_archive_flag_spec"; then 863665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 863765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 863865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 863965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${obj}x" 864065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 864165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 864265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives $gentop $convenience 864365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_conv_objs="$reload_objs $func_extract_archives_result" 864465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 864565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 864665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 864765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If we're not building shared, we need to use non_pic_objs 864865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 864965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 865065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Create the old-style object. 865165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 865265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 865365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output="$obj" 865465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$reload_cmds" 'exit $?' 865565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 865665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Exit if we aren't doing a library object file. 865765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$libobj"; then 865865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$gentop"; then 865965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '${RM}r "$gentop"' 866065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 866165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 866265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 866365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 866465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 866565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" != yes; then 866665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$gentop"; then 866765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '${RM}r "$gentop"' 866865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 866965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 867065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Create an invalid libtool object if no PIC, so that we don't 867165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # accidentally link it into a program. 867265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $show "echo timestamp > $libobj" 867365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 867465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 867565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 867665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 867765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$pic_flag" || test "$pic_mode" != default; then 867865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only do commands if we really have different PIC objects. 867965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich reload_objs="$libobjs $reload_conv_objs" 868065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output="$libobj" 868165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$reload_cmds" 'exit $?' 868265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 868365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 868465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$gentop"; then 868565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '${RM}r "$gentop"' 868665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 868765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 868865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 868965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 869065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 869165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich prog) 869265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 869365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin*) func_stripname '' '.exe' "$output" 869465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$func_stripname_result.exe;; 869565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 869665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$vinfo" && \ 869765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-version-info' is ignored for programs" 869865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 869965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$release" && \ 870065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`-release' is ignored for programs" 870165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 870265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$preload" = yes \ 870365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && test "$dlopen_support" = unknown \ 870465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && test "$dlopen_self" = unknown \ 870565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich && test "$dlopen_self_static" = unknown && \ 870665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 870765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 870865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 870965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 871065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # On Rhapsody replace the C library is the System framework 871165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 871265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 871365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 871465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 871565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 871665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 871765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-darwin*) 871865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't allow lazy linking, it breaks C++ global constructors 871965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # But is supposedly fixed on 10.4 or later (yay!). 872065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$tagname" = CXX ; then 872165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 872265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10.[0123]) 872365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " ${wl}-bind_at_load" 872465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " ${wl}-bind_at_load" 872565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 872665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 872765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 872865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Time to change all our "foo.ltframework" stuff back to "-framework foo" 872965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 873265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 873365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 873465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 873565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # move library search paths that coincide with paths to not yet 873665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # installed libraries to the beginning of the library search list 873765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich new_libs= 873865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for path in $notinst_path; do 873965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_libs " in 874065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -L$path/$objdir "*) ;; 874165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 874265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $compile_deplibs " in 874365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" -L$path/$objdir "*) 874465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append new_libs " -L$path/$objdir" ;; 874565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 874665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 874765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 874865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 874965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $compile_deplibs; do 875065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 875165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 875265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $new_libs " in 875365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $deplib "*) ;; 875465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append new_libs " $deplib" ;; 875565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 875665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 875765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append new_libs " $deplib" ;; 875865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 875965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 876065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_deplibs="$new_libs" 876165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 876265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 876365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append compile_command " $compile_deplibs" 876465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append finalize_command " $finalize_deplibs" 876565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 876665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$rpath$xrpath"; then 876765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If the user specified any rpath flags, then add them. 876865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $rpath $xrpath; do 876965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This is the magic to use -rpath. 877065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$finalize_rpath " in 877165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 877265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_rpath " $libdir" ;; 877365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 877465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 877565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 877665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 877765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now hardcode the library paths 877865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 877965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs= 878065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $compile_rpath $finalize_rpath; do 878165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 878265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator"; then 878365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$hardcode_libdirs"; then 878465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs="$libdir" 878565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 878665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just accumulate the unique libdirs. 878765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 878865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 878965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 879065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 879165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 879265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 879365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 879465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 879565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 879665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 879765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rpath " $flag" 879865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 879965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$runpath_var"; then 880065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$perm_rpath " in 880165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 880265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append perm_rpath " $libdir" ;; 880365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 880465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 880565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 880665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 880765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 880865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$dllsearchpath: in 880965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$libdir:"*) ;; 881065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ::) dllsearchpath=$libdir;; 881165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dllsearchpath ":$libdir";; 881265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 881365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case :$dllsearchpath: in 881465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *":$testbindir:"*) ;; 881565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ::) dllsearchpath=$testbindir;; 881665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append dllsearchpath ":$testbindir";; 881765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 881865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 881965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 882065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 882165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Substitute the hardcoded libdirs into the rpath. 882265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator" && 882365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$hardcode_libdirs"; then 882465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir="$hardcode_libdirs" 882565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval rpath=\" $hardcode_libdir_flag_spec\" 882665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 882765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_rpath="$rpath" 882865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 882965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 883065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs= 883165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for libdir in $finalize_rpath; do 883265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 883365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator"; then 883465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$hardcode_libdirs"; then 883565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich hardcode_libdirs="$libdir" 883665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 883765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Just accumulate the unique libdirs. 883865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 883965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 884065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 884165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 884265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 884365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 884465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 884565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 884665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 884765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 884865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rpath " $flag" 884965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 885065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$runpath_var"; then 885165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$finalize_perm_rpath " in 885265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $libdir "*) ;; 885365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append finalize_perm_rpath " $libdir" ;; 885465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 885565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 885665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 885765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Substitute the hardcoded libdirs into the rpath. 885865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$hardcode_libdir_separator" && 885965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$hardcode_libdirs"; then 886065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libdir="$hardcode_libdirs" 886165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval rpath=\" $hardcode_libdir_flag_spec\" 886265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 886365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_rpath="$rpath" 886465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 886565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$libobjs" && test "$build_old_libs" = yes; then 886665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Transform all the library objects into standard objects. 886765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 886865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 886965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 887065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 887165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 887265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 887365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # template prelinking step 887465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$prelink_cmds"; then 887565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$prelink_cmds" 'exit $?' 887665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 887765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 887865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrappers_required=yes 887965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 888065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cegcc* | *mingw32ce*) 888165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 888265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrappers_required=no 888365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 888465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* ) 888565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" != yes; then 888665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrappers_required=no 888765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 888865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 888965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 889065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 889165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich wrappers_required=no 889265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 889365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 889465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 889565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$wrappers_required" = no; then 889665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Replace the output file specification. 889765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 889865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command="$compile_command$compile_rpath" 889965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 890065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We have no uninstalled library dependencies, so finalize right now. 890165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit_status=0 890265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$link_command" 'exit_status=$?' 890365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 890465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$postlink_cmds"; then 890565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output" 890665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 890765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 890865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 890965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 891065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the generated files. 891165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -f "$output_objdir/${outputname}S.${objext}"; then 891265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 891365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 891465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 891565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $exit_status 891665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 891765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 891865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$compile_shlibpath$finalize_shlibpath"; then 891965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 892065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 892165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finalize_shlibpath"; then 892265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 892365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 892465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 892565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_var= 892665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_var= 892765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$runpath_var"; then 892865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$perm_rpath"; then 892965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We should set the runpath_var. 893065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 893165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $perm_rpath; do 893265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rpath "$dir:" 893365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 893465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 893565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 893665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$finalize_perm_rpath"; then 893765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We should set the runpath_var. 893865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rpath= 893965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $finalize_perm_rpath; do 894065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rpath "$dir:" 894165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 894265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 894365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 894465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 894565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 894665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$no_install" = yes; then 894765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # We don't need to create a wrapper script. 894865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 894965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Replace the output file specification. 895065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 895165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the old output file. 895265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $output 895365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Link the executable and exit 895465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$link_command" 'exit $?' 895565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 895665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$postlink_cmds"; then 895765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output" 895865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 895965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 896065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 896165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 896265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 896365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 896465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 896565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_action" = relink; then 896665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Fast installation is not supported 896765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 896865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$finalize_var$finalize_command$finalize_rpath" 896965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 897065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "this platform does not like uninstalled shared libraries" 897165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_warning "\`$output' will be relinked during installation" 897265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 897365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" != no; then 897465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command="$finalize_var$compile_command$finalize_rpath" 897565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" = yes; then 897665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 897765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 897865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # fast_install is set to needless 897965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 898065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 898165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 898265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 898365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$finalize_var$finalize_command$finalize_rpath" 898465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 898565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 898665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 898765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Replace the output file specification. 898865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 898965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 899065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the old output files. 899165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 899265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 899365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$link_command" 'exit $?' 899465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 899565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$postlink_cmds"; then 899665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output_objdir/$outputname" 899765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 899865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 899965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 900065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 900165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now create the wrapper script. 900265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating $output" 900365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 900465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Quote the relink command for shipping. 900565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$relink_command"; then 900665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Preserve any variables that may affect compiler behavior 900765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for var in $variables_saved_for_relink; do 900865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval test -z \"\${$var+set}\"; then 900965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 901065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif eval var_value=\$$var; test -z "$var_value"; then 901165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$var=; export $var; $relink_command" 901265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 901365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$var_value" 901465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 901565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 901665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 901765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="(cd `pwd`; $relink_command)" 901865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 901965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 902065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 902165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only actually do things if not in dry run mode. 902265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 902365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # win32 will think the script is a binary if it has 902465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # a .exe suffix, so we strip it off here. 902565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $output in 902665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe) func_stripname '' '.exe' "$output" 902765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output=$func_stripname_result ;; 902865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 902965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # test for cygwin because mv fails w/o .exe extensions 903065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 903165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin*) 903265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exeext=.exe 903365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$outputname" 903465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich outputname=$func_stripname_result ;; 903565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) exeext= ;; 903665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 903765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host in 903865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin* | *mingw* ) 903965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname_and_basename "$output" "" "." 904065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_name=$func_basename_result 904165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output_path=$func_dirname_result 904265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cwrappersource="$output_path/$objdir/lt-$output_name.c" 904365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cwrapper="$output_path/$output_name.exe" 904465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM $cwrappersource $cwrapper 904565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 904665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 904765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_emit_cwrapperexe_src > $cwrappersource 904865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 904965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # The wrapper executable is built using the $host compiler, 905065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # because it contains $host paths and files. If cross- 905165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # compiling, it, like the target executable, must be 905265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # executed on the $host or under an emulation environment. 905365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 905465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 905565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $STRIP $cwrapper 905665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 905765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 905865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now, create the wrapper script for func_source use: 905965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_scriptname $cwrapper 906065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM $func_ltwrapper_scriptname_result 906165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 906265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 906365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # note: this script will not be executed, so do not chmod. 906465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$build" = "x$host" ; then 906565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 906665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 906765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_emit_wrapper no > $func_ltwrapper_scriptname_result 906865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 906965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 907065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 907165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich * ) 907265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM $output 907365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 907465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 907565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_emit_wrapper no > $output 907665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich chmod +x $output 907765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 907865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 907965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 908065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 908165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 908265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 908365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 908465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # See if we need to build an old-fashioned archive. 908565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for oldlib in $oldlibs; do 908665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 908765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = convenience; then 908865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs="$libobjs_save $symfileobj" 908965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich addlibs="$convenience" 909065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 909165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 909265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$build_libtool_libs" = module; then 909365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs="$libobjs_save" 909465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich build_libtool_libs=no 909565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 909665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs="$old_deplibs $non_pic_objects" 909765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$preload" = yes && test -f "$symfileobj"; then 909865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append oldobjs " $symfileobj" 909965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 910065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 910165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich addlibs="$old_convenience" 910265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 910365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 910465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$addlibs"; then 910565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${outputname}x" 910665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 910765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 910865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives $gentop $addlibs 910965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append oldobjs " $func_extract_archives_result" 911065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 911165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 911265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the archive commands. 911365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 911465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$old_archive_from_new_cmds 911565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 911665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 911765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add any objects from preloaded convenience libraries 911865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$dlprefiles"; then 911965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${outputname}x" 912065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 912165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 912265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_extract_archives $gentop $dlprefiles 912365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append oldobjs " $func_extract_archives_result" 912465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 912565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 912665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # POSIX demands no paths to be encoded in archives. We have 912765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # to avoid creating archives with duplicate basenames if we 912865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # might have to extract them afterwards, e.g., when creating a 912965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # static archive out of a convenience library, or when linking 913065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the entirety of a libtool archive into another (currently 913165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # not supported by libtool). 913265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if (for obj in $oldobjs 913365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 913465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$obj" 913565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$func_basename_result" 913665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done | sort | sort -uc >/dev/null 2>&1); then 913765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 913865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 913965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich echo "copying selected object files to avoid basename conflicts..." 914065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich gentop="$output_objdir/${outputname}x" 914165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append generated " $gentop" 914265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mkdir_p "$gentop" 914365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_oldobjs=$oldobjs 914465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs= 914565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich counter=1 914665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_oldobjs 914765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 914865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$obj" 914965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objbase="$func_basename_result" 915065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $oldobjs " in 915165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich " ") oldobjs=$obj ;; 915265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\ /]"$objbase "*) 915365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich while :; do 915465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Make sure we don't pick an alternate name that also 915565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # overlaps. 915665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newobj=lt$counter-$objbase 915765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $counter + 1 915865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich counter=$func_arith_result 915965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $oldobjs " in 916065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *[\ /]"$newobj "*) ;; 916165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) if test ! -f "$gentop/$newobj"; then break; fi ;; 916265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 916365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 916465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 916565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append oldobjs " $gentop/$newobj" 916665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 916765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append oldobjs " $obj" ;; 916865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 916965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 917065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 917165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 917265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tool_oldlib=$func_to_tool_file_result 917365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmds=\"$old_archive_cmds\" 917465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 917565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $cmds" 917665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_len_result 917765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 917865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$old_archive_cmds 917965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -n "$archiver_list_spec"; then 918065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "using command file archive linking..." 918165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $oldobjs 918265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 918365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$obj" 918465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO "$func_to_tool_file_result" 918565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done > $output_objdir/$libname.libcmd 918665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_to_tool_file "$output_objdir/$libname.libcmd" 918765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs=" $archiver_list_spec$func_to_tool_file_result" 918865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich cmds=$old_archive_cmds 918965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 919065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the command line is too long to link in one step, link in parts 919165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "using piecewise archive linking..." 919265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_RANLIB=$RANLIB 919365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich RANLIB=: 919465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objlist= 919565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich concat_cmds= 919665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich save_oldobjs=$oldobjs 919765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs= 919865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Is there a better way of finding the last object in the list? 919965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_oldobjs 920065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 920165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich last_oldobj=$obj 920265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 920365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval test_cmds=\"$old_archive_cmds\" 920465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $test_cmds" 920565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len0=$func_len_result 920665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$len0 920765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for obj in $save_oldobjs 920865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 920965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_len " $obj" 921065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_arith $len + $func_len_result 921165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$func_arith_result 921265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append objlist " $obj" 921365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$len" -lt "$max_cmd_len"; then 921465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 921565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 921665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the above command should be used before it gets too long 921765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs=$objlist 921865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$obj" = "$last_oldobj" ; then 921965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich RANLIB=$save_RANLIB 922065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 922165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 922265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 922365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich objlist= 922465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich len=$len0 922565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 922665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 922765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich RANLIB=$save_RANLIB 922865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich oldobjs=$objlist 922965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$oldobjs" = "X" ; then 923065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmds=\"\$concat_cmds\" 923165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 923265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 923365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 923465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 923565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 923665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$cmds" 'exit $?' 923765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 923865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 923965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$generated" && \ 924065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "${RM}r$generated" 924165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 924265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Now create the libtool archive. 924365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $output in 924465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 924565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich old_library= 924665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$build_old_libs" = yes && old_library="$libname.$libext" 924765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_verbose "creating $output" 924865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 924965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Preserve any variables that may affect compiler behavior 925065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for var in $variables_saved_for_relink; do 925165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if eval test -z \"\${$var+set}\"; then 925265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 925365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif eval var_value=\$$var; test -z "$var_value"; then 925465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$var=; export $var; $relink_command" 925565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 925665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_quote_for_eval "$var_value" 925765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 925865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 925965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 926065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Quote the link command for shipping. 926165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 926265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 926365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$hardcode_automatic" = yes ; then 926465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 926565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 926665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 926765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only create the output if not a dry run. 926865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_dry_run || { 926965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for installed in no yes; do 927065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$installed" = yes; then 927165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -z "$install_libdir"; then 927265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich break 927365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 927465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich output="$output_objdir/$outputname"i 927565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Replace all uninstalled libtool libraries with the installed ones 927665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdependency_libs= 927765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for deplib in $dependency_libs; do 927865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $deplib in 927965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 928065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$deplib" 928165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 928265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_resolve_sysroot "$deplib" 928365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 928465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 928565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$deplib' is not a valid libtool archive" 928665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 928765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 928865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -L*) 928965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -L '' "$deplib" 929065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot "$func_stripname_result" 929165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdependency_libs " -L$func_replace_sysroot_result" 929265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 929365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -R*) 929465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname -R '' "$deplib" 929565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_replace_sysroot "$func_stripname_result" 929665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdependency_libs " -R$func_replace_sysroot_result" 929765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 929865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append newdependency_libs " $deplib" ;; 929965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 930065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 930165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dependency_libs="$newdependency_libs" 930265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlfiles= 930365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 930465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $dlfiles; do 930565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $lib in 930665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 930765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$lib" 930865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 930965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 931065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 931165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$lib' is not a valid libtool archive" 931265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 931365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 931465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append newdlfiles " $lib" ;; 931565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 931665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 931765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles="$newdlfiles" 931865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlprefiles= 931965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $dlprefiles; do 932065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $lib in 932165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 932265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Only pass preopened files to the pseudo-archive (for 932365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # eventual linking with the app. that links it) if we 932465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # didn't already link the preopened objects directly into 932565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # the library: 932665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$lib" 932765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 932865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 932965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$libdir" && \ 933065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_error "\`$lib' is not a valid libtool archive" 933165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 933265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 933365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 933465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 933565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefiles="$newdlprefiles" 933665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 933765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlfiles= 933865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $dlfiles; do 933965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $lib in 934065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 934165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) abs=`pwd`"/$lib" ;; 934265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 934365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlfiles " $abs" 934465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 934565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlfiles="$newdlfiles" 934665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich newdlprefiles= 934765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for lib in $dlprefiles; do 934865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $lib in 934965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 935065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) abs=`pwd`"/$lib" ;; 935165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 935265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append newdlprefiles " $abs" 935365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 935465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dlprefiles="$newdlprefiles" 935565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 935665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $RM $output 935765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # place dlname in correct position for cygwin 935865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # In fact, it would be nice if we could use this code for all target 935965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # systems that can't hard-code library paths into their executables 936065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # and that have no shared library path variable independent of PATH, 936165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # but it turns out we can't easily determine that from inspecting 936265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # libtool variables, so we have to hard-code the OSs to which it 936365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # applies here; at the moment, that means platforms that use the PE 936465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # object format with DLL files. See the long comment at the top of 936565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # tests/bindir.at for full details. 936665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tdlname=$dlname 936765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $host,$output,$installed,$module,$dlname in 936865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 936965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # If a -bindir argument was supplied, place the dll there. 937065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "x$bindir" != x ; 937165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich then 937265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_relative_path "$install_libdir" "$bindir" 937365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tdlname=$func_relative_path_result$dlname 937465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 937565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Otherwise fall back on heuristic. 937665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich tdlname=../bin/$dlname 937765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 937865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 937965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 938065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO > $output "\ 938165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $outputname - a libtool library file 938265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 938365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 938465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Please DO NOT delete this file! 938565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# It is necessary for linking the library. 938665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 938765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name that we can dlopen(3). 938865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlname='$tdlname' 938965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 939065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Names of this library. 939165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibrary_names='$library_names' 939265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 939365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name of the static archive. 939465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichold_library='$old_library' 939565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 939665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Linker flags that can not go in dependency_libs. 939765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinherited_linker_flags='$new_inherited_linker_flags' 939865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 939965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Libraries that this one depends upon. 940065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdependency_libs='$dependency_libs' 940165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 940265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Names of additional weak libraries provided by this library 940365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichweak_library_names='$weak_libs' 940465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 940565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Version information for $libname. 940665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcurrent=$current 940765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichage=$age 940865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrevision=$revision 940965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 941065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Is this an already installed library? 941165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinstalled=$installed 941265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 941365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Should we warn about portability when linking against -modules? 941465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichshouldnotlink=$module 941565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 941665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Files to dlopen/dlpreopen 941765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlopen='$dlfiles' 941865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlpreopen='$dlprefiles' 941965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 942065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Directory that this library needs to be installed in: 942165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibdir='$install_libdir'" 942265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$installed" = no && test "$need_relink" = yes; then 942365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $ECHO >> $output "\ 942465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrelink_command=\"$relink_command\"" 942565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 942665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 942765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich } 942865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 942965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do a symbolic link so that the libtool archive can be found in 943065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # LD_LIBRARY_PATH before the program is installed. 943165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 943265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 943365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 943465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_SUCCESS 943565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 943665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 943765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 943865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mode_link ${1+"$@"} 943965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 944065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 944165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_uninstall arg... 944265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_uninstall () 944365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ 944465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich $opt_debug 944565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich RM="$nonopt" 944665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich files= 944765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rmforce= 944865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit_status=0 944965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 945065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # This variable tells wrapper scripts just to set variables rather 945165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # than running their programs. 945265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich libtool_install_magic="$magic" 945365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 945465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for arg 945565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich do 945665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $arg in 945765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -f) func_append RM " $arg"; rmforce=yes ;; 945865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich -*) func_append RM " $arg" ;; 945965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append files " $arg" ;; 946065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 946165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 946265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 946365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -z "$RM" && \ 946465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify an RM program" 946565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 946665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rmdirs= 946765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 946865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for file in $files; do 946965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_dirname "$file" "" "." 947065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich dir="$func_dirname_result" 947165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$dir" = X.; then 947265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich odir="$objdir" 947365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 947465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich odir="$dir/$objdir" 947565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 947665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_basename "$file" 947765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich name="$func_basename_result" 947865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$opt_mode" = uninstall && odir="$dir" 947965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 948065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Remember odir for removal later, being careful to avoid duplicates 948165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = clean; then 948265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $rmdirs " in 948365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $odir "*) ;; 948465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) func_append rmdirs " $odir" ;; 948565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 948665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 948765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 948865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Don't error if the file doesn't exist and rm -f was used. 948965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if { test -L "$file"; } >/dev/null 2>&1 || 949065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich { test -h "$file"; } >/dev/null 2>&1 || 949165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -f "$file"; then 949265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich : 949365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test -d "$file"; then 949465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit_status=1 949565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 949665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich elif test "$rmforce" = yes; then 949765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich continue 949865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 949965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 950065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich rmfiles="$file" 950165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 950265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $name in 950365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.la) 950465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Possibly a libtool archive, so verify it. 950565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_p "$file"; then 950665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source $dir/$name 950765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 950865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Delete the libtool libraries and symlinks. 950965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for n in $library_names; do 951065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $odir/$n" 951165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 951265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$old_library" && func_append rmfiles " $odir/$old_library" 951365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 951465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case "$opt_mode" in 951565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich clean) 951665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case " $library_names " in 951765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *" $dlname "*) ;; 951865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 951965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 952065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 952165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 952265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich uninstall) 952365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$library_names"; then 952465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the postuninstall commands. 952565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 952665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 952765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 952865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$old_library"; then 952965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do each command in the old_postuninstall commands. 953065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 953165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 953265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # FIXME: should reinstall the best remaining shared library. 953365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 953465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 953565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 953665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 953765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 953865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.lo) 953965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Possibly a libtool object, so verify it. 954065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_lalib_p "$file"; then 954165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 954265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Read the .lo file 954365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source $dir/$name 954465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 954565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add PIC object to the list of files to remove. 954665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$pic_object" && 954765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$pic_object" != none; then 954865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $dir/$pic_object" 954965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 955065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 955165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Add non-PIC object to the list of files to remove. 955265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$non_pic_object" && 955365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich test "$non_pic_object" != none; then 955465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $dir/$non_pic_object" 955565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 955665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 955765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 955865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 955965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *) 956065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$opt_mode" = clean ; then 956165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich noexename=$name 956265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich case $file in 956365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich *.exe) 956465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$file" 956565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich file=$func_stripname_result 956665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_stripname '' '.exe' "$name" 956765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich noexename=$func_stripname_result 956865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # $file with .exe has already been added to rmfiles, 956965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # add $file without .exe 957065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $file" 957165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 957265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 957365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Do a test to see if this is a libtool program. 957465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_ltwrapper_p "$file"; then 957565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if func_ltwrapper_executable_p "$file"; then 957665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_ltwrapper_scriptname "$file" 957765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 957865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source $func_ltwrapper_scriptname_result 957965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $func_ltwrapper_scriptname_result" 958065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich else 958165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich relink_command= 958265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_source $dir/$noexename 958365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 958465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 958565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # note $name still contains .exe if it was in $file originally 958665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # as does the version of $file that was added into $rmfiles 958765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 958865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "$fast_install" = yes && test -n "$relink_command"; then 958965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $odir/lt-$name" 959065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 959165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test "X$noexename" != "X$name" ; then 959265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_append rmfiles " $odir/lt-${noexename}.c" 959365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 959465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 959565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 959665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ;; 959765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich esac 959865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "$RM $rmfiles" 'exit_status=1' 959965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 960065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 960165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich # Try to remove the ${objdir}s in the directories where we deleted files 960265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich for dir in $rmdirs; do 960365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -d "$dir"; then 960465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_show_eval "rmdir $dir >/dev/null 2>&1" 960565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi 960665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich done 960765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 960865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $exit_status 960965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 961065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 961165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 961265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_mode_uninstall ${1+"$@"} 961365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 961465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest -z "$opt_mode" && { 961565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich help="$generic_help" 961665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "you must specify a MODE" 961765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} 961865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 961965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest -z "$exec_cmd" && \ 962065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich func_fatal_help "invalid operation mode \`$opt_mode'" 962165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 962265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n "$exec_cmd"; then 962365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich eval exec "$exec_cmd" 962465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich exit $EXIT_FAILURE 962565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi 962665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 962765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit $exit_status 962865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 962965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 963065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The TAGs below are defined such that we never get into a situation 963165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in which we disable both kinds of libraries. Given conflicting 963265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# choices, we go for a static library, that is the most portable, 963365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# since we can't tell whether shared libraries were disabled because 963465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the user asked for that or because the platform doesn't support 963565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# them. This is particularly important on AIX, because we don't 963665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# support having both static and shared libraries enabled at the same 963765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time on that platform, so we default to a shared-only configuration. 963865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If a disable-shared tag is given, we'll fallback to a static-only 963965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# configuration. But we'll never go from static-only to shared-only. 964065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 964165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 964265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_libtool_libs=no 964365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_old_libs=yes 964465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-shared 964565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 964665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-static 964765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 964865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-static 964965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 965065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Local Variables: 965165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# mode:shell-script 965265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# sh-indentation:2 965365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# End: 965465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# vi:sw=2 965565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 9656