1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# libtool (GNU libtool) 2.4.2 3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This is free software; see the source for copying conditions. There is NO 8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is free software; you can redistribute it and/or modify 11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it under the terms of the GNU General Public License as published by 12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the Free Software Foundation; either version 2 of the License, or 13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# (at your option) any later version. 14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a special exception to the GNU General Public License, 16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if you distribute this file as part of a program or library that 17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is built using GNU Libtool, you may include this file under the 18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# same distribution terms that you use for the rest of that program. 19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is distributed in the hope that it will be useful, but 21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# WITHOUT ANY WARRANTY; without even the implied warranty of 22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# General Public License for more details. 24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# You should have received a copy of the GNU General Public License 26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# along with GNU Libtool; see the file COPYING. If not, a copy 27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# or obtained by writing to the Free Software Foundation, Inc., 29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Usage: $progname [OPTION]... [MODE-ARG]... 32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Provide generalized library-building support services. 34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 3564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --config show all configuration variables 3664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --debug enable verbose shell tracing 3764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# -n, --dry-run display commands without modifying any files 3864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --features display basic configuration information and exit 3964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --mode=MODE use operation mode MODE 4064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --preserve-dup-deps don't remove duplicate dependency libraries 4164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --quiet, --silent don't print informational messages 4264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --no-quiet, --no-silent 4364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# print informational messages (default) 4464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --no-warn don't display warning messages 4564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --tag=TAG use configuration variables from tag TAG 4664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# -v, --verbose print more informational messages than default 4764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --no-verbose don't print the extra informational messages 4864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --version print version information 4964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# -h, --help, --help-all print short, long, or detailed help message 50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MODE must be one of the following: 52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 5364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# clean remove files from the build directory 5464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# compile compile a source file into a libtool object 5564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# execute automatically set library path, then run a program 5664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# finish complete the installation of libtool libraries 5764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# install install libraries or executables 5864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# link create a library or an executable 5964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# uninstall remove libraries from an installed directory 60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 6164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# MODE-ARGS vary depending on the MODE. When passed as first option, 6264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# When reporting a bug, please describe a test case to reproduce it and 66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include the following information: 67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 6864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# host-triplet: $host 6964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# shell: $SHELL 7064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# compiler: $LTCC 7164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# compiler flags: $LTCFLAGS 7264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# linker: $LD (gnu? $with_gnu_ld) 7364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 7464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# automake: $automake_version 7564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# autoconf: $autoconf_version 76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Report bugs to <bug-libtool@gnu.org>. 7864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 7964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# General help using GNU software: <http://www.gnu.org/gethelp/>. 80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8164d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciPROGRAM=libtool 82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavillePACKAGE=libtool 8364d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciVERSION="2.4.2 Debian-2.4.2-1ubuntu1" 84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTIMESTAMP="" 8564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipackage_revision=1.3337 86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible 88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville emulate sh 90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville NULLCMD=: 91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is contrary to our usage. Disable this feature. 93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alias -g '${1+"$@"}'='"$@"' 94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville setopt NO_GLOB_SUBST 95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64 99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh 100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 10164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function that is used when there is no print builtin or printf. 10264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_fallback_echo () 10364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 10464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval 'cat <<_LTECHO_EOF 10564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci$1 10664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci_LTECHO_EOF' 10764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 10864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# NLS nuisances: We save the old values to restore during execute mode. 110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_user_locale= 111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_safe_locale= 112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledo 114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "if test \"\${$lt_var+set}\" = set; then 115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_$lt_var=\$$lt_var 116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_var=C 117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export $lt_var 118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledone 12264d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLC_ALL=C 12364d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLANGUAGE=C 12464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexport LANGUAGE LC_ALL 125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$lt_unset CDPATH 127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 12964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 13064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# is ksh but when the shell is invoked as "sh" and the current value of 13164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the _XPG environment variable is not equal to 1 (one), the special 13264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# positional parameter $0, within a function call, is the name of the 13364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# function. 13464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciprogpath="$0" 135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${CP="cp -f"} 13964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MAKE="make"} 141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MKDIR="mkdir"} 142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MV="mv -f"} 143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${RM="rm -f"} 144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${Xsed="$SED -e 1s/^X//"} 146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables: 148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SUCCESS=0 149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_FAILURE=1 150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit_status=$EXIT_SUCCESS 154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure IFS has a sensible default 156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_nl=' 157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville' 158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIFS=" $lt_nl" 159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirname="s,/[^/]*$,," 161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebasename="s,^.*/,," 162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 16364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_dirname file append nondir_replacement 16464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Compute the dirname of FILE. If nonempty, add APPEND to the result, 16564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# otherwise set result to NONDIR_REPLACEMENT. 16664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_dirname () 16764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 16864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 16964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "X$func_dirname_result" = "X${1}"; then 17064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result="${3}" 17164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 17264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result="$func_dirname_result${2}" 17364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 17464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_dirname may be replaced by extended shell implementation 17564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 17664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 17764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_basename file 17864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_basename () 17964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 18064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename_result=`$ECHO "${1}" | $SED "$basename"` 18164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_basename may be replaced by extended shell implementation 18264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 18364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_dirname_and_basename file append nondir_replacement 185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# perform func_basename and func_dirname in a single function 186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# call: 187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# dirname: Compute the dirname of FILE. If nonempty, 188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# add APPEND to the result, otherwise set result 189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# to NONDIR_REPLACEMENT. 190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# value returned in "$func_dirname_result" 191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# basename: Compute filename of FILE. 192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# value retuned in "$func_basename_result" 193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Implementation must be kept synchronized with func_dirname 194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# and func_basename. For efficiency, we do not delegate to 195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# those functions but instead duplicate the functionality here. 196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename () 197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 19864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Extract subdirectory from the argument. 19964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 20064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "X$func_dirname_result" = "X${1}"; then 20164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result="${3}" 20264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 20364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_result="$func_dirname_result${2}" 20464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 20564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 20664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_dirname_and_basename may be replaced by extended shell implementation 20764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 20864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 20964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_stripname prefix suffix name 21064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# strip PREFIX and SUFFIX off of NAME. 21164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# PREFIX and SUFFIX must not contain globbing or regex special 21264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# characters, hashes, percent signs, but SUFFIX may contain a leading 21364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# dot (in which case that matches only a dot). 21464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_strip_suffix prefix name 21564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_stripname () 21664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 21764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case ${2} in 21864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 21964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 22064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 22164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_stripname may be replaced by extended shell implementation 22264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 22364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 22464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# These SED scripts presuppose an absolute path with a trailing slash. 22564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipathcar='s,^/\([^/]*\).*$,\1,' 22664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipathcdr='s,^/[^/]*,,' 22764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciremovedotparts=':dotsl 22864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s@/\./@/@g 22964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci t dotsl 23064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s,/\.$,/,' 23164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicollapseslashes='s@/\{1,\}@/@g' 23264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifinalslash='s,/*$,/,' 23364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 23464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_normal_abspath PATH 23564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Remove doubled-up and trailing slashes, "." path components, 23664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and cancel out any ".." path components in PATH after making 23764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# it an absolute path. 23864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# value returned in "$func_normal_abspath_result" 23964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_normal_abspath () 24064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 24164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Start from root dir and reassemble the path. 24264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result= 24364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_tpath=$1 24464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_altnamespace= 24564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $func_normal_abspath_tpath in 24664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "") 24764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Empty path, that just means $cwd. 24864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '' '/' "`pwd`" 24964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result=$func_stripname_result 25064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return 25164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 25264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # The next three entries are used to spot a run of precisely 25364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # two leading slashes without using negated character classes; 25464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # we take advantage of case's first-match behaviour. 25564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ///*) 25664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Unusual form of absolute path, do nothing. 25764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 25864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci //*) 25964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Not necessarily an ordinary path; POSIX reserves leading '//' 26064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # and for example Cygwin uses it to access remote file shares 26164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # over CIFS/SMB, so we conserve a leading double slash if found. 26264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_altnamespace=/ 26364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 26464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /*) 26564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Absolute path, do nothing. 26664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 26764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 26864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Relative path, prepend $cwd. 26964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 27064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 27164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 27264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Cancel out all the simple stuff to save iterations. We also want 27364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # the path to end with a slash for ease of parsing, so make sure 27464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # there is one (and only one) here. 27564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 27664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 27764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while :; do 27864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Processed it all yet? 27964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$func_normal_abspath_tpath" = / ; then 28064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # If we ascended to the root using ".." the result may be empty now. 28164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$func_normal_abspath_result" ; then 28264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result=/ 28364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 28464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci break 28564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 28664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -e "$pathcar"` 28864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -e "$pathcdr"` 29064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Figure out what to do with it 29164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $func_normal_abspath_tcomponent in 29264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "") 29364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Trailing empty path component, ignore it. 29464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 29564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ..) 29664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Parent dir; strip last assembled component from result. 29764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname "$func_normal_abspath_result" 29864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result=$func_dirname_result 29964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 30064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 30164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Actual path component, append it. 30264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 30364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 30464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 30564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 30664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Restore leading double-slash if one was found on entry. 30764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 31064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_relative_path SRCDIR DSTDIR 31164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# generates a relative path from SRCDIR to DSTDIR, with a trailing 31264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# slash if non-empty, suitable for immediately appending a filename 31364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# without needing to append a separator. 31464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# value returned in "$func_relative_path_result" 31564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_relative_path () 31664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 31764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result= 31864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath "$1" 31964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tlibdir=$func_normal_abspath_result 32064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_normal_abspath "$2" 32164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tbindir=$func_normal_abspath_result 32264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 32364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Ascend the tree starting from libdir 32464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while :; do 32564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # check if we have found a prefix of bindir 32664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $func_relative_path_tbindir in 32764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $func_relative_path_tlibdir) 32864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # found an exact match 32964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tcancelled= 33064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci break 33164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 33264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $func_relative_path_tlibdir*) 33364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # found a matching prefix 33464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 33564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tcancelled=$func_stripname_result 33664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$func_relative_path_result"; then 33764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=. 33864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 33964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci break 34064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 34164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 34264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname $func_relative_path_tlibdir 34364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tlibdir=${func_dirname_result} 34464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "x$func_relative_path_tlibdir" = x ; then 34564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Have to descend all the way to the root! 34664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=../$func_relative_path_result 34764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_tcancelled=$func_relative_path_tbindir 34864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci break 34964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 35064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=../$func_relative_path_result 35164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 35264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 35364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 35564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Now calculate path; take care to avoid doubling-up slashes. 35664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '' '/' "$func_relative_path_result" 35764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=$func_stripname_result 35864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '/' '/' "$func_relative_path_tcancelled" 35964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "x$func_stripname_result" != x ; then 36064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 36164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 36264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 36364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Normalisation. If bindir is libdir, return empty string, 36464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # else relative path ending with a slash; either way, target 36564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # file name can be directly appended. 36664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test ! -z "$func_relative_path_result"; then 36764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname './' '' "$func_relative_path_result/" 36864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path_result=$func_stripname_result 36964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 37064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of this program: 373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename "$progpath" 374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprogname=$func_basename_result 375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure we have an absolute path for reexecution: 377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecase $progpath in 378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*|[A-Za-z]:\\*) ;; 379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\/]*) 380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=$func_dirname_result 381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=`cd "$progdir" && pwd` 382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progpath="$progdir/$progname" 383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_IFS="$IFS" 38664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci IFS=${PATH_SEPARATOR-:} 387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for progdir in $PATH; do 388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_IFS" 389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -x "$progdir/$progname" && break 390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_IFS" 392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$progdir" || progdir=`pwd` 393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progpath="$progdir/$progname" 394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleesac 396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting. It backslashifies 398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings. 399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleXsed="${SED}"' -e 1s/^X//' 400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Same as above, but do not quote variable references. 403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 40564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Sed substitution that turns a string into a regex matching for the 40664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# string literally. 40764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcised_make_literal_regex='s,[].[^$\\*\/],\\&,g' 40864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 40964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Sed substitution that converts a w32 file name or path 41064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# which contains forward slashes, into one that contains 41164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (escaped) backslashes. A very naive implementation. 41264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 41364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Re-`\' parameter expansions in output of double_quote_subst that were 415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in input to double_quote_subst, that '$' was protected from expansion. 417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Since each input `\' is now two `\'s, look for any number of runs of 418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs='\\' 420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs2='\\\\' 421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs4='\\\\\\\\' 422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledollar='\$' 423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_double_backslash="\ 424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/$bs4/&\\ 425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/g 426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^$bs2$dollar/$bs&/ 427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\n//g" 429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Standard options: 431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_dry_run=false 432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_help=false 433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_quiet=false 434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_verbose=false 435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_warning=: 436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_echo arg... 438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message, along with the current mode 439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# name if it has been set yet. 440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_echo () 441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 44264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_verbose arg... 446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message in verbose mode only. 447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_verbose () 448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_verbose && func_echo ${1+"$@"} 450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A bug in bash halts the script if the last line of a function 452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # fails when set -e is in force, so we need another command to 453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # work around that: 454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 45764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_echo_all arg... 45864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoke $ECHO with all args, space-separated. 45964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_echo_all () 46064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 46164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$*" 46264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 46364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_error arg... 465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error. 466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_error () 467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 46864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_warning arg... 472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed warning message to standard error. 473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_warning () 474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 47564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bash bug again: 478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_error arg... 482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, and exit. 483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_error () 484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_help arg... 490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by 491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a help hint, and exit. 492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_help () 493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "$help" 496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillehelp="Try \`$progname --help' for more information." ## default 498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_grep expression filename 501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Check whether EXPRESSION matches any line of FILENAME, without output. 502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_grep () 503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP "$1" "$2" >/dev/null 2>&1 505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mkdir_p directory-path 509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure the entire path to DIRECTORY-PATH is available. 510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mkdir_p () 511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_directory_path="$1" 513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dir_list= 514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Protect directory names starting with `-' 518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_directory_path in 519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) my_directory_path="./$my_directory_path" ;; 520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # While some portion of DIR does not yet exist... 523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test ! -d "$my_directory_path"; do 524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ...make a list in topmost first order. Use a colon delimited 525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # list incase some portion of path contains whitespace. 526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dir_list="$my_directory_path:$my_dir_list" 527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the last portion added has no slash in it, the list is done 529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_directory_path in */*) ;; *) break ;; esac 530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ...otherwise throw away the child directory and loop 53264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 53464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_mkdir_p_IFS="$IFS"; IFS=':' 537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for my_dir in $my_dir_list; do 538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_mkdir_p_IFS" 539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # mkdir can fail with a `File exist' error if two processes 540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # try to create one of the directories concurrently. Don't 541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # stop in that case! 542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR "$my_dir" 2>/dev/null || : 543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_mkdir_p_IFS" 545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Bail out if we (or some other process) failed to create a directory. 547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$my_directory_path" || \ 548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "Failed to create \`$1'" 549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mktempdir [string] 554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make a temporary directory that won't clash with other running 555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libtool processes, and avoids race conditions if possible. If 556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# given, STRING is the basename for that directory. 557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mktempdir () 558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_template="${TMPDIR-/tmp}/${1-$progname}" 560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$opt_dry_run" = ":"; then 562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Return a directory name, but don't create it in dry-run mode 563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir="${my_template}-$$" 564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If mktemp works, use that first and foremost 567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -d "$my_tmpdir"; then 570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Failing that, at least try and use $RANDOM to avoid a race 571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_tmpdir="${my_template}-${RANDOM-0}$$" 572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_mktempdir_umask=`umask` 574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville umask 0077 575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR "$my_tmpdir" 576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville umask $save_mktempdir_umask 577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If we're not in dry-run mode, bomb out on failure 580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$my_tmpdir" || \ 581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 58464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$my_tmpdir" 585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_eval arg 589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later. 590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is double-quoted, suitable for a subsequent eval, whereas 592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# which are still active within double quotes backslashified. 594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_eval () 595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\`\"\$]*) 59864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_unquoted_result="$1" ;; 601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $func_quote_for_eval_unquoted_result in 604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing shell metacharacters to delay 605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # word splitting, command substitution and and variable 606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # expansion for a subsequent eval. 607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Many Bourne shells cannot handle close brackets correctly 608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # in scan sets, so we specify it separately. 609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_expand arg 619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later; same as above, 620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# but do not quote variable references. 621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_expand () 622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\\\`\"]*) 62564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_arg=`$ECHO "$1" | $SED \ 626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_arg="$1" ;; 629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_arg in 632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing shell metacharacters to delay 633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # word splitting and command substitution for a subsequent eval. 634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Many Bourne shells cannot handle close brackets correctly 635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # in scan sets, so we specify it separately. 636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_arg="\"$my_arg\"" 638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand_result="$my_arg" 642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval cmd [fail_exp] 646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it. 649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval () 650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_cmd="$1" 652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_fail_exp="${2-:}" 653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${opt_silent-false} || { 655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$my_cmd" 656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${opt_dry_run-false}; then :; else 660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$my_cmd" 661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_status=$? 662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$my_status" -eq 0; then :; else 663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "(exit $my_status); $my_fail_exp" 664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval_locale cmd [fail_exp] 670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it. Use the saved locale for evaluation. 673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval_locale () 674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_cmd="$1" 676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_fail_exp="${2-:}" 677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${opt_silent-false} || { 679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$my_cmd" 680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${opt_dry_run-false}; then :; else 684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$lt_user_locale 685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $my_cmd" 686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_status=$? 687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$lt_safe_locale" 688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$my_status" -eq 0; then :; else 689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "(exit $my_status); $my_fail_exp" 690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 69464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_tr_sh 69564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Turn $1 into a string suitable for a shell variable name. 69664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is stored in $func_tr_sh_result. All characters 69764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 69864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# if $1 begins with a digit, a '_' is prepended as well. 69964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_tr_sh () 70064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 70164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $1 in 70264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci [0-9]* | *[!a-zA-Z0-9_]*) 70364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 70464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 70564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * ) 70664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_tr_sh_result=$1 70764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 70864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 70964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_version 713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo version message to standard output and exit. 714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_version () 715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 71664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 71764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 71864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -n '/(C)/!b go 71964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci :more 72064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /\./!{ 72164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci N 72264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/\n# / / 72364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci b more 72464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 72564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci :go 72664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^# '$PROGRAM' (GNU /,/# warranty; / { 727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }' < "$progpath" 732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_usage 736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo short help message to standard output and exit. 737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_usage () 738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 73964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 74064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 74164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -n '/^# Usage:/,/^# *.*--help/ { 742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$progname/'$progname'/ 745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }' < "$progpath" 74764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "run \`$progname --help | more' for full usage" 749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 75264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_help [NOEXIT] 75364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Echo long help message to standard output and exit, 75464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# unless 'noexit' is passed as argument. 755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_help () 756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 75764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 75864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n '/^# Usage:/,/# Report bugs to/ { 76064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci :print 761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# // 762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/^# *$// 763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$progname*'$progname'* 764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$host*'"$host"'* 765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$SHELL*'"$SHELL"'* 766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LTCC*'"$LTCC"'* 767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LTCFLAGS*'"$LTCFLAGS"'* 768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s*\$LD*'"$LD"'* 769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s/\$with_gnu_ld/'"$with_gnu_ld"'/ 77064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 77164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 77364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci d 77464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 77564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^# .* home page:/b print 77664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^# General help using/b print 77764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ' < "$progpath" 77864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ret=$? 77964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$1"; then 78064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit $ret 78164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_missing_arg argname 785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error and set global 786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# exit_cmd. 787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_missing_arg () 788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 78964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 79064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 79164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "missing argument for $1." 792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_cmd=exit 793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 79664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_split_short_opt shortopt 79764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Set func_split_short_opt_name and func_split_short_opt_arg shell 79864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# variables after splitting SHORTOPT after the 2nd character. 79964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_split_short_opt () 80064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 80164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_sed_short_opt='1s/^\(..\).*$/\1/;q' 80264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 80464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 80564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 80664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_split_short_opt may be replaced by extended shell implementation 80764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 80864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 80964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_split_long_opt longopt 81064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Set func_split_long_opt_name and func_split_long_opt_arg shell 81164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# variables after splitting LONGOPT at the `=' sign. 81264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_split_long_opt () 81364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 81464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 81564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_sed_long_arg='1s/^--[^=]*=//' 81664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 81764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 81864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 81964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_split_long_opt may be replaced by extended shell implementation 82064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 82164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexit_cmd=: 822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic="%%%MAGIC variable%%%" 828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic_exe="%%%MAGIC EXE variable%%%" 829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables. 831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenonopt= 832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepreserve_args= 833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelo2o="s/\\.lo\$/.${objext}/" 834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleo2lo="s/\\.${objext}\$/.lo/" 835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_archives= 836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_serial=0 837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If this variable is set in any of the actions, the command in it 839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will be execed at the end. This prevents here-documents from being 840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# left over by shells. 841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexec_cmd= 842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 84364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_append var value 84464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Append VALUE to the end of shell variable VAR. 84564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append () 84664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 84764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "${1}=\$${1}\${2}" 84864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_append may be replaced by extended shell implementation 84964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 85064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_append_quoted var value 85164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Quote VALUE and append to the end of shell variable VAR, separated 85264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# by a space. 85364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append_quoted () 85464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 85564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_quote_for_eval "${2}" 85664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 85764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_append_quoted may be replaced by extended shell implementation 85864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 85964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 86064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_arith arithmetic-term... 86164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_arith () 86264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 86364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_arith_result=`expr "${@}"` 86464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_arith may be replaced by extended shell implementation 86564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 86664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 86764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_len string 86864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# STRING may not start with a hyphen. 86964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_len () 87064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 87164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 87264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_len may be replaced by extended shell implementation 87364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 87464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 87564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_lo2o object 87664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_lo2o () 87764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 87864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 87964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_lo2o may be replaced by extended shell implementation 88064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 88164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 88264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_xform libobj-or-source 88364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_xform () 88464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 88564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 88664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_xform may be replaced by extended shell implementation 88764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 88864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_configuration arg... 890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by 891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a configuration failure hint, and exit. 892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_configuration () 893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error ${1+"$@"} 895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "See the $PACKAGE documentation for more information." 896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "Fatal configuration error." 897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_config 901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the configuration for all the tags in this script. 902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_config () 903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_begincf='^# ### BEGIN LIBTOOL' 905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_endcf='^# ### END LIBTOOL' 906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Default configuration. 908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now print the configurations for the tags. 911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tagname in $taglist; do 912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_features 919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the features supported by this script. 920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_features () 921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 92264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "host: $host" 923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 92464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "enable shared libraries" 925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 92664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "disable shared libraries" 927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 92964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "enable static libraries" 930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 93164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "disable static libraries" 932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $? 935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_enable_tag tagname 938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Verify that TAGNAME is valid, and either flag an error and exit, or 939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable here. 941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_enable_tag () 942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Global variable: 944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tagname="$1" 945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sed_extractcf="/$re_begincf/,/$re_endcf/p" 949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Validate tagname. 951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $tagname in 952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[!-_A-Za-z0-9,/]*) 953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "invalid tag name: $tagname" 954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't test for the "default" C tag, as we know it's 958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # there but not specially marked. 959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $tagname in 960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC) ;; 961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville taglist="$taglist $tagname" 964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Evaluate the configuration. Be careful to quote the path 966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and the sed script, to avoid splitting on whitespace, but 967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # also don't use non-portable quotes within backquotes within 968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # quotes we have to do it in 2 steps: 969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$extractedcf" 971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "ignoring unknown tag $tagname" 973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_check_version_match 979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Ensure that we are using m4 macros, and libtool script from the same 980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# release of libtool. 981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_check_version_match () 982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$package_revision" != "$macro_revision"; then 984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$VERSION" != "$macro_version"; then 985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$macro_version"; then 986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from an older release. 989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again. 991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again. 998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 1001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat >&2 <<_LT_EOF 1002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: of $PACKAGE $VERSION and run autoconf again. 1006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF 1007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_MISMATCH 1010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 101464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Shorthand for --mode=foo, only valid as the first argument 101564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicase $1 in 101664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciclean|clea|cle|cl) 101764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode clean ${1+"$@"}; shift 101864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 101964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicompile|compil|compi|comp|com|co|c) 102064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode compile ${1+"$@"}; shift 102164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 102264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexecute|execut|execu|exec|exe|ex|e) 102364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode execute ${1+"$@"}; shift 102464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 102564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifinish|finis|fini|fin|fi|f) 102664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode finish ${1+"$@"}; shift 102764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 102864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciinstall|instal|insta|inst|ins|in|i) 102964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode install ${1+"$@"}; shift 103064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 103164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilink|lin|li|l) 103264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode link ${1+"$@"}; shift 103364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 103464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 103564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift; set dummy --mode uninstall ${1+"$@"}; shift 103664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 103764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciesac 1038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 104164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Option defaults: 104264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_debug=: 104364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_dry_run=false 104464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_config=false 104564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_preserve_dup_deps=false 104664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_features=false 104764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_finish=false 104864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help=false 104964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help_all=false 105064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=: 105164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_warning=: 105264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_verbose=: 105364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=false 105464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_verbose=false 105564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 105664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 105764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Parse options once, thoroughly. This comes as soon as possible in the 105864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# script to make things like `--version' happen as quickly as we can. 105964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 106064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # this just eases exit handling 106164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while test $# -gt 0; do 106264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt="$1" 106364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 106464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $opt in 106564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --debug|-x) opt_debug='set -x' 106664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_echo "enabling shell trace mode" 106764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 106864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 106964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --dry-run|--dryrun|-n) 107064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_dry_run=: 107164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 107264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --config) 107364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_config=: 107464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_config 107564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 107664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --dlopen|-dlopen) 107764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci optarg="$1" 107864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_dlopen="${opt_dlopen+$opt_dlopen 107964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}$optarg" 108064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 108164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 108264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --preserve-dup-deps) 108364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_preserve_dup_deps=: 108464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 108564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --features) 108664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_features=: 108764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_features 108864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 108964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --finish) 109064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_finish=: 109164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciset dummy --mode finish ${1+"$@"}; shift 109264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 109364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --help) 109464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_help=: 109564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 109664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --help-all) 109764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_help_all=: 109864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help=': help-all' 109964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 110064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --mode) 110164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test $# = 0 && func_missing_arg $opt && break 110264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci optarg="$1" 110364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_mode="$optarg" 110464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicase $optarg in 110564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Valid mode arguments: 110664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci clean|compile|execute|finish|install|link|relink|uninstall) ;; 110764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 110864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Catch anything else as an error 110964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_error "invalid argument for $opt" 111064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit_cmd=exit 111164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci break 111264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 111364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciesac 111464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 111564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 111664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --no-silent|--no-quiet) 111764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_silent=false 111864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt" 111964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 112064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --no-warning|--no-warn) 112164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_warning=false 112264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt" 112364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 112464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --no-verbose) 112564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_verbose=false 112664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt" 112764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 112864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --silent|--quiet) 112964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_silent=: 113064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt" 113164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_verbose=false 113264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 113364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --verbose|-v) 113464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_verbose=: 113564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt" 113664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=false 113764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 113864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --tag) 113964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test $# = 0 && func_missing_arg $opt && break 114064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci optarg="$1" 114164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_tag="$optarg" 114264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt $optarg" 114364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_enable_tag "$optarg" 114464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 114564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 114664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 114764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -\?|-h) func_usage ;; 114864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --help) func_help ;; 114964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --version) func_version ;; 1150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 115164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Separate optargs to long options: 115264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --*=*) 115364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_long_opt "$opt" 115464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 115564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 115664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 1157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 115864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Separate non-argument short options: 115964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -\?*|-h*|-n*|-v*) 116064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_split_short_opt "$opt" 116164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 116264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 116364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 1164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 116564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --) break ;; 116664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -*) func_fatal_help "unrecognized option \`$opt'" ;; 116764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) set dummy "$opt" ${1+"$@"}; shift; break ;; 116864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 116964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 1170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 117164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Validate options: 117264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 117364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # save first non-option argument 117464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$#" -gt 0; then 117564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonopt="$opt" 117664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 1177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 117964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # preserve --debug 118064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$opt_debug" = : || func_append preserve_args " --debug" 118164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 118264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $host in 118364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *pw32* | *cegcc*) 118464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # don't eliminate duplications in $postdeps and $predeps 118564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_duplicate_compiler_generated_deps=: 118664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 118764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 118864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 118964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 119064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 119164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 119264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_help || { 119364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Sanity checks first: 119464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_check_version_match 119564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 119664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 119764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_configuration "not configured to build any kind of library" 119864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 119964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 120064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Darwin sucks 120164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval std_shrext=\"$shrext_cmds\" 120264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 120364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Only execute mode is allowed to have -dlopen flags. 120464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 120564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "unrecognized option \`-dlopen'" 120664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$help" 1>&2 120764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit $EXIT_FAILURE 120864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 120964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 121064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Change the help message to a mode-specific one. 121164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci generic_help="$help" 121264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci help="Try \`$progname --help --mode=$opt_mode' for more information." 121364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 121464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 121564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 121664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Bail if the options were screwed 121764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $exit_cmd $EXIT_FAILURE 1218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 122164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 122264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 122364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci## ----------- ## 122464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci## Main. ## 122564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci## ----------- ## 122664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 1227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_p file 1228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file. 1229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 1230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 1231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_p () 1232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 123364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -f "$1" && 123464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e 4q "$1" 2>/dev/null \ 123564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_unsafe_p file 1239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file. 1240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function implements the same check as func_lalib_p without 1241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# resorting to external programs. To this end, it redirects stdin and 1242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# closes it afterwards, without saving the original file descriptor. 1243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a safety measure, use it only where a negative result would be 1244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# fatal anyway. Works if `file' does not exist. 1245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_unsafe_p () 1246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lalib_p=no 124864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lalib_p_l in 1 2 3 4 1250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville read lalib_p_line 1252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$lalib_p_line" in 1253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec 0<&5 5<&- 1257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$lalib_p" = yes 1259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_script_p file 1262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script 1263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 1264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 1265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_script_p () 1266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_p "$1" 1268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_executable_p file 1271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper executable 1272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 1273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 1274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_executable_p () 1275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_exec_suffix= 1277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 1278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) ;; 1279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) func_ltwrapper_exec_suffix=.exe ;; 1280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_scriptname file 1285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Assumes file is an ltwrapper_executable 1286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# uses $file to determine the appropriate filename for a 1287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# temporary ltwrapper_script. 1288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_scriptname () 1289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 129064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_dirname_and_basename "$1" "" "." 129164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '' '.exe' "$func_basename_result" 129264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_p file 1296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script or wrapper executable 1297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out 1298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters. 1299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_p () 1300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_execute_cmds commands fail_cmd 1306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Execute tilde-delimited COMMANDS. 1307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If FAIL_CMD is given, eval that upon failure. 1308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FAIL_CMD may read-access the current command in variable CMD! 1309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_execute_cmds () 1310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs=$IFS; IFS='~' 1313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $1; do 1314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS=$save_ifs 1315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmd=\"$cmd\" 1316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$cmd" "${2-:}" 1317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS=$save_ifs 1319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_source file 1323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Source FILE, adding directory component if necessary. 1324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Note that it is not necessary on cygwin/mingw to append a dot to 1325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `FILE.' does not work on cygwin managed mounts. 1328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_source () 1329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $1 in 1332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville */* | *\\*) . "$1" ;; 1333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) . "./$1" ;; 1334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 133864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_resolve_sysroot PATH 133964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Replace a leading = in PATH with a sysroot. Store the result into 134064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_resolve_sysroot_result 134164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_resolve_sysroot () 134264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 134364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot_result=$1 134464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $func_resolve_sysroot_result in 134564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci =*) 134664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '=' '' "$func_resolve_sysroot_result" 134764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 134864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 134964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 135064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 135164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 135264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_replace_sysroot PATH 135364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# If PATH begins with the sysroot, replace it with = and 135464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# store the result into func_replace_sysroot_result. 135564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_replace_sysroot () 135664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 135764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case "$lt_sysroot:$1" in 135864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ?*:"$lt_sysroot"*) 135964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname "$lt_sysroot" '' "$1" 136064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot_result="=$func_stripname_result" 136164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 136264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 136364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Including no sysroot. 136464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot_result=$1 136564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 136664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 136764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 136864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 1369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_infer_tag arg 1370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Infer tagged configuration to use if any are available and 1371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if one wasn't chosen via the "--tag" command line option. 1372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Only attempt this if the compiler in the base compile 1373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# command doesn't match the default compiler. 1374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# arg is usually of the form 'gcc ...' 1375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_infer_tag () 1376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$available_tags" && test -z "$tagname"; then 1379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted= 1380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $CC; do 138164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append_quoted CC_quoted "$arg" 1382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 138364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CC_expanded=`func_echo_all $CC` 138464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CC_quoted_expanded=`func_echo_all $CC_quoted` 1385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $@ in 1386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Blanks in the command may have been stripped by the calling shell, 1387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but not from the CC environment variable when configure was run. 138864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 138964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Blanks at the start of $base_compile will cause this to fail 1391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # if we don't check for them as well. 1392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 1393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for z in $available_tags; do 1394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Evaluate the configuration. 1396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville CC_quoted= 1398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $CC; do 1399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Double-quote args containing other shell metacharacters. 140064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append_quoted CC_quoted "$arg" 1401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 140264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CC_expanded=`func_echo_all $CC` 140364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CC_quoted_expanded=`func_echo_all $CC_quoted` 1404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$@ " in 140564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 140664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The compiler in the base compile command matches 1408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the one in the tagged configuration. 1409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Assume this is the tagged configuration we want. 1410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tagname=$z 1411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 1412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 1416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If $tagname still isn't set, then no tagged configuration 1417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # was found and let the user know that the "--tag" command 1418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # line option must be used. 1419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$tagname"; then 1420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_echo "unable to infer tagged configuration" 1421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "specify a tag with \`--tag'" 1422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# else 1423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_verbose "using $tagname tagged configuration" 1424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 1427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 1428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 1429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 143164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 143264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_write_libtool_object output_name pic_name nonpic_name 143364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Create a libtool object file (analogous to a ".la" file), 143464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# but don't create it if we're doing a dry run. 143564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_write_libtool_object () 143664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 143764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci write_libobj=${1} 143864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$build_libtool_libs" = yes; then 143964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci write_lobj=\'${2}\' 144064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 144164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci write_lobj=none 144264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 144364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 144464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$build_old_libs" = yes; then 144564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci write_oldobj=\'${3}\' 144664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 144764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci write_oldobj=none 144864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 144964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 145064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || { 145164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat >${write_libobj}T <<EOF 145264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $write_libobj - a libtool object file 145364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 145464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 145564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Please DO NOT delete this file! 145664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# It is necessary for linking the library. 145764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 145864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Name of the PIC object. 145964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipic_object=$write_lobj 146064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 146164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Name of the non-PIC object 146264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinon_pic_object=$write_oldobj 146364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 146464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 146564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $MV "${write_libobj}T" "${write_libobj}" 146664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 146764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 146864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 146964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 147064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci################################################## 147164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 147264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci################################################## 147364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 147464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_file_wine_to_w32 ARG 147564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Helper function used by file name conversion functions when $build is *nix, 147664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and $host is mingw, cygwin, or some other w32 environment. Relies on a 147764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# correctly configured wine environment available, with the winepath program 147864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in $build's $PATH. 147964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 148064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is the $build file name to be converted to w32 format. 148164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in $func_convert_core_file_wine_to_w32_result, and will 148264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# be empty on error (or when ARG is empty) 148364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_file_wine_to_w32 () 148464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 148564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 148664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32_result="$1" 148764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 148864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Unfortunately, winepath does not exit with a non-zero error code, so we 148964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # are forced to check the contents of stdout. On the other hand, if the 149064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # command is not found, the shell will set an exit code of 127 and print 149164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # *an error message* to stdout. So we must check for both error code of 149264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # zero AND non-empty stdout, which explains the odd construction: 149364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 149464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 149564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 149664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e "$lt_sed_naive_backslashify"` 149764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 149864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32_result= 149964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 150064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 150164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 150264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end: func_convert_core_file_wine_to_w32 150364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 150464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 150564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_path_wine_to_w32 ARG 150664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Helper function used by path conversion functions when $build is *nix, and 150764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 150864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# configured wine environment available, with the winepath program in $build's 150964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $PATH. Assumes ARG has no leading or trailing path separator characters. 151064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 151164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is path to be converted from $build format to win32. 151264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in $func_convert_core_path_wine_to_w32_result. 151364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Unconvertible file (directory) names in ARG are skipped; if no directory names 151464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# are convertible, then the result may be empty. 151564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_path_wine_to_w32 () 151664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 151764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 151864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # unfortunately, winepath doesn't convert paths, only file names 151964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_path_wine_to_w32_result="" 152064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 152164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci oldIFS=$IFS 152264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci IFS=: 152364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for func_convert_core_path_wine_to_w32_f in $1; do 152464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci IFS=$oldIFS 152564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 152664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$func_convert_core_file_wine_to_w32_result" ; then 152764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$func_convert_core_path_wine_to_w32_result"; then 152864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 152964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 153064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 153164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 153264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 153364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 153464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci IFS=$oldIFS 153564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 153664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 153764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end: func_convert_core_path_wine_to_w32 153864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 153964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 154064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygpath ARGS... 154164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 154264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 154364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 154464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (2), returns the Cygwin file name or path in func_cygpath_result (input 154564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# file name or path is assumed to be in w32 format, as previously converted 154664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# from $build's *nix or MSYS format). In case (3), returns the w32 file name 154764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# or path in func_cygpath_result (input file name or path is assumed to be in 154864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Cygwin format). Returns an empty string on error. 154964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 155064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARGS are passed to cygpath, with the last one being the file name or path to 155164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# be converted. 155264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 155364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 155464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# environment variable; do not put it in $PATH. 155564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygpath () 155664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 155764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 155864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 155964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 156064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$?" -ne 0; then 156164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # on failure, ensure result is empty 156264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath_result= 156364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 156464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 156564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath_result= 156664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 156764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 156864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 156964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#end: func_cygpath 157064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 157164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 157264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_msys_to_w32 ARG 157364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name or path ARG from MSYS format to w32 format. Return 157464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# result in func_convert_core_msys_to_w32_result. 157564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_msys_to_w32 () 157664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 157764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 157864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # awkward: cmd appends spaces to result 157964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 158064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 158164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 158264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#end: func_convert_core_msys_to_w32 158364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 158464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 158564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_check ARG1 ARG2 158664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Verify that ARG1 (a file name in $build format) was converted to $host 158764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# format in ARG2. Otherwise, emit an error message, but continue (resetting 158864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result to ARG1). 158964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_check () 159064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 159164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 159264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$2" && test -n "$1" ; then 159364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "Could not determine host file name corresponding to" 159464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error " \`$1'" 159564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "Continuing, but uninstalled executables may not work." 159664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Fallback: 159764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 159864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 159964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 160064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_check 160164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 160264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 160364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 160464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Verify that FROM_PATH (a path in $build format) was converted to $host 160564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 160664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result to a simplistic fallback value (see below). 160764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_check () 160864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 160964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 161064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$4" && test -n "$3"; then 161164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "Could not determine the host path corresponding to" 161264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error " \`$3'" 161364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_error "Continuing, but uninstalled executables may not work." 161464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Fallback. This is a deliberately simplistic "conversion" and 161564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # should not be "improved". See libtool.info. 161664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "x$1" != "x$2"; then 161764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_replace_pathsep_chars="s|$1|$2|g" 161864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result=`echo "$3" | 161964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e "$lt_replace_pathsep_chars"` 162064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 162164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$3" 162264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 162364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 162464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 162564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_check 162664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 162764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 162864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 162964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 163064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and appending REPL if ORIG matches BACKPAT. 163164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_front_back_pathsep () 163264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 163364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 163464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $4 in 163564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $1 ) func_to_host_path_result="$3$func_to_host_path_result" 163664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 163764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 163864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $4 in 163964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $2 ) func_append func_to_host_path_result "$3" 164064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 164164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 164264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 164364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_front_back_pathsep 164464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 164564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 164664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci################################################## 164764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build to $host FILE NAME CONVERSION FUNCTIONS # 164864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci################################################## 164964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# invoked via `$to_host_file_cmd ARG' 165064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 165164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# In each case, ARG is the path to be converted from $build to $host format. 165264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result will be available in $func_to_host_file_result. 165364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 165464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 165564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file ARG 165664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Converts the file name ARG from $build format to $host format. Return result 165764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_file_result. 165864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_host_file () 165964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 166064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 166164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $to_host_file_cmd "$1" 166264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 166364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_host_file 166464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 166564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 166664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_tool_file ARG LAZY 166764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# converts the file name ARG from $build format to toolchain format. Return 166864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# result in func_to_tool_file_result. If the conversion in use is listed 166964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in (the comma separated) LAZY, no conversion takes place. 167064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_tool_file () 167164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 167264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 167364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case ,$2, in 167464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *,"$to_tool_file_cmd",*) 167564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file_result=$1 167664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 167764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 167864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $to_tool_file_cmd "$1" 167964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file_result=$func_to_host_file_result 168064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 168164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 168264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 168364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_tool_file 168464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 168564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 168664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_noop ARG 168764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copy ARG to func_to_host_file_result. 168864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_noop () 168964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 169064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 169164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 169264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_noop 169364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 169464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 169564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_msys_to_w32 ARG 169664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 169764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# conversion to w32 is not available inside the cwrapper. Returns result in 169864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result. 169964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_msys_to_w32 () 170064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 170164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 170264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 170364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 170464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_msys_to_w32 "$1" 170564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$func_convert_core_msys_to_w32_result" 170664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 170764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_file_check "$1" "$func_to_host_file_result" 170864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 170964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_msys_to_w32 171064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 171164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 171264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_cygwin_to_w32 ARG 171364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from Cygwin to w32 format. Returns result in 171464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result. 171564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_cygwin_to_w32 () 171664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 171764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 171864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 171964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 172064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 172164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # LT_CYGPATH in this case. 172264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result=`cygpath -m "$1"` 172364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 172464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_file_check "$1" "$func_to_host_file_result" 172564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 172664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_cygwin_to_w32 172764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 172864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 172964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_nix_to_w32 ARG 173064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from *nix to w32 format. Requires a wine environment 173164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and a working winepath. Returns result in func_to_host_file_result. 173264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_nix_to_w32 () 173364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 173464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 173564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 173664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 173764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32 "$1" 173864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 173964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 174064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_file_check "$1" "$func_to_host_file_result" 174164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 174264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_nix_to_w32 174364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 174464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 174564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_msys_to_cygwin ARG 174664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 174764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Returns result in func_to_host_file_result. 174864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_msys_to_cygwin () 174964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 175064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 175164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 175264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 175364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_msys_to_w32 "$1" 175464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath -u "$func_convert_core_msys_to_w32_result" 175564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$func_cygpath_result" 175664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 175764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_file_check "$1" "$func_to_host_file_result" 175864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 175964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_msys_to_cygwin 176064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 176164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 176264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_nix_to_cygwin ARG 176364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 176464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 176564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_file_result. 176664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_nix_to_cygwin () 176764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 176864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 176964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$1" 177064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 177164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 177264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_file_wine_to_w32 "$1" 177364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 177464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_file_result="$func_cygpath_result" 177564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 177664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_file_check "$1" "$func_to_host_file_result" 177764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 177864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_nix_to_cygwin 177964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 178064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 178164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci############################################# 178264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build to $host PATH CONVERSION FUNCTIONS # 178364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci############################################# 178464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# invoked via `$to_host_path_cmd ARG' 178564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 178664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# In each case, ARG is the path to be converted from $build to $host format. 178764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The result will be available in $func_to_host_path_result. 178864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 178964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Path separators are also converted from $build format to $host format. If 179064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG begins or ends with a path separator character, it is preserved (but 179164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# converted to $host format) on output. 179264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 179364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# All path conversion functions are named using the following convention: 179464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# file name conversion function : func_convert_file_X_to_Y () 179564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# path conversion function : func_convert_path_X_to_Y () 179664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# where, for any given $build/$host combination the 'X_to_Y' value is the 179764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# same. If conversion functions are added for new $build/$host combinations, 179864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the two new functions must follow this pattern, or func_init_to_host_path_cmd 179964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# will break. 180064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 180164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 180264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_init_to_host_path_cmd 180364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Ensures that function "pointer" variable $to_host_path_cmd is set to the 180464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# appropriate value, based on the value of $to_host_file_cmd. 180564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcito_host_path_cmd= 180664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_init_to_host_path_cmd () 180764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 180864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 180964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$to_host_path_cmd"; then 181064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 181164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci to_host_path_cmd="func_convert_path_${func_stripname_result}" 181264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 181364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 181464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 181564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 181664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_path ARG 181764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Converts the path ARG from $build format to $host format. Return result 181864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_path_result. 181964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_host_path () 182064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 182164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 182264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_init_to_host_path_cmd 182364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $to_host_path_cmd "$1" 182464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 182564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_host_path 182664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 182764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 182864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_noop ARG 182964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copy ARG to func_to_host_path_result. 183064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_noop () 183164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 183264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 183364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 183464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_noop 183564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 183664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 183764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_msys_to_w32 ARG 183864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 183964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# conversion to w32 is not available inside the cwrapper. Returns result in 184064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_path_result. 184164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_msys_to_w32 () 184264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 184364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 184464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 184564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 184664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove leading and trailing path separator characters from ARG. MSYS 184764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 184864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # and winepath ignores them completely. 184964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname : : "$1" 185064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_tmp1=$func_stripname_result 185164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 185264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$func_convert_core_msys_to_w32_result" 185364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_check : ";" \ 185464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "$func_to_host_path_tmp1" "$func_to_host_path_result" 185564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 185664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 185764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 185864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_msys_to_w32 185964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 186064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 186164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_cygwin_to_w32 ARG 186264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from Cygwin to w32 format. Returns result in 186364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result. 186464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_cygwin_to_w32 () 186564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 186664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 186764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 186864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 186964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # See func_convert_path_msys_to_w32: 187064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname : : "$1" 187164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_tmp1=$func_stripname_result 187264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 187364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_check : ";" \ 187464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "$func_to_host_path_tmp1" "$func_to_host_path_result" 187564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 187664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 187764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 187864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_cygwin_to_w32 187964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 188064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 188164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_nix_to_w32 ARG 188264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from *nix to w32 format. Requires a wine environment and 188364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# a working winepath. Returns result in func_to_host_file_result. 188464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_nix_to_w32 () 1885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 188664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 188764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 188864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 188964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # See func_convert_path_msys_to_w32: 189064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname : : "$1" 189164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_tmp1=$func_stripname_result 189264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 189364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 189464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_check : ";" \ 189564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "$func_to_host_path_tmp1" "$func_to_host_path_result" 189664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 189764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 189864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 189964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_nix_to_w32 1900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 190264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_msys_to_cygwin ARG 190364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 190464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Returns result in func_to_host_file_result. 190564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_msys_to_cygwin () 190664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 190764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 190864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 190964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 191064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # See func_convert_path_msys_to_w32: 191164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname : : "$1" 191264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_tmp1=$func_stripname_result 191364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 191464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 191564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$func_cygpath_result" 191664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_check : : \ 191764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "$func_to_host_path_tmp1" "$func_to_host_path_result" 191864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_front_back_pathsep ":*" "*:" : "$1" 191964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 192064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 192164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_msys_to_cygwin 1922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 192464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_nix_to_cygwin ARG 192564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 192664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 192764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result. 192864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_nix_to_cygwin () 192964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 193064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 193164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$1" 193264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$1"; then 193364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove leading and trailing path separator characters from 193464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # ARG. msys behavior is inconsistent here, cygpath turns them 193564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # into '.;' and ';.', and winepath ignores them completely. 193664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname : : "$1" 193764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_tmp1=$func_stripname_result 193864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 193964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 194064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path_result="$func_cygpath_result" 194164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_check : : \ 194264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "$func_to_host_path_tmp1" "$func_to_host_path_result" 194364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_convert_path_front_back_pathsep ":*" "*:" : "$1" 194464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 1945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 194664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_nix_to_cygwin 194764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 1948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_compile arg... 1950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_compile () 1951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 1952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 1953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the compilation command and the source file. 1954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile= 1955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_opt=yes 1957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_output= 1958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj= 1960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville later= 1961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pie_flag= 1962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 1964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 1965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg_mode in 1966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg ) 1967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # do not "continue". Instead, add this to base_compile 1968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg="$arg" 1969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville target ) 1973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj="$arg" 1974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=normal 1975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville normal ) 1979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Accept any command-line options. 1980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 1981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o) 1982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$libobj" && \ 1983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you cannot specify \`-o' more than once" 1984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=target 1985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -pie | -fpie | -fPIE) 198964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append pie_flag " $arg" 1990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared | -static | -prefer-pic | -prefer-non-pic) 199464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append later " $arg" 1995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 1996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 1997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-suppress) 1999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_opt=no 2000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xcompiler) 2004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg_mode=arg # the next one goes into the "base_compile" arg list 2005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue # The current "srcfile" will either be retained or 2006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # replaced later. I would guess that would be a bug. 2007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wc,*) 2009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wc,' '' "$arg" 2010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 2011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg= 2012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 2013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $args; do 2014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 201564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append_quoted lastarg "$arg" 2016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 2018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$lastarg" 2019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg=$func_stripname_result 2020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the arguments to base_compile. 202264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append base_compile " $lastarg" 2023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Accept the current argument as the source file. 2028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The previous "srcfile" becomes the current argument. 2029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 2030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lastarg="$srcfile" 2031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcfile="$arg" 2032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $arg 2034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $arg_mode 2036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote the previous argument. 203864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append_quoted base_compile "$lastarg" 2039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for arg 2040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg_mode in 2042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg) 2043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you must specify an argument for -Xcompile" 2044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville target) 2046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "you must specify a target with \`-o'" 2047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the name of the library object. 2050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libobj" && { 2051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$srcfile" 2052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj="$func_basename_result" 2053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Recognize several different file suffixes. 2058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specifies -o file.o, it is replaced with file.lo 2059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libobj in 2060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.[cCFSifmso] | \ 2061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.ada | *.adb | *.ads | *.asm | \ 2062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 206364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_xform "$libobj" 2065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj=$func_xform_result 2066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libobj in 2070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot determine name of library object from \`$libobj'" 2073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_infer_tag $base_compile 2077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $later; do 2079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 2080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 2081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" != yes && \ 2082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "can not build a shared library" 2083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=no 2084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static) 2088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 2089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 2090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-pic) 2094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=yes 2095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -prefer-non-pic) 2099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=no 2100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$libobj" 2106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobj" != "X$func_quote_for_eval_result" \ 2107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$obj" "/" "" 2110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objname="$func_basename_result" 2111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 2112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lobj=${xdir}$objdir/$objname 2113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$base_compile" && \ 2115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a compilation command" 2116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete any leftover library objects. 2118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 2119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$obj $lobj $libobj ${libobj}T" 2120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist="$lobj $libobj ${libobj}T" 2122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Cygwin there's no "real" PIC flag so we must build both object types 2125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 212664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cygwin* | mingw* | pw32* | os2* | cegcc*) 2127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=default 2128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # non-PIC code in shared libraries is not supported 2132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_mode=default 2133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Calculate the filename of the output object if compiler does 2136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not support -o with -c 2137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_c_o" = no; then 213864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lockfile="$output_obj.lock" 2140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_obj= 2142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_locks=no 2143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lockfile= 2144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Lock this critical section if it is needed 2147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We use this script file to make the link, it avoids creating a new file 2148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = yes; then 2149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_echo "Waiting for $lockfile to be removed" 2151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sleep 2 2152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$need_locks" = warn; then 2154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lockfile"; then 2155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile exists and contains: 2157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 2158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 2160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 2161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 2162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 2163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 2164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 2165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 2167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 2168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 216964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append removelist " $output_obj" 2170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$srcfile" > "$lockfile" 2171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 217464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append removelist " $lockfile" 2175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 217764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 217864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci srcfile=$func_to_tool_file_result 2179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$srcfile" 2180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qsrcfile=$func_quote_for_eval_result 2181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only build a PIC object if we are building libtool libraries. 2183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 2184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Without this assignment, base_compile gets emptied. 2185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fbsd_hideous_sh_bug=$base_compile 2186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" != no; then 2188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile $pic_flag" 2189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't build PIC code 2191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile" 2192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$xdir$objdir" 2195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$output_obj"; then 2197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Place PIC objects in $objdir 219864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append command " -o $lobj" 2199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval_locale "$command" \ 2202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = warn && 2205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains: 2208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 2209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain: 2211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile 2212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 2214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 2215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 2216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 2217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 2218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 2219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 2221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 2222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just move the object if needed, then go on to compile the next one 2225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "$output_obj" "$lobj"' \ 2227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Allow error messages only from the first compilation. 2231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$suppress_opt" = yes; then 2232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville suppress_output=' >/dev/null 2>&1' 2233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only build a position-dependent object if we build old libraries. 2237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 2238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_mode" != yes; then 2239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't build PIC code 2240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile$pie_flag" 2241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville command="$base_compile $qsrcfile $pic_flag" 2243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_c_o" = yes; then 224564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append command " -o $obj" 2246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Suppress compiler output if we already did a PIC compilation. 224964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append command "$suppress_output" 2250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval_locale "$command" \ 2251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" = warn && 2254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 2256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains: 2257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null` 2258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain: 2260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile 2261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same 2263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because 2264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together. If you 2265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better 2266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better 2267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler." 2268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $removelist 2270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 2271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just move the object if needed 2274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "$output_obj" "$obj"' \ 2276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 2281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Unlock the critical section if it was locked 2284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_locks" != no; then 2285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist=$lockfile 2286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "$lockfile" 2287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 2289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 2291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$opt_help || { 229464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_help () 2298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to display help for each of the modes. 230064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $opt_mode in 2301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") 2302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Generic help is extracted from the usage comments 2303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # at the start of this file. 2304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_help 2305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean) 2308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove files from the build directory. 2312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE 2314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM. 2316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, object or program, all the files associated 2318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillewith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile) 2322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCompile a source file into a libtool library object. 2326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options: 2328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-suppress do not suppress compiler output for multiple passes 233164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -prefer-pic try to build PIC objects only 233264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -prefer-non-pic try to build non-PIC objects only 2333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared do not build a \`.o' file suitable for static linking 2334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static only build a \`.o' file suitable for static linking 233564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -Wc,FLAG pass FLAG directly to the compiler 2336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefrom the given SOURCEFILE. 2339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe output file name is determined by removing the directory component from 2341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary object suffix, \`.lo'." 2343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville execute) 2346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAutomatically set library path, then run a program. 2350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options: 2352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen FILE add the directory containing FILE to the library path 2354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode sets the library path environment variable according to \`-dlopen' 2356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleflags. 2357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf any of the ARGS are libtool executable wrappers, then they are translated 2359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinto their corresponding uninstalled binary, and any of their required library 2360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirectories are added to the library path. 2361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThen, COMMAND is executed, with ARGS as arguments." 2363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finish) 2366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleComplete the installation of libtool libraries. 2370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEach LIBDIR is a directory that contains libtool libraries. 2372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe commands that this mode executes may require superuser privileges. Use 2374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillethe \`--dry-run' option if you just want to see what would be executed." 2375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install) 2378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleInstall executables or libraries. 2382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleINSTALL-COMMAND is the installation command. The first component should be 2384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleeither the \`install' or \`cp' program. 2385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of INSTALL-COMMAND are treated specially: 2387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 238864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe rest of the components are interpreted as arguments to that command (only 2391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBSD-compatible install options are recognized)." 2392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link) 2395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLink object files or libraries together to form another library, or to 2399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecreate an executable program. 2400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLINK-COMMAND is a command using the C compiler that you would use to create 2402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillea program from several object files. 2403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of LINK-COMMAND are treated specially: 2405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static do not do any dynamic linking at all 2407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -avoid-version do not add a version suffix if possible 240864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -bindir BINDIR specify path to binaries directory (for systems where 240964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libraries must be found in the PATH setting at runtime) 2410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols SYMFILE 2414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville try to export only the symbols listed in SYMFILE 2415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols-regex REGEX 2416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville try to export only the symbols matching REGEX 2417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -LLIBDIR search LIBDIR for required installed libraries 2418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -lNAME OUTPUT-FILE requires the installed library libNAME 2419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -module build a library that can dlopened 2420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-fast-install disable the fast-install mode 2421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-install link a not-installable executable 2422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-undefined declare that a library does not refer to external symbols 2423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -objectlist FILE Use a list of object files found in FILE to specify objects 2425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -precious-files-regex REGEX 2426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville don't remove output files matching REGEX 2427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -release RELEASE specify package release information 2428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared only do dynamic linking of libtool libraries 2431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shrext SUFFIX override the standard shared library file extension 2432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static do not do any dynamic linking of uninstalled libtool libraries 2433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static-libtool-libs 2434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do not do any dynamic linking of libtool libraries 2435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-info CURRENT[:REVISION[:AGE]] 2436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville specify library version info [each variable defaults to 0] 2437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -weak LIBNAME declare that the target provides the LIBNAME interface 243864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -Wc,FLAG 243964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 244064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -Wl,FLAG 244164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -Xlinker FLAG pass linker-specific FLAG directly to the linker 244264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAll other options (arguments beginning with \`-') are ignored. 2445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEvery other argument is treated as a filename. Files ending in \`.la' are 2447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletreated as uninstalled libtool libraries, other files are standard or library 2448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleobject files. 2449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerequired, except when creating a convenience library. 2453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleis created, otherwise an executable program is created." 2459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall) 2462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \ 2463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove libraries from an installation directory. 2466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE 2468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM. 2470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, all the files associated with it are deleted. 2472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleOtherwise, only FILE itself is deleted using RM." 2473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 247664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_help "invalid operation mode \`$opt_mode'" 2477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 248064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 2481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "Try \`$progname --help' for more information about other modes." 2482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 248464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Now that we've collected a possible --mode arg, show help if necessary 248564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciif $opt_help; then 248664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_help" = :; then 248764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_mode_help 248864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 248964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 249064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_help noexit 249164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for opt_mode in compile link execute install finish uninstall clean; do 249264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_mode_help 249364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 249464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } | sed -n '1p; 2,$s/^Usage:/ or: /p' 249564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 249664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_help noexit 249764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for opt_mode in compile link execute install finish uninstall clean; do 249864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 249964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_mode_help 250064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 250164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } | 250264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sed '1d 250364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^When reporting/,/^Report/{ 250464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci H 250564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci d 250664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 250764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $x 250864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /information about other modes/d 250964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /more detailed .*MODE/d 251064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 251164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 251264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit $? 251364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifi 2514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_execute arg... 2517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_execute () 2518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The first argument is the command name. 2521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmd="$nonopt" 2522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$cmd" && \ 2523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a COMMAND" 2524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Handle -dlopen flags immediately. 252664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for file in $opt_dlopen; do 2527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$file" \ 2528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$file' is not a file" 2529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir= 2531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 2532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 253364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$file" 253464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=$func_resolve_sysroot_result 253564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 2537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$file" \ 2538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$lib' is not a valid libtool archive" 2539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the libtool library. 2541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 2542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 2543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 2544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip this library if it cannot be dlopened. 2546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname"; then 2547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Warn if it was a shared library. 2548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$library_names" && \ 2549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$file' was not linked with \`-export-dynamic'" 2550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 2554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 2555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$dir/$objdir/$dlname"; then 255764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dir "/$objdir" 2558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$dir/$dlname"; then 2560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 2566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just add the directory containing the .lo file. 2567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 2568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 2569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the absolute pathname. 2578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 2579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$absdir" && dir="$absdir" 2580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now add the directory to shlibpath_var. 2582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "test -z \"\$$shlibpath_var\""; then 2583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var=\"\$dir\"" 2584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set shlibpath_var 2590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # rather than running their programs. 2591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_execute_magic="$magic" 2592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check if any of the arguments is a wrapper script. 2594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args= 2595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file 2596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 2597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 259864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -* | *.la | *.lo ) ;; 2599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is really a libtool program. 2601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_script_p "$file"; then 2602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 2603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform arg to wrapped name. 2604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$progdir/$program" 2605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif func_ltwrapper_executable_p "$file"; then 2606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 2607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$func_ltwrapper_scriptname_result" 2608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform arg to wrapped name. 2609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$progdir/$program" 2610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote arguments (to preserve shell metacharacters). 261464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append_quoted args "$file" 2615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$opt_dry_run" = Xfalse; then 2618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 2619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Export the shlibpath_var. 2620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "export $shlibpath_var" 2621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore saved environment variables 2624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 2626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "if test \"\${save_$lt_var+set}\" = set; then 2627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_var=\$save_$lt_var; export $lt_var 2628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $lt_unset $lt_var 2630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 2631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now prepare to actually exec the command. 2634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec_cmd="\$cmd$args" 2635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Display what would be done. 2637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 2638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 263964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "export $shlibpath_var" 2640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$cmd$args" 2642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 2643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 264664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_finish arg... 2650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_finish () 2651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 265364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libs= 265464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libdirs= 2655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville admincmds= 2656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 265764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for opt in "$nonopt" ${1+"$@"} 265864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci do 265964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -d "$opt"; then 266064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libdirs " $opt" 266164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 266264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci elif test -f "$opt"; then 266364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if func_lalib_unsafe_p "$opt"; then 266464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libs " $opt" 266564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 266664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_warning "\`$opt' is not a valid libtool archive" 266764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 2668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 266964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 267064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_error "invalid argument \`$opt'" 267164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 267264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 267364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 267464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$libs"; then 267564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$lt_sysroot"; then 267664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 267764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 267864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 267964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sysroot_cmd= 268064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 268164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 268264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove sysroot references 268364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $opt_dry_run; then 268464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for lib in $libs; do 268564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 268664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 268764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 268864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmpdir=`func_mktempdir` 268964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for lib in $libs; do 269064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 269164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci > $tmpdir/tmp-la 269264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci mv -f $tmpdir/tmp-la $lib 269364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 269464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ${RM}r "$tmpdir" 269564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 269664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 269764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 269864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $libdirs; do 2700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finish_cmds"; then 2701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the finish commands. 2702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville'"$cmd"'"' 2704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finish_eval"; then 2706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do the single finish_eval. 2707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"$finish_eval\" 270864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || eval "$cmds" || func_append admincmds " 2709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $cmds" 2710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Exit here if they wanted silent mode. 2715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent && exit $EXIT_SUCCESS 2716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 271764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 271864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "----------------------------------------------------------------------" 271964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "Libraries have been installed in:" 272064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for libdir in $libdirs; do 272164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO " $libdir" 272264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 272364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 272464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "If you ever happen to want to link against installed libraries" 272564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "in a given directory, LIBDIR, you must either use libtool, and" 272664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 272764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "flag during linking and do at least one of the following:" 272864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$shlibpath_var"; then 272964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 273064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo " during execution" 273164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 273264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$runpath_var"; then 273364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo " - add LIBDIR to the \`$runpath_var' environment variable" 273464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo " during linking" 273564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 273664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$hardcode_libdir_flag_spec"; then 273764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libdir=LIBDIR 273864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval flag=\"$hardcode_libdir_flag_spec\" 2739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 274064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO " - use the \`$flag' linker flag" 274164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 274264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$admincmds"; then 274364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO " - have your system administrator run these commands:$admincmds" 274464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 274564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -f /etc/ld.so.conf; then 274664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 274764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 274864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 2749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 275064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "See any operating system documentation about shared libraries for" 275164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $host in 275264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci solaris2.[6789]|solaris2.1[0-9]) 275364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 275464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "pages." 275564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 275664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 275764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "more information, such as the ld(1) and ld.so(8) manual pages." 275864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 275964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 276064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "----------------------------------------------------------------------" 276164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 2762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 2763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 2764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 276564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_install arg... 2769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_install () 2770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 2771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 2772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # There may be an optional sh(1) argument at the beginning of 2773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install_prog (especially on Windows NT). 2774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Allow the use of GNU shtool's install command. 277664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $nonopt in *shtool*) :;; *) false;; esac; then 2777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote it. 2778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$nonopt" 2779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog="$func_quote_for_eval_result " 2780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$1 2781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 2782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_prog= 2784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$nonopt 2785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The real first argument should be the name of the installation program. 2788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote it. 2789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 279064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append install_prog "$func_quote_for_eval_result" 279164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci install_shared_prog=$install_prog 279264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case " $install_prog " in 279364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *[\\\ /]cp\ *) install_cp=: ;; 279464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) install_cp=false ;; 279564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 2796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to accept at least all the BSD install flags. 2798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest= 2799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville files= 2800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville opts= 2801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 2802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_type= 2803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville isdir=no 2804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripme= 280564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci no_mode=: 2806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 2807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 280864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci arg2= 2809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dest"; then 281064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append files " $dest" 2811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$arg 2812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 2816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -d) isdir=yes ;; 2817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -f) 281864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $install_cp; then :; else 281964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci prev=$arg 282064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 2821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -g | -m | -o) 2823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=$arg 2824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -s) 2826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripme=" -s" 2827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -*) 2830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the previous option needed an argument, then skip it. 2833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prev"; then 283464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "x$prev" = x-m && test -n "$install_override_mode"; then 283564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci arg2=$install_override_mode 283664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci no_mode=false 283764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 2838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 2839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$arg 2841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 2842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Aesthetically quote the argument. 2847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 284864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append install_prog " $func_quote_for_eval_result" 284964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$arg2"; then 285064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_quote_for_eval "$arg2" 285164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 285264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append install_shared_prog " $func_quote_for_eval_result" 2853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$install_prog" && \ 2856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an install program" 2857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$prev" && \ 2859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "the \`$prev' option requires an argument" 2860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 286164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$install_override_mode" && $no_mode; then 286264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $install_cp; then :; else 286364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_quote_for_eval "$install_override_mode" 286464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append install_shared_prog " -m $func_quote_for_eval_result" 286564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 286664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 286764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$files"; then 2869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dest"; then 2870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "no file or destination specified" 2871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a destination" 2873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Strip any trailing slash from the destination. 2877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '/' "$dest" 2878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dest=$func_stripname_result 2879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that the destination is a directory. 2881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -d "$dest" && isdir=yes 2882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$isdir" = yes; then 2883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destdir="$dest" 2884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destname= 2885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$dest" "" "." 2887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destdir="$func_dirname_result" 2888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destname="$func_basename_result" 2889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Not a directory, so check to see that there is only one file specified. 2891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $files; shift 2892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$#" -gt 1 && \ 2893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "\`$dest' is not a directory" 2894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $destdir in 2896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 2897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 2899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 2900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) ;; 2901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 2902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "\`$destdir' must be an absolute directory name" 2903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 2906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set variables rather 2910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than running their programs. 2911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_install_magic="$magic" 2912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticlibs= 2914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville future_libdirs= 2915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current_libdirs= 2916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 2917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each installation. 2919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 2920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 2921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do the static libraries later. 292264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append staticlibs " $file" 2923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 2924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 292664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$file" 292764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=$func_resolve_sysroot_result 292864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 2929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 2930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$file" \ 2931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_help "\`$file' is not a valid libtool archive" 2932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 2934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 2935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 2936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$file" 2937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the libdir to current_libdirs if it is the destination. 2939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$destdir" = "X$libdir"; then 2940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$current_libdirs " in 2941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 294264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append current_libdirs " $libdir" ;; 2943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 2945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Note the libdir as a future libdir. 2946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$future_libdirs " in 2947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 294864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append future_libdirs " $libdir" ;; 2949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 2950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "/" "" 2953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 295464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dir "$objdir" 2955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$relink_command"; then 2957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Determine the prefix the user has applied to our future dir. 295864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow the user to place us outside of our expected 2961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # location b/c this prevents finding dependent libraries that 2962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are installed to the same prefix. 2963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # At present, this check doesn't affect windows .dll's that 2964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # are installed into $libdir/../bin (currently, that works fine) 2965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but it's something to keep an eye on. 2966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$inst_prefix_dir" = "$destdir" && \ 2967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 2970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Stick the inst_prefix_dir data into the link command. 297164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 297364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "relinking \`$file'" 2977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$relink_command" \ 2978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 2980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See the names of the shared library. 2982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names; shift 2983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$1"; then 2984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 2985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 2986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville srcname="$realname" 2988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$relink_command" && srcname="$realname"T 2989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 2990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the shared library and build the symlinks. 299164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 'exit $?' 2993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tstripme="$stripme" 2994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 299564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cygwin* | mingw* | pw32* | cegcc*) 2996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $realname in 2997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.dll.a) 2998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tstripme="" 2999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$tstripme" && test -n "$striplib"; then 3004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$#" -gt 0; then 3008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old symlinks, and create new ones. 3009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try `ln -sf' first, because the `ln' binary might depend on 3010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the symlink we replace! Solaris /bin/ln does not understand -f, 3011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so we also need to try rm && ln -s. 3012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for linkname 3013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 3014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkname" != "$realname" \ 3015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postinstall commands. 3020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$destdir/$realname" 3021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$postinstall_cmds" 'exit $?' 3022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the pseudo-library for information purposes. 3025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 3026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 3027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville instname="$dir/$name"i 3028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Maybe install the static library, too. 303164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 3035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install (i.e. copy) a libtool object. 3036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Figure out destination file name, if it wasn't already specified. 3038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$destname"; then 3039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destname" 3040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 3042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$func_basename_result" 3043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destfile" 3044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Deduce the name of the destination old-style object file. 3047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $destfile in 3048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 3049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$destfile" 3050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticdest=$func_lo2o_result 3051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$objext) 3053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticdest="$destfile" 3054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile= 3055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the libtool object if requested. 3062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$destfile" && \ 3063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog $file $destfile" 'exit $?' 3064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the old object if enabled. 3066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes; then 3067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Deduce the name of the old-style object file. 3068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$file" 3069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville staticobj=$func_lo2o_result 3070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 3073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Figure out destination file name, if it wasn't already specified. 3077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$destname"; then 3078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destname" 3079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 3081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$func_basename_result" 3082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile="$destdir/$destfile" 3083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the file is missing, and there is a .exe on the end, strip it 3086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # because it is most likely a libtool script we actually want to 3087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install 3088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripped_ext="" 3089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 3090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) 3091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$file"; then 3092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 3093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=$func_stripname_result 3094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville stripped_ext=".exe" 3095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is really a libtool program. 3100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 310164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw*) 3102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_executable_p "$file"; then 3103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 3104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$func_ltwrapper_scriptname_result 3105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 3107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$func_stripname_result 3108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrapper=$file 3112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_script_p "$wrapper"; then 3115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs= 3116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 3117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$wrapper" 3119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check the variables that should have been set. 3121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$generated_by_libtool_version" && \ 3122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize=yes 3125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $notinst_deplibs; do 3126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that each library is installed. 3127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir= 3128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lib"; then 3129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 3130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 313164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$libdir" && test ! -f "$libfile"; then 3133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$lib' has not been installed in \`$libdir'" 3134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize=no 3135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 3139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$wrapper" 3140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname= 3142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = no && test -n "$relink_command"; then 3143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$finalize" = yes; then 3145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmpdir=`func_mktempdir` 3146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file$stripped_ext" 3147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$func_basename_result" 3148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname="$tmpdir/$file" 3149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 315064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 3153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$relink_command" 3154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 3155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval "$relink_command"; then : 3157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "error: relink \`$file' with the above command before installing it" 3159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || ${RM}r "$tmpdir" 3160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 3161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file="$outputname" 3163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot relink \`$file'" 3165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Install the binary that we compiled earlier. 316964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # remove .exe since cygwin /usr/bin/install will append another 3174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # one anyway 3175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $install_prog,$host in 3176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville */usr/bin/install*,*cygwin*) 3177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file:$destfile in 3178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe:*.exe) 3179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # this is ok 3180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe:*) 3182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile=$destfile.exe 3183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *:*.exe) 3185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$destfile" 3186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville destfile=$func_stripname_result 3187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || if test -n "$outputname"; then 3193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ${RM}r "$tmpdir" 3194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $staticlibs; do 3200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 3201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 3202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Set up the ranlib parameters. 3204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlib="$destdir/$name" 320564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 320664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tool_oldlib=$func_to_tool_file_result 3207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$stripme" && test -n "$old_striplib"; then 321164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postinstall commands. 3215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$future_libdirs" && \ 3219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "remember to run \`$progname --finish$future_libdirs'" 3220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$current_libdirs"; then 3222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Maybe just do a dry run. 3223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 3227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 323064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_generate_dlsyms outputname originator pic_p 3234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Extract symbols from dlprefiles and create ${outputname}S.o with 3235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a dlpreopen symbol table. 3236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_generate_dlsyms () 3237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 3239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_outputname="$1" 3240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_originator="$2" 3241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_pic_p="${3-no}" 3242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dlsyms= 3244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_dlsyms="${my_outputname}S.c" 3248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "not configured to extract global symbols from dlpreopened files" 3250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$my_dlsyms"; then 3254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_dlsyms in 3255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") ;; 3256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.c) 3257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Discover the nlist of each of the dlfiles. 3258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville nlist="$output_objdir/${my_outputname}.nm" 3259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Parse the name list into a source file. 3263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output_objdir/$my_dlsyms" 3264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus 3270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextern \"C\" { 3271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 327364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 327464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 327564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 327664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 327764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 327864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 327964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* DATA imports from DLLs on WIN32 con't be const, because runtime 328064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relocations are performed -- see ld's documentation on pseudo-relocs. */ 328164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST 328264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__osf__) 328364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* This system does not cope well with relocations in const data. */ 328464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST 328564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#else 328664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST const 328764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 328864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 3289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* External symbol declarations for the compiler. */\ 3290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 3291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$dlself" = yes; then 3293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$output'" 3294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add our own program objects to the symbol list. 329864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for progfile in $progfiles; do 330064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$progfile" func_convert_file_msys_to_w32 330164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 330264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$exclude_expsyms"; then 3306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 3309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex"; then 3313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 3316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepare the list of exported symbols 3320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$export_symbols"; then 3321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$outputname.exp" 3322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $export_symbols 3324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 332664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc* ) 3327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval '$MV "$nlist"T "$nlist"' 3337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 333864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc* ) 3339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dlprefile in $dlprefiles; do 3348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "extracting global C symbols from \`$dlprefile'" 3349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$dlprefile" 3350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 335164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $host in 335264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc* ) 335364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # if an import library, we need to obtain dlname 335464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if func_win32_import_lib_p "$dlprefile"; then 335564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_tr_sh "$dlprefile" 335664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "curr_lafile=\$libfile_$func_tr_sh_result" 335764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dlprefile_dlbasename="" 335864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 335964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Use subshell, to avoid clobbering current variable values 336064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 336164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$dlprefile_dlname" ; then 336264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename "$dlprefile_dlname" 336364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dlprefile_dlbasename="$func_basename_result" 336464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 336564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # no lafile. user explicitly requested -dlpreopen <import library>. 336664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $sharedlib_from_linklib_cmd "$dlprefile" 336764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dlprefile_dlbasename=$sharedlib_from_linklib_result 336864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 336964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 337064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || { 337164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$dlprefile_dlbasename" ; then 337264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 337364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 337464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_warning "Could not compute DLL name from $name" 337564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval '$ECHO ": $name " >> "$nlist"' 337664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 337764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 337864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 337964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 338064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 338164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else # not an import lib 338264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || { 338364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval '$ECHO ": $name " >> "$nlist"' 338464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 338564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 338664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 338764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 338864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 338964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 339064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || { 339164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval '$ECHO ": $name " >> "$nlist"' 339264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 339364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 339464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 339564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 339664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 3397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we have at least an empty file. 3401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$nlist" || : > "$nlist" 3402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$exclude_expsyms"; then 3404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "$nlist"T "$nlist" 3406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try sorting and uniquifying the output. 3409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP -v "^: " < "$nlist" | 3410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if sort -k 3 </dev/null >/dev/null 2>&1; then 3411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sort -k 3 3412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sort +2 3414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi | 3415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uniq > "$nlist"S; then 3416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 3417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP -v "^: " < "$nlist" > "$nlist"S 3419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$nlist"S; then 3422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 342464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 342764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo >> "$output_objdir/$my_dlsyms" "\ 3428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* The mapping between symbol names and symbols. */ 3430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletypedef struct { 3431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *name; 3432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void *address; 3433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} lt_dlsymlist; 343464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciextern LT_DLSYM_CONST lt_dlsymlist 3435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[]; 343664d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLT_DLSYM_CONST lt_dlsymlist 3437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[] = 3438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{\ 3439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { \"$my_originator\", (void *) 0 }," 3440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $need_lib_prefix in 3442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no) 3443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 344964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo >> "$output_objdir/$my_dlsyms" "\ 3450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville {0, (void *) 0} 3451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 3452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* This works around a problem in FreeBSD linker */ 3454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef FREEBSD_WORKAROUND 3455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic const void *lt_preloaded_setup() { 3456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return lt_${my_prefix}_LTX_preloaded_symbols; 3457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 3459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus 3461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif\ 3463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 3464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } # !$opt_dry_run 3465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable= 3467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_command " in 3468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -static "*) ;; 3469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # compiling the symbol table file with pic_flag works around 3472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a FreeBSD bug that causes programs to crash when -lm is 3473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # linked before any other PIC object. But we must not use 3474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # pic_flag when linking with -static. The problem exists in 3475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 347664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-hpux*) 3479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag" ;; 3480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$my_pic_p" != Xno; then 3482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_flag_for_symtable=" $pic_flag" 3483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville symtab_cflags= 3489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg in $LTCFLAGS; do 3490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 3491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -pie | -fpie | -fPIE) ;; 349264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append symtab_cflags " $arg" ;; 3493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now compile the dynamic symbol file. 3497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clean up the generated files. 3500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform the symbol file into the correct name. 3503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville symfileobj="$output_objdir/${my_outputname}S.$objext" 3504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 350564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc* ) 3506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$my_outputname.def"; then 350764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 351064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 351564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We keep going just in case the user didn't refer to 3526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # really was required. 3528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Nullify the symbol file. 353064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 353164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_win32_libid arg 3536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# return the library type of file 'arg' 3537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 3538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Need a lot of goo to handle *both* DLLs and import libs 3539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Has to be a shell function in order to 'eat' the argument 3540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# that is supplied when $file_magic_command is called. 354164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Despite the name, also deal with 64 bit binaries. 3542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_win32_libid () 3543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 3545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="unknown" 3546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_fileres=`file -L $1 2>/dev/null` 3547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_fileres in 3548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *ar\ archive\ import\ library*) # definitely import 3549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 archive import" 3550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *ar\ archive*) # could be an import, or static 355264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 355464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 355564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$1" func_convert_file_msys_to_w32 355664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -n -e ' 3558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 1,100{ 3559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville / I /{ 3560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville s,.*,import, 3561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p 3562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville q 3563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 3564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville }'` 3565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_nmres in 3566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville import*) win32_libid_type="x86 archive import";; 3567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) win32_libid_type="x86 archive static";; 3568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *DLL*) 3572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 DLL" 3573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *executable*) # but shell scripts are "executable" too... 3575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $win32_fileres in 3576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *MS\ Windows\ PE\ Intel*) 3577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville win32_libid_type="x86 DLL" 3578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$win32_libid_type" 3583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 358564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib ARG 358664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 358764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Platform-specific function to extract the 358864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# name of the DLL associated with the specified 358964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# import library ARG. 359064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoked by eval'ing the libtool variable 359164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $sharedlib_from_linklib_cmd 359264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in the variable 359364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $sharedlib_from_linklib_result 359464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib () 359564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 359664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 359764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 359864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 359964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 360064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 360164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 360264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The is the core of a fallback implementation of a 360364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# platform-specific function to extract the name of the 360464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# DLL associated with the specified import library LIBNAME. 360564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 360664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# SECTION_NAME is either .idata$6 or .idata$7, depending 360764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# on the platform and compiler that created the implib. 360864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 360964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Echos the name of the DLL associated with the 361064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# specified import library. 361164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib_fallback_core () 361264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 361364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 361464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 361564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 361664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED '/^Contents of section '"$match_literal"':/{ 361764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Place marker at beginning of archive member dllname section 361864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/.*/====MARK====/ 361964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci p 362064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci d 362164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 362264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # These lines can sometimes be longer than 43 characters, but 362364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # are always uninteresting 362464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /:[ ]*file format pe[i]\{,1\}-/d 362564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^In archive [^:]*:/d 362664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Ensure marker is printed 362764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^====MARK====/p 362864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove all lines with less than 43 characters 362964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^.\{43\}/!d 363064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # From remaining lines, remove first 43 characters 363164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/^.\{43\}//' | 363264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -n ' 363364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Join marker and all lines until next marker into a single line 363464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /^====MARK====/ b para 363564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci H 363664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ b para 363764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci b 363864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci :para 363964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci x 364064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/\n//g 364164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove the marker 364264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/^====MARK====// 364364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove trailing dots and whitespace 364464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci s/[\. \t]*$// 364564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Print 364664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /./p' | 364764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # we now have a list, one entry per line, of the stringified 364864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # contents of the appropriate section of all members of the 364964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # archive which possess that section. Heuristic: eliminate 365064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # all those which have a first or second character that is 365164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # a '.' (that is, objdump's representation of an unprintable 365264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # character.) This should work for all archives with less than 365364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # 0x302f exports -- but will fail for DLLs whose name actually 365464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # begins with a literal '.' or a single character followed by 365564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # a '.'. 365664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # 365764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Of those that remain, print the first one. 365864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -e '/^\./d;/^.\./d;q' 365964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 366064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 366164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_gnu_implib_p ARG 366264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This predicate returns with zero status (TRUE) if 366364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is a GNU/binutils-style import library. Returns 366464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# with nonzero status (FALSE) otherwise. 366564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_gnu_implib_p () 366664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 366764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 366864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$1" func_convert_file_msys_to_w32 366964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 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)$'` 367064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$func_cygming_gnu_implib_tmp" 367164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 367264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 367364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_ms_implib_p ARG 367464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This predicate returns with zero status (TRUE) if 367564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is an MS-style import library. Returns 367664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# with nonzero status (FALSE) otherwise. 367764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_ms_implib_p () 367864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 367964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 368064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$1" func_convert_file_msys_to_w32 368164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 368264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$func_cygming_ms_implib_tmp" 368364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 368464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 368564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib_fallback ARG 368664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Platform-specific function to extract the 368764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# name of the DLL associated with the specified 368864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# import library ARG. 368964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 369064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This fallback implementation is for use when $DLLTOOL 369164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# does not support the --identify-strict option. 369264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoked by eval'ing the libtool variable 369364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $sharedlib_from_linklib_cmd 369464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in the variable 369564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $sharedlib_from_linklib_result 369664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib_fallback () 369764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 369864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 369964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if func_cygming_gnu_implib_p "$1" ; then 370064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # binutils import library 370164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 370264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci elif func_cygming_ms_implib_p "$1" ; then 370364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # ms-generated import library 370464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 370564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 370664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # unknown 370764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sharedlib_from_linklib_result="" 370864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 370964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 3710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_an_archive dir oldlib 3713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_an_archive () 3714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 3716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f_ex_an_ar_dir="$1"; shift 3717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville f_ex_an_ar_oldlib="$1" 371864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$lock_old_archive_extraction" = yes; then 371964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lockfile=$f_ex_an_ar_oldlib.lock 372064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 372164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_echo "Waiting for $lockfile to be removed" 372264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sleep 2 372364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 372464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 372564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 372664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 'stat=$?; rm -f "$lockfile"; exit $stat' 372764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$lock_old_archive_extraction" = yes; then 372864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || rm -f "$lockfile" 372964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 3730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 3732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 3735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_archives gentop oldlib ... 3739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_archives () 3740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 3741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 3742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_gentop="$1"; shift 3743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_oldlibs=${1+"$@"} 3744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_oldobjs="" 3745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib="" 3746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xabs="" 3747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xdir="" 3748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for my_xlib in $my_oldlibs; do 3750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract the objects. 3751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $my_xlib in 3752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) my_xabs=`pwd`"/$my_xlib" ;; 3754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$my_xlib" 3756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib="$func_basename_result" 3757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib_u=$my_xlib 3758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while :; do 3759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $extracted_archives " in 3760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $my_xlib_u "*) 3761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $extracted_serial + 1 3762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extracted_serial=$func_arith_result 3763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) break ;; 3765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 3766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville extracted_archives="$extracted_archives $my_xlib_u" 3768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville my_xdir="$my_gentop/$my_xlib_u" 3769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$my_xdir" 3771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 3773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-darwin*) 3774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "Extracting $my_xabs" 3775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not bother doing anything if just a dry run 3776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 3777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_orig_dir=`pwd` 3778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd $my_xdir || exit $? 3779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_archive=$my_xabs 3780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_curdir=`pwd` 3781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_base_archive=`basename "$darwin_archive"` 3782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$darwin_arches"; then 3784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_arch= 3786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for darwin_arch in $darwin_arches ; do 3788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "$darwin_curdir" 3793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # $darwin_arches 3795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_file= 3798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_files= 3799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for darwin_file in $darwin_filelist; do 380064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LIPO -create -output "$darwin_file" $darwin_files 3802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # $darwin_filelist 3803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM -rf unfat-$$ 3804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd "$darwin_orig_dir" 3805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 3806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cd $darwin_orig_dir 3807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "$my_xdir" "$my_xabs" 3808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $darwin_arches 3809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } # !$opt_dry_run 3810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 3812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_an_archive "$my_xdir" "$my_xabs" 3813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 3814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 381564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 3817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives_result="$my_oldobjs" 3819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 3820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 382264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_emit_wrapper [arg=no] 3823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 382464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Emit a libtool wrapper script on stdout. 382564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Don't directly open a file because we may want to 3826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# incorporate the script contents within a cygwin/mingw 3827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# wrapper executable. Must ONLY be called from within 382864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_mode_link because it depends on a number of variables 3829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# set therein. 3830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 383164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable will take. If 'yes', then the emitted script 3833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will assume that the directory in which it is stored is 383464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the $objdir directory. This is a cygwin/mingw-specific 3835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior. 3836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_wrapper () 3837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 383864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_emit_wrapper_arg1=${1-no} 3839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 3841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#! $SHELL 3842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $output - temporary wrapper script for $objdir/$outputname 3844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 3846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The $output program cannot be directly executed until all the libtool 3847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libraries that it depends on are installed. 3848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 3849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This wrapper script should never be moved out of the build directory. 3850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If it is, it will not operate correctly. 3851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting. It backslashifies 3853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings. 3854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='$sed_quote_subst' 3855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible 3857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville emulate sh 3859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville NULLCMD=: 3860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is contrary to our usage. Disable this feature. 3862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville setopt NO_GLOB_SUBST 3864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 3865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 3867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64 3868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh 3869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The HP-UX ksh and POSIX shell print the target directory to stdout 3871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if CDPATH is set. 3872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\" 3875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 3876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This environment variable determines our operation mode. 3877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test \"\$libtool_install_magic\" = \"$magic\"; then 3878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # install mode needs the following variables: 3879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated_by_libtool_version='$macro_version' 3880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs='$notinst_deplibs' 3881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse 3882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$libtool_execute_magic\" != \"$magic\"; then 388464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=\"\$0\"" 388564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 388664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 388764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "\ 388864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 388964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function that is used when there is no print builtin or printf. 389064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_fallback_echo () 389164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 389264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval 'cat <<_LTECHO_EOF 389364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci\$1 389464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci_LTECHO_EOF' 389564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 389664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ECHO=\"$qECHO\" 389764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 389864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 389964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Very basic option parsing. These options are (a) specific to 390064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the libtool wrapper, (b) are identical between the wrapper 390164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# /script/ and the wrapper /executable/ which is used only on 390264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# windows platforms, and (c) all begin with the string "--lt-" 390364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (application programs are unlikely to have options which match 390464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# this pattern). 390564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 390664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# There are only two supported options: --lt-debug and 390764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --lt-dump-script. There is, deliberately, no --lt-help. 390864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 390964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The first argument to this parsing function should be the 391064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# script's $0 value, followed by "$@". 391164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_option_debug= 391264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_parse_lt_options () 391364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 391464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_script_arg0=\$0 391564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 391664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for lt_opt 391764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci do 391864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case \"\$lt_opt\" in 391964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --lt-debug) lt_option_debug=1 ;; 392064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --lt-dump-script) 392164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 392264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 392364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 392464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat \"\$lt_dump_D/\$lt_dump_F\" 392564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit 0 392664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 392764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --lt-*) 392864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 392964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit 1 393064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 393164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 393264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 393364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 393464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Print the debug banner immediately: 393564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n \"\$lt_option_debug\"; then 393664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 393764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 393864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 393964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 394064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Used when --lt-debug. Prints its arguments to stdout 394164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (redirection is the responsibility of the caller) 394264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_lt_dump_args () 394364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 394464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_dump_args_N=1; 394564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for lt_arg 394664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci do 394764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 394864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 394964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 395064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 395164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 395264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Core function for launching the target application 395364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_exec_program_core () 395464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 3955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 395664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $host in 395764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Backslashes separate directories on plain windows 395864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-mingw | *-*-os2* | *-cegcc*) 395964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "\ 396064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n \"\$lt_option_debug\"; then 396164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 396264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_lt_dump_args \${1+\"\$@\"} 1>&2 396364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 396464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 396564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci" 396664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 396764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 396864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 396964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "\ 397064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n \"\$lt_option_debug\"; then 397164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 397264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_lt_dump_args \${1+\"\$@\"} 1>&2 397364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 397464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exec \"\$progdir/\$program\" \${1+\"\$@\"} 397564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci" 397664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 397764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 397864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "\ 397964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 398064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci exit 1 398164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 398264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 398364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function to encapsulate launching the target application 398464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Strips options in the --lt-* namespace from \$@ and 398564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# launches target application with the remaining arguments. 398664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_exec_program () 398764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 398864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case \" \$* \" in 398964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *\\ --lt-*) 399064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for lt_wr_arg 399164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci do 399264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case \$lt_wr_arg in 399364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci --lt-*) ;; 399464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 399564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 399664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shift 399764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done ;; 399864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 399964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_exec_program_core \${1+\"\$@\"} 400064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 400164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 400264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Parse options 400364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find the directory that this script lives in. 400664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Follow symbolic links until we get to the real thisdir. 401064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test -n \"\$file\"; do 401264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there was a directory component, then change thisdir. 4015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"x\$destdir\" != \"x\$file\"; then 4016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \"\$destdir\" in 4017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) thisdir=\"\$thisdir/\$destdir\" ;; 4019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 402264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 402364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 4025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Usually 'no', except on cygwin/mingw when embedded into 4027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the cwrapper. 4028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # special case for '.' 4031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$thisdir\" = \".\"; then 4032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thisdir=\`pwd\` 4033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # remove .libs from thisdir 4035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case \"\$thisdir\" in 403664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $objdir ) thisdir=. ;; 4038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try to get the absolute directory name. 4042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=\`cd \"\$thisdir\" && pwd\` 4043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 4045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes; then 4047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program=lt-'$outputname'$exeext 4049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=\"\$thisdir/$objdir\" 4050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f \"\$progdir/\$program\" || 4052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=\"\$\$-\$program\" 4056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -d \"\$progdir\"; then 4058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MKDIR \"\$progdir\" 4059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 4061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 4062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # relink executable if necessary 4066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n \"\$relink_command\"; then 4067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO \"\$relink_command_output\" >&2 4070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 4071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit 1 4072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { $RM \"\$progdir/\$program\"; 4077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM \"\$progdir/\$file\" 4079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi" 4080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program='$outputname' 4083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville progdir=\"\$thisdir/$objdir\" 4084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 4085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f \"\$progdir/\$program\"; then" 4090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 409164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # fixup the dll searchpath if we need to. 409264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # 409364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Fix the DLL searchpath if we need to. Do this before prepending 409464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # to shlibpath, because on Windows, both are PATH and uninstalled 409564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # libraries must come first. 409664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$dllsearchpath"; then 409764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "\ 409864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Add the dll search path components to the executable PATH 409964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci PATH=$dllsearchpath:\$PATH 410064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci" 410164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 410264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 4103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Export our shlibpath_var if we have one. 4104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add our own library path to $shlibpath_var 4107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some systems cannot cope with colon-terminated $shlibpath_var 4110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The second colon is a workaround for a bug in BeOS R4 sed 411164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export $shlibpath_var 4114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 4115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "\ 4118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Run the actual program with our arguments. 412064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_exec_program \${1+\"\$@\"} 4121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The program doesn't exist. 4124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 412664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit 1 4128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 4129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi\ 4130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville" 4131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 413264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 4133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_emit_cwrapperexe_src 4135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# emit the source code for a wrapper executable on stdout 4136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Must ONLY be called from within func_mode_link because 4137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it depends on a number of variable set therein. 4138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_cwrapperexe_src () 4139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 4141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville The $output program cannot be directly executed until all the libtool 4146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libraries that it depends on are installed. 4147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville This wrapper executable should never be moved out of the build directory. 4149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville If it is, it will not operate correctly. 4150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/ 4151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 415364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifdef _MSC_VER 415464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define _CRT_SECURE_NO_DEPRECATE 1 415564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 4156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdio.h> 4157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdlib.h> 4158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef _MSC_VER 4159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <direct.h> 4160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <process.h> 4161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <io.h> 4162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 4163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <unistd.h> 4164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <stdint.h> 4165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifdef __CYGWIN__ 4166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <io.h> 4167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 4168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <malloc.h> 4170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdarg.h> 4171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <assert.h> 4172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <string.h> 4173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <ctype.h> 4174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <errno.h> 4175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <fcntl.h> 4176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <sys/stat.h> 4177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 417864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* declarations of non-ANSI functions */ 417964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(__MINGW32__) 418064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifdef __STRICT_ANSI__ 418164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint _putenv (const char *); 418264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif 418364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__CYGWIN__) 418464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifdef __STRICT_ANSI__ 418564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar *realpath (const char *, char *); 418664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint putenv (char *); 418764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint setenv (const char *, const char *, int); 418864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif 418964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* #elif defined (other platforms) ... */ 419064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 419164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 419264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* portability defines, excluding path handling macros */ 419364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(_MSC_VER) 419464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define setmode _setmode 419564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define stat _stat 419664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define chmod _chmod 419764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define getcwd _getcwd 419864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define putenv _putenv 419964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define S_IXUSR _S_IEXEC 420064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifndef _INTPTR_T_DEFINED 420164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define _INTPTR_T_DEFINED 420264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define intptr_t int 420364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif 420464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__MINGW32__) 420564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define setmode _setmode 420664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define stat _stat 420764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define chmod _chmod 420864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define getcwd _getcwd 420964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define putenv _putenv 421064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__CYGWIN__) 421164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define HAVE_SETENV 421264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define FOPEN_WB "wb" 421364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* #elif defined (other platforms) ... */ 421464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 421564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 4216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined(PATH_MAX) 4217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX PATH_MAX 4218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#elif defined(MAXPATHLEN) 4219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX MAXPATHLEN 4220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 4221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX 1024 4222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXOTH 4225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXOTH 0 4226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXGRP 4228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXGRP 0 4229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 423164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* path handling portability macros */ 4232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR 4233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define DIR_SEPARATOR '/' 4234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define PATH_SEPARATOR ':' 4235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville defined (__OS2__) 4239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define HAVE_DOS_BASED_FILE_SYSTEM 4240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "wb" 4241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef DIR_SEPARATOR_2 4242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define DIR_SEPARATOR_2 '\\' 4243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 4244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef PATH_SEPARATOR_2 4245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define PATH_SEPARATOR_2 ';' 4246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif 4247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR_2 4250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* DIR_SEPARATOR_2 */ 4252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) \ 4253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* DIR_SEPARATOR_2 */ 4255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PATH_SEPARATOR_2 4257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* PATH_SEPARATOR_2 */ 4259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* PATH_SEPARATOR_2 */ 4261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef FOPEN_WB 4263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "w" 4264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef _O_BINARY 4266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define _O_BINARY 0 4267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XFREE(stale) do { \ 4271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (stale) { free ((void *) stale); stale = 0; } \ 4272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} while (0) 4273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 427464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(LT_DEBUGWRAPPER) 427564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic int lt_debug = 1; 4276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 427764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic int lt_debug = 0; 4278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 428064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid *xmalloc (size_t num); 4283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *xstrdup (const char *string); 4284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char *base_name (const char *name); 4285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *find_executable (const char *wrapper); 4286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *chase_symlinks (const char *pathspec); 4287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint make_executable (const char *path); 4288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint check_executable (const char *path); 4289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *strendzap (char *str, const char *pat); 429064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 429164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_fatal (const char *file, int line, const char *message, ...); 429264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *nonnull (const char *s); 429364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *nonempty (const char *s); 429464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_setenv (const char *name, const char *value); 429564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar *lt_extend_str (const char *orig_value, const char *add, int to_end); 429664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_update_exe_path (const char *name, const char *value); 429764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_update_lib_path (const char *name, const char *value); 429864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar **prepare_spawn (char **argv); 429964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_dump_script (FILE *f); 430064d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 4301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 430264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 430364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivolatile const char * MAGIC_EXE = "$magic_exe"; 430464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 430764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 430864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path "$temp_rpath" 430964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 431064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 431164d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 431264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 431364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 431464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VALUE = ""; 431564d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 431664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 4317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 431864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$dllsearchpath"; then 431964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_host_path "$dllsearchpath:" 432064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 432164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VARNAME = "PATH"; 432264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 432364d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 432464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 432564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 432664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VARNAME = ""; 432764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VALUE = ""; 432864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 432964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 433064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 433164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$fast_install" = yes; then 433264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 433364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 433464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 433564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 433664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 433764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 433864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 433964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 434064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 434164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 434264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 434364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 434464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define LTWRAPPER_OPTION_PREFIX "--lt-" 434564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 434664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 434764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 434864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 4351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemain (int argc, char *argv[]) 4352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char **newargz; 435464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int newargc; 4355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *tmp_pathspec; 4356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *actual_cwrapper_path; 435764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *actual_cwrapper_name; 435864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *target_name; 435964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *lt_argv_zero; 4360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville intptr_t rval = 127; 4361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int i; 4363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville program_name = (char *) xstrdup (base_name (argv[0])); 436564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargz = XMALLOC (char *, argc + 1); 4366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 436764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* very simple arg parsing; don't want to rely on getopt 436864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * also, copy all non cwrapper options to newargz, except 436964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * argz[0], which is handled differently 437064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 437164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargc=0; 4372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (i = 1; i < argc; i++) 4373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (strcmp (argv[i], dumpscript_opt) == 0) 4375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$host" in 4378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *mingw* | *cygwin* ) 4379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # make stdout use "unix" line endings 4380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville echo " setmode(1,_O_BINARY);" 4381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 438464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 438564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_dump_script (stdout); 4386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 4387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 438864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (strcmp (argv[i], debug_opt) == 0) 438964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 439064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debug = 1; 439164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci continue; 439264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 439364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 439464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 439564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 439664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci namespace, but it is not one of the ones we know about and 439764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci have already dealt with, above (inluding dump-script), then 439864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci report an error. Otherwise, targets might begin to believe 439964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 440064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci namespace. The first time any user complains about this, we'll 440164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci need to make LTWRAPPER_OPTION_PREFIX a configure-time option 440264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci or a configure.ac-settable value. 440364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 440464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, 440564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "unrecognized %s option: '%s'", 440664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ltwrapper_option_prefix, argv[i]); 440764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 440864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* otherwise ... */ 440964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargz[++newargc] = xstrdup (argv[i]); 4410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 441164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargz[++newargc] = NULL; 4412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 441464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<EOF 441564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* The GNU banner must be the first non-error debug message */ 441664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 441964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 442064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 442164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 4422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = find_executable (argv[0]); 4423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (tmp_pathspec == NULL) 442464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 442564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 442664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(main) found exe (before symlink chase) at: %s\n", 442764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec); 4428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville actual_cwrapper_path = chase_symlinks (tmp_pathspec); 443064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 443164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(main) found exe (after symlink chase) at: %s\n", 443264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci actual_cwrapper_path); 4433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (tmp_pathspec); 4434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 443564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 443664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strendzap (actual_cwrapper_path, actual_cwrapper_name); 443764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 443864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* wrapper name transforms */ 443964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strendzap (actual_cwrapper_name, ".exe"); 444064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 444164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (actual_cwrapper_name); 444264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci actual_cwrapper_name = tmp_pathspec; 444364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec = 0; 444464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 444564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* target_name transforms -- use actual target program name; might have lt- prefix */ 444664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 444764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strendzap (target_name, ".exe"); 444864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 444964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (target_name); 445064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci target_name = tmp_pathspec; 4451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = 0; 445264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 445364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 445464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(main) libtool target name: %s\n", 445564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci target_name); 4456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<EOF 445964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargz[0] = 4460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, (strlen (actual_cwrapper_path) + 446164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 446264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcpy (newargz[0], actual_cwrapper_path); 446364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcat (newargz[0], "$objdir"); 446464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcat (newargz[0], "/"); 4465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 446764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 446864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* stop here, and copy so we don't have to do this twice */ 446964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec = xstrdup (newargz[0]); 447064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 447164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 447264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcat (newargz[0], actual_cwrapper_name); 447364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 447464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* DO want the lt- prefix here if it exists, so use target_name */ 447564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 447664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (tmp_pathspec); 447764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec = NULL; 447864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 4479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 4481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville mingw*) 4482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 4483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char* p; 448564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while ((p = strchr (newargz[0], '\\')) != NULL) 448664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 448764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p = '/'; 448864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 448964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *p = '/'; 4492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 449964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (target_name); 4500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (actual_cwrapper_path); 450164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (actual_cwrapper_name); 450264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 450364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 450464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 450564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 450664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 450764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci because on Windows, both *_VARNAMEs are PATH but uninstalled 450864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libraries must come first. */ 450964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 451064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 451164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 451264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 451364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (lt_argv_zero)); 451464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (i = 0; i < newargc; i++) 4515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 451664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 451764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci i, nonnull (newargz[i])); 4518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 4523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville mingw*) 452464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 4525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* execv doesn't actually work on mingw as expected on unix */ 452664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newargz = prepare_spawn (newargz); 452764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (rval == -1) 4529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* failed to start process */ 453164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 453264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(main) failed to launch target \"%s\": %s\n", 453364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_argv_zero, nonnull (strerror (errno))); 4534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 127; 4535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; 4537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 454064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 454164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci execv (lt_argv_zero, newargz); 4542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; /* =127, but avoids unused variable warning */ 4543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 4544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 4545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 4546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat <<"EOF" 454864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 4549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid * 4551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexmalloc (size_t num) 4552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville void *p = (void *) malloc (num); 4554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!p) 455564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return p; 4558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 4561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexstrdup (const char *string) 4562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville string) : NULL; 4565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char * 4568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebase_name (const char *name) 4569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *base; 4571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Skip over the disk name in MSDOS pathnames. */ 4574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name += 2; 4576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (base = name; *name; name++) 4579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_DIR_SEPARATOR (*name)) 4580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base = name + 1; 4581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return base; 4582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 4585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecheck_executable (const char *path) 4586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat st; 4588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 458964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 459064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonempty (path)); 4591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((!path) || (!*path)) 4592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 4593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((stat (path, &st) >= 0) 4595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 1; 4597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 4599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint 4602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemake_executable (const char *path) 4603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int rval = 0; 4605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat st; 4606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 460764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 460864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonempty (path)); 4609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((!path) || (!*path)) 4610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return 0; 4611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (stat (path, &st) >= 0) 4613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return rval; 4617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Searches for the full path of the wrapper. Returns 4620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newly allocated full path name if found, NULL otherwise 4621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Does not chase symlinks, even on platforms that support them. 4622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/ 4623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 4624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefind_executable (const char *wrapper) 4625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int has_slash = 0; 4627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *p; 4628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *p_next; 4629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* static buffer for getcwd */ 4630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char tmp[LT_PATHMAX + 1]; 4631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int tmp_len; 4632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *concat_name; 4633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 463464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 463564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonempty (wrapper)); 4636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((wrapper == NULL) || (*wrapper == '\0')) 4638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 4639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Absolute path? */ 4641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = xstrdup (wrapper); 4645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 4646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 4647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 4648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_DIR_SEPARATOR (wrapper[0])) 4653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = xstrdup (wrapper); 4655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 4656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 4657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 4658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (p = wrapper; *p; p++) 4664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (*p == '/') 4665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville has_slash = 1; 4667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 4668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!has_slash) 4670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* no slashes; search PATH */ 4672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *path = getenv ("PATH"); 4673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (path != NULL) 4674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (p = path; *p; p = p_next) 4676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *q; 4678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville size_t p_len; 4679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (q = p; *q; q++) 4680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (IS_PATH_SEPARATOR (*q)) 4681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 4682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p_len = q - p; 4683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p_next = (*q == '\0' ? q : q + 1); 4684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (p_len == 0) 4685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* empty path: current directory */ 4687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (getcwd (tmp, LT_PATHMAX) == NULL) 468864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 468964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (strerror (errno))); 4690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_len = strlen (tmp); 4691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = 4692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, tmp, tmp_len); 4694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[tmp_len] = '/'; 4695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + tmp_len + 1, wrapper); 4696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = 4700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, p, p_len); 4702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[p_len] = '/'; 4703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + p_len + 1, wrapper); 4704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 4706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 4707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 4708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* not found in PATH; assume curdir */ 4711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* Relative path | not found in path: prepend cwd */ 4713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (getcwd (tmp, LT_PATHMAX) == NULL) 471464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 471564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (strerror (errno))); 4716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_len = strlen (tmp); 4717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville memcpy (concat_name, tmp, tmp_len); 4719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_name[tmp_len] = '/'; 4720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville strcpy (concat_name + tmp_len + 1, wrapper); 4721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (check_executable (concat_name)) 4723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return concat_name; 4724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (concat_name); 4725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 4726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 4729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechase_symlinks (const char *pathspec) 4730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_ISLNK 4732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (pathspec); 4733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 4734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char buf[LT_PATHMAX]; 4735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville struct stat s; 4736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *tmp_pathspec = xstrdup (pathspec); 4737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville char *p; 4738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int has_symlinks = 0; 4739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while (strlen (tmp_pathspec) && !has_symlinks) 4740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 474164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 474264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "checking path component for symlinks: %s\n", 474364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec); 4744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (lstat (tmp_pathspec, &s) == 0) 4745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (S_ISLNK (s.st_mode) != 0) 4747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville has_symlinks = 1; 4749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 4750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* search backwards for last DIR_SEPARATOR */ 4753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville p--; 4756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville /* no more DIR_SEPARATORS left */ 4759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break; 4760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *p = '\0'; 4762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 4764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 476564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, 476664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "error accessing file \"%s\": %s", 476764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_pathspec, nonnull (strerror (errno))); 4768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville XFREE (tmp_pathspec); 4771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (!has_symlinks) 4773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (pathspec); 4775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_pathspec = realpath (pathspec, buf); 4778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (tmp_pathspec == 0) 4779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 478064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_fatal (__FILE__, __LINE__, 478164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "could not follow symlinks for %s", pathspec); 4782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return xstrdup (tmp_pathspec); 4784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif 4785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar * 4788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestrendzap (char *str, const char *pat) 4789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville size_t len, patlen; 4791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville assert (str != NULL); 4793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville assert (pat != NULL); 4794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len = strlen (str); 4796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville patlen = strlen (pat); 4797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (patlen <= len) 4799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { 4800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville str += len - patlen; 4801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (strcmp (str, pat) == 0) 4802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *str = '\0'; 4803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 4804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return str; 4805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 480764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid 480864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_debugprintf (const char *file, int line, const char *fmt, ...) 480964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 481064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci va_list args; 481164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (lt_debug) 481264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 481364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 481464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci va_start (args, fmt); 481564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci (void) vfprintf (stderr, fmt, args); 481664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci va_end (args); 481764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 481864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 481964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 4820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic void 482164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_error_core (int exit_status, const char *file, 482264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int line, const char *mode, 4823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const char *message, va_list ap) 4824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 482564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vfprintf (stderr, message, ap); 4827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fprintf (stderr, ".\n"); 4828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (exit_status >= 0) 4830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit (exit_status); 4831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 4832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 4833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid 483464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_fatal (const char *file, int line, const char *message, ...) 4835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 4836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_list ap; 4837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_start (ap, message); 483864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville va_end (ap); 4840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 484164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 484264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char * 484364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinonnull (const char *s) 484464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 484564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return s ? s : "(null)"; 484664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 484764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 484864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char * 484964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinonempty (const char *s) 485064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 485164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return (s && !*s) ? "(empty)" : nonnull (s); 485264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 485364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 485464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid 485564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_setenv (const char *name, const char *value) 485664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 485764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 485864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(lt_setenv) setting '%s' to '%s'\n", 485964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (name), nonnull (value)); 486064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 486164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifdef HAVE_SETENV 486264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* always make a copy, for consistency with !HAVE_SETENV */ 486364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *str = xstrdup (value); 486464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci setenv (name, str, 1); 486564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#else 486664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int len = strlen (name) + 1 + strlen (value) + 1; 486764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *str = XMALLOC (char, len); 486864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci sprintf (str, "%s=%s", name, value); 486964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (putenv (str) != EXIT_SUCCESS) 487064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 487164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (str); 487264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 487364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif 487464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 487564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 487664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 487764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar * 487864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_extend_str (const char *orig_value, const char *add, int to_end) 487964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 488064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *new_value; 488164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (orig_value && *orig_value) 488264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 488364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int orig_value_len = strlen (orig_value); 488464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int add_len = strlen (add); 488564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_value = XMALLOC (char, add_len + orig_value_len + 1); 488664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (to_end) 488764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 488864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcpy (new_value, orig_value); 488964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcpy (new_value + orig_value_len, add); 489064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 489164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 489264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 489364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcpy (new_value, add); 489464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci strcpy (new_value + add_len, orig_value); 489564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 489664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 489764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 489864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 489964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_value = xstrdup (add); 490064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 490164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return new_value; 490264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 490364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 490464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid 490564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_update_exe_path (const char *name, const char *value) 490664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 490764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 490864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 490964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (name), nonnull (value)); 491064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 491164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (name && *name && value && *value) 491264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 491364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *new_value = lt_extend_str (getenv (name), value, 0); 491464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* some systems can't cope with a ':'-terminated path #' */ 491564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int len = strlen (new_value); 491664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 491764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 491864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_value[len-1] = '\0'; 491964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 492064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_setenv (name, new_value); 492164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (new_value); 492264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 492364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 492464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 492564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid 492664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_update_lib_path (const char *name, const char *value) 492764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 492864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_debugprintf (__FILE__, __LINE__, 492964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 493064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci nonnull (name), nonnull (value)); 493164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 493264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (name && *name && value && *value) 493364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 493464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *new_value = lt_extend_str (getenv (name), value, 0); 493564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lt_setenv (name, new_value); 493664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci XFREE (new_value); 493764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 493864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 493964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 494064d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 494164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $host_os in 494264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci mingw*) 494364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 494464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 494564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* Prepares an argument vector before calling spawn(). 494664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci Note that spawn() does not by itself call the command interpreter 494764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 494864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 494964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci GetVersionEx(&v); 495064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci v.dwPlatformId == VER_PLATFORM_WIN32_NT; 495164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci }) ? "cmd.exe" : "command.com"). 495264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci Instead it simply concatenates the arguments, separated by ' ', and calls 495364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci CreateProcess(). We must quote the arguments since Win32 CreateProcess() 495464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 495564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci special way: 495664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci - Space and tab are interpreted as delimiters. They are not treated as 495764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci delimiters if they are surrounded by double quotes: "...". 495864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci - Unescaped double quotes are removed from the input. Their only effect is 495964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci that within double quotes, space and tab are treated like normal 496064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci characters. 496164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci - Backslashes not followed by double quotes are not special. 496264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci - But 2*n+1 backslashes followed by a double quote become 496364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci n backslashes followed by a double quote (n >= 0): 496464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \" -> " 496564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \\\" -> \" 496664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci \\\\\" -> \\" 496764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */ 496864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#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" 496964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#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" 497064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar ** 497164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciprepare_spawn (char **argv) 497264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 497364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci size_t argc; 497464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char **new_argv; 497564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci size_t i; 497664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 497764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* Count number of arguments. */ 497864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (argc = 0; argv[argc] != NULL; argc++) 497964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ; 498064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 498164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* Allocate new argument vector. */ 498264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_argv = XMALLOC (char *, argc + 1); 498364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 498464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci /* Put quoted arguments into the new argument vector. */ 498564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (i = 0; i < argc; i++) 498664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 498764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci const char *string = argv[i]; 498864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 498964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (string[0] == '\0') 499064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_argv[i] = xstrdup ("\"\""); 499164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 499264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 499364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 499464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci size_t length; 499564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci unsigned int backslashes; 499664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci const char *s; 499764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *quoted_string; 499864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char *p; 499964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 500064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci length = 0; 500164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes = 0; 500264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (quote_around) 500364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci length++; 500464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (s = string; *s != '\0'; s++) 500564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 500664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char c = *s; 500764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (c == '"') 500864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci length += backslashes + 1; 500964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci length++; 501064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (c == '\\') 501164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes++; 501264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 501364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes = 0; 501464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 501564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (quote_around) 501664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci length += backslashes + 1; 501764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 501864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci quoted_string = XMALLOC (char, length + 1); 501964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 502064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci p = quoted_string; 502164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes = 0; 502264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (quote_around) 502364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p++ = '"'; 502464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (s = string; *s != '\0'; s++) 502564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 502664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci char c = *s; 502764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (c == '"') 502864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 502964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci unsigned int j; 503064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (j = backslashes + 1; j > 0; j--) 503164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p++ = '\\'; 503264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 503364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p++ = c; 503464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (c == '\\') 503564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes++; 503664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 503764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci backslashes = 0; 503864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 503964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if (quote_around) 504064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { 504164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci unsigned int j; 504264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for (j = backslashes; j > 0; j--) 504364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p++ = '\\'; 504464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p++ = '"'; 504564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 504664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *p = '\0'; 504764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 504864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_argv[i] = quoted_string; 504964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 505064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 505164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_argv[i] = (char *) string; 505264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci } 505364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_argv[argc] = NULL; 505464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 505564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci return new_argv; 505664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 505764d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 505864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 505964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 506064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 506164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 506264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_dump_script (FILE* f) 506364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 506464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF 506564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_emit_wrapper yes | 506664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $SED -n -e ' 506764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/^\(.\{79\}\)\(..*\)/\1\ 506864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci\2/ 506964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcih 507064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/\([\\"]\)/\\\1/g 507164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/$/\\n/ 507264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/\([^\n]*\).*/ fputs ("\1", f);/p 507364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcig 507464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciD' 507564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cat <<"EOF" 507664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 5077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 5078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 5079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# end: func_emit_cwrapperexe_src 5080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 508164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_win32_import_lib_p ARG 508264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# True if ARG is an import lib, as indicated by $file_magic_cmd 508364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_win32_import_lib_p () 508464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ 508564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_debug 508664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 508764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *import*) : ;; 508864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) false ;; 508964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 509064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} 509164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 5092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_link arg... 5093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_link () 5094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 5095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 5096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 509764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # It is impossible to link a dll without this setting, and 5099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we shouldn't force the makefile maintainer to figure out 5100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which system we are compiling for in order to pass an extra 5101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # flag for every libtool invocation. 5102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # allow_undefined=no 5103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: Unfortunately, there are problems with the above when trying 5105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to make a dll which has undefined symbols, in which case not 5106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # even a static library is built. For now, we need to specify 5107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -no-undefined on the libtool link line when we can be certain 5108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that all symbols are satisfied, otherwise we get a static library. 5109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=yes 5110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=yes 5113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_args=$nonopt 5116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville base_compile="$nonopt $@" 5117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command=$nonopt 5118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command=$nonopt 5119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_rpath= 5121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_rpath= 5122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_shlibpath= 5123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_shlibpath= 5124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville convenience= 5125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_convenience= 5126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 5127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_deplibs= 5128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compiler_flags= 5129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linker_flags= 5130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dllsearchpath= 5131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_search_path=`pwd` 5132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix_dir= 5133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_inherited_linker_flags= 5134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoid_version=no 513664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci bindir= 5137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles= 5138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles= 5139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=no 5140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=no 5141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols= 5142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols_regex= 5143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville generated= 5144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs= 5145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ltlibs= 5146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville module=no 5147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no_install=no 5148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objs= 5149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_objects= 5150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_files_regex= 5151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=no 5152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville preload=no 5153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prevarg= 5155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release= 5156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 5157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xrpath= 5158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville perm_rpath= 5159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_rpath= 5160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thread_safe=no 5161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo= 5162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo_number=no 5163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville weak_libs= 5164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville single_module="${wl}-single_module" 5165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_infer_tag $base_compile 5166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to know -static, to get the right output filenames. 5168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 5169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 5170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 5171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 5172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" != yes && \ 5173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "can not build a shared library" 5174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=no 5175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 5176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static | -static | -static-libtool-libs) 5178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 5179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static) 5180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "complete static linking is impossible in this configuration" 5182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$link_static_flag"; then 5184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 5185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=yes 5187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static) 5189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 5191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=built 5193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static-libtool-libs) 5195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen_self=$dlopen_self_static 5197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prefer_static_libs=yes 5199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 5202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 5203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 5204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See if our shared archives depend on static archives. 5209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Go through the arguments, transforming them on the way. 5212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$#" -gt 0; do 5213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$1" 5214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 5215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 5216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qarg=$func_quote_for_eval_unquoted_result 5217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libtool_args " $func_quote_for_eval_result" 5218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the previous option needs an argument, assign it. 5220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prev"; then 5221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $prev in 5222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output) 5223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " @OUTPUT@" 5224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " @OUTPUT@" 5225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $prev in 522964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci bindir) 523064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci bindir="$arg" 523164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci prev= 523264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci continue 523364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 5234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles|dlprefiles) 5235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$preload" = no; then 5236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the symbol object into the linking commands. 5237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " @SYMFILE@" 5238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " @SYMFILE@" 5239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville preload=yes 5240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 5242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la | *.lo) ;; # We handle these cases below. 5243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville force) 5244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$dlself" = no; then 5245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=needless 5246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 5247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville self) 5252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 5253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=yes 5254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=yes 5256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlself=needless 5258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 5259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 526564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlfiles " $arg" 5266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 526764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlprefiles " $arg" 5268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville expsyms) 5275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$arg" 5276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$arg" \ 5277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_error "symbol file \`$arg' does not exist" 5278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville expsyms_regex) 5282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols_regex="$arg" 5283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville framework) 5287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 5289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$deplibs " in 5290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $qarg.ltframework "*) ;; 529164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix) 5300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inst_prefix_dir="$arg" 5301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objectlist) 5305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$arg"; then 5306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_arg=$arg 5307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville moreargs= 5308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for fil in `cat "$save_arg"` 5309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 531064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_append moreargs " $fil" 5311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$fil 5312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled object. 5313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool object. 5315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_unsafe_p "$arg"; then 5316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object= 5317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object= 5318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 5320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$arg" 5321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || 5323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$non_pic_object" || 5324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" = none && 5325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" = none; then 5326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of object for \`$arg'" 5327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 5330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 5331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 5332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_object" != none; then 5334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 5335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object="$xdir$pic_object" 5336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 5338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 533964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlfiles " $pic_object" 5340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If libtool objects are unsupported, then we need to preload. 5344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 5345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # CHECK ME: I think I busted this. -Ossama 5349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 5350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preload the old-style object. 535164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlprefiles " $pic_object" 5352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A PIC object. 5356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 5357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$pic_object" 5358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Non-PIC object. 5361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$non_pic_object" != none; then 5362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 5363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$xdir$non_pic_object" 5364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard non-PIC object 5366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || test "$pic_object" = none ; then 5368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$non_pic_object" 5369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the PIC object exists, use it instead. 5372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $xdir was prepended to $pic_object above. 5373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$pic_object" 5374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only an error if not doing a dry-run. 5378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_dry_run; then 5379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 5380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 5381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 5382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$arg" 5384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object=$xdir$objdir/$func_lo2o_result 5385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object=$xdir$func_lo2o_result 5386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 5387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$arg' is not a valid libtool object" 5390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "link input file \`$arg' does not exist" 5395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$save_arg 5397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_regex) 5401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville precious_files_regex="$arg" 5402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release) 5406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release="-$arg" 5407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath | xrpath) 5411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 5412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 5413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 5414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only absolute run-paths are allowed" 5416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = rpath; then 5419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$rpath " in 5420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 542164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append rpath " $arg" ;; 5422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 5425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 542664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append xrpath " $arg" ;; 5427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shrext) 5433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shrext_cmds="$arg" 5434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville weak) 543864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append weak_libs " $arg" 5439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xcclinker) 544364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linker_flags " $qarg" 544464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $qarg" 5445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $qarg" 5447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $qarg" 5448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xcompiler) 545164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $qarg" 5452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $qarg" 5454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $qarg" 5455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xlinker) 545864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linker_flags " $qarg" 545964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $wl$qarg" 5460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $wl$qarg" 5462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $wl$qarg" 5463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$prev=\"\$arg\"" 5467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # test -n "$prev" 5472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prevarg="$arg" 5474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 5476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -all-static) 5477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$link_static_flag"; then 5478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See comment for -static flag below, for more details. 5479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $link_static_flag" 5480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $link_static_flag" 5481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -allow-undefined) 5486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: remove this flag sometime in the future. 5487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -avoid-version) 5491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoid_version=yes 5492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 549564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -bindir) 549664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci prev=bindir 549764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci continue 549864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 549964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 5500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlopen) 5501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlfiles 5502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -dlpreopen) 5506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 5507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-dynamic) 5511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_dynamic=yes 5512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -export-symbols | -export-symbols-regex) 5516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "more than one -exported-symbols argument is not allowed" 5518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$arg" = "X-export-symbols"; then 5520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=expsyms 5521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=expsyms_regex 5523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -framework) 5528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=framework 5529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -inst-prefix-dir) 5533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=inst_prefix 5534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so, if we see these flags be careful not to treat them like -L 5539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L[A-Z][A-Z]*:*) 5540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $with_gcc/$host in 5541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no/*-*-irix* | /*-*-irix*) 5542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 5543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 5544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 555064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname "-L" '' "$arg" 555164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -z "$func_stripname_result"; then 555264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$#" -gt 0; then 555364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_error "require no space between \`-L' and \`$1'" 555464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 555564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_error "need path for \`-L' option" 555664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 555764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 555864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result" 555964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dir=$func_resolve_sysroot_result 5560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 5561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 5562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 5563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 5565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$absdir" && \ 5566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$absdir" 5568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$deplibs " in 557164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" -L$dir "* | *" $arg "*) 557264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Will only happen for absolute or sysroot arguments 557364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 5574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 557564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Preserve sysroot, but never include relative directories 557664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $dir in 557764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 557864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append deplibs " -L$dir" ;; 557964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 558064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append lib_search_path " $dir" 5581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 558464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 558564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 5587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$dir:"*) ;; 558864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ::) dllsearchpath=$dir;; 558964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dllsearchpath ":$dir";; 5590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 5592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$testbindir:"*) ;; 559364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ::) dllsearchpath=$testbindir;; 559464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dllsearchpath ":$testbindir";; 5595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 5602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 560464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # These systems don't actually have a C or math library (as such) 5606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-os2*) 5609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # These systems don't actually have a C library (as such) 5610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 5611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc due to us having libc/libc_r. 5614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 5615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 5617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Rhapsody C and math libraries are in the System framework 561864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " System.ltframework" 5619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5* | *-*-sco5v6*) 5622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Causes problems with __ctype 5623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 5624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compiler inserts libc in the correct place for threads to work 5627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$arg" = "X-lc" && continue 5628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "X$arg" = "X-lc_r"; then 5631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 5632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc_r directly, use -pthread flag. 5634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 563864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " $arg" 5639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -module) 5643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville module=yes 5644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # classes, name mangling, and exception handling. 5649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Darwin uses the -arch flag to determine output architecture. 565064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -model|-arch|-isysroot|--sysroot) 565164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $arg" 5652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 5653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 5654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcompiler 5655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 565864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 565964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 566064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $arg" 5661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 5662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 5663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 5664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $arg "*) ;; 566564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * ) func_append new_inherited_linker_flags " $arg" ;; 5666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -multi_module) 5671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville single_module="${wl}-multi_module" 5672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-fast-install) 5676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fast_install=no 5677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-install) 5681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 568264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The PATH hackery in wrapper scripts is required on Windows 5684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and Darwin in order for the loader to find any dlls it needs. 5685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-no-install' is ignored for $host" 5686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "assuming \`-no-fast-install' instead" 5687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fast_install=no 5688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) no_install=yes ;; 5690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -no-undefined) 5695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined=no 5696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -objectlist) 5700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=objectlist 5701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -o) prev=output ;; 5705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -precious-files-regex) 5707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=precious_regex 5708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -release) 5712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=release 5713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -rpath) 5717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=rpath 5718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R) 5722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xrpath 5723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) 5727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-R' '' "$arg" 5728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$func_stripname_result 5729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 5730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 5731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) ;; 573264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci =*) 573364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname '=' '' "$dir" 573464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dir=$lt_sysroot$func_stripname_result 573564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 5736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only absolute run-paths are allowed" 5738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 5741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 574264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append xrpath " $dir" ;; 5743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 5744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shared) 5748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The effects of -shared are defined in a previous loop. 5749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -shrext) 5753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=shrext 5754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -static | -static-libtool-libs) 5758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The effects of -static are defined in a previous loop. 5759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We used to do the same as -all-static on platforms that 5760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # didn't have a PIC flag, but the assumption that the effects 5761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # would be equivalent was wrong. It would break on at least 5762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Digital Unix and AIX. 5763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -thread-safe) 5767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville thread_safe=yes 5768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-info) 5772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=vinfo 5773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -version-number) 5777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=vinfo 5778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vinfo_number=yes 5779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -weak) 5783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=weak 5784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wc,*) 5788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wc,' '' "$arg" 5789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 5790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg= 5791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 5792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for flag in $args; do 5793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 5794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$flag" 579564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append arg " $func_quote_for_eval_result" 579664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $func_quote_for_eval_result" 5797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 5799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$arg" 5800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$func_stripname_result 5801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Wl,*) 5804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-Wl,' '' "$arg" 5805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville args=$func_stripname_result 5806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg= 5807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=',' 5808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for flag in $args; do 5809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 5810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$flag" 581164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append arg " $wl$func_quote_for_eval_result" 581264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $wl$func_quote_for_eval_result" 581364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linker_flags " $func_quote_for_eval_result" 5814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 5815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 5816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname ' ' '' "$arg" 5817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg=$func_stripname_result 5818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xcompiler) 5821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcompiler 5822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -Xlinker) 5826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xlinker 5827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -XCClinker) 5831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=xcclinker 5832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -msg_* for osf cc 5836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -msg_*) 5837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 5838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 5839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 584164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Flags to be passed through unchanged, with rationale: 584264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 584364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -r[0-9][0-9]* specify processor for the SGI compiler 584464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 584564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # +DA*, +DD* enable 64-bit mode for the HP compiler 584664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -q* compiler args for the IBM compiler 584764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 584864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -F/path path to uninstalled frameworks, gcc on darwin 584964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 585064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # @file GCC response files 585164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -tp=* Portland pgcc target processor selection 585264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # --sysroot=* for sysroot support 585364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 585564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 585664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 5858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 5859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 5860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 586164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $arg" 5862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some other compiler flag. 5866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -* | +*) 5867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 5868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 5869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$objext) 5872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard object. 587364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append objs " $arg" 5874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 5877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled object. 5878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool object. 5880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_unsafe_p "$arg"; then 5881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object= 5882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object= 5883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 5885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$arg" 5886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || 5888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$non_pic_object" || 5889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" = none && 5890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" = none; then 5891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of object for \`$arg'" 5892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 5895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 5896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 5897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pic_object" != none; then 5899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 5900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object="$xdir$pic_object" 5901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 5903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 590464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlfiles " $pic_object" 5905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If libtool objects are unsupported, then we need to preload. 5909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev=dlprefiles 5910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # CHECK ME: I think I busted this. -Ossama 5914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlprefiles; then 5915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preload the old-style object. 591664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlprefiles " $pic_object" 5917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A PIC object. 5921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 5922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$pic_object" 5923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Non-PIC object. 5926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$non_pic_object" != none; then 5927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepend the subdirectory the object is found in. 5928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$xdir$non_pic_object" 5929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A standard non-PIC object 5931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$pic_object" || test "$pic_object" = none ; then 5933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$non_pic_object" 5934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the PIC object exists, use it instead. 5937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $xdir was prepended to $pic_object above. 5938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object="$pic_object" 5939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only an error if not doing a dry-run. 5943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_dry_run; then 5944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract subdirectory from the argument. 5945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$arg" "/" "" 5946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xdir="$func_dirname_result" 5947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$arg" 5949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pic_object=$xdir$objdir/$func_lo2o_result 5950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville non_pic_object=$xdir$func_lo2o_result 5951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append libobjs " $pic_object" 5952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append non_pic_objects " $non_pic_object" 5953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 5954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$arg' is not a valid libtool object" 5955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 5960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # An archive. 596164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " $arg" 596264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append old_deplibs " $arg" 5963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 5967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # A libtool-controlled library. 5968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 596964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$arg" 5970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$prev" = dlfiles; then 5971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlopen. 597264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlfiles " $func_resolve_sysroot_result" 5973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$prev" = dlprefiles; then 5975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The library was specified with -dlpreopen. 597664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlprefiles " $func_resolve_sysroot_result" 5977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prev= 5978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 597964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " $func_resolve_sysroot_result" 5980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 5982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some other compiler argument. 5985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 5986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Unknown arguments in both finalize_command and compile_command need 5987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to be aesthetically quoted because they are evaled later. 5988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$arg" 5989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville arg="$func_quote_for_eval_result" 5990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 5991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # arg 5992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 5993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now actually substitute the argument into the commands. 5994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$arg"; then 5995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 5996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 5997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 5998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # argument parsing loop 5999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$prev" && \ 6001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "the \`$prevarg' option requires an argument" 6002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval arg=\"$export_dynamic_flag_spec\" 6005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append compile_command " $arg" 6006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append finalize_command " $arg" 6007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs= 6010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # calculate the name of the file, without its directory 6011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$output" 6012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname="$func_basename_result" 6013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs_save="$libobjs" 6014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var"; then 6016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # get the directories listed in $shlibpath_var 601764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shlib_search_path= 6020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$output" "/" "" 6025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_objdir="$func_dirname_result$objdir" 602664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output_objdir/" 602764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tool_output_objdir=$func_to_tool_file_result 6028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create the object directory. 6029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$output_objdir" 6030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Determine the type of output 6032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 6033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville "") 6034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an output file" 6035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) linkmode=oldlib ;; 6037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo | *.$objext) linkmode=obj ;; 6038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) linkmode=lib ;; 6039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) linkmode=prog ;; # Anything else should be a program. 6040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville specialdeplibs= 6043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs= 6045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find all interdependent deplibs by searching for libraries 6046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that are linked more than once (e.g. -la -lb -la) 6047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 604864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $opt_preserve_dup_deps ; then 6049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$libs " in 605064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 605364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libs " $deplib" 6054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 6057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compute libraries that are listed more than once in $predeps 6060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $postdeps and mark them as special (i.e., whose duplicates are 6061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not to be eliminated). 6062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pre_post_deps= 6063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $opt_duplicate_compiler_generated_deps; then 6064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for pre_post_dep in $predeps $postdeps; do 6065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$pre_post_deps " in 606664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 606864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append pre_post_deps " $pre_post_dep" 6069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pre_post_deps= 6072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 6075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs= 6076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path= 6077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=no # whether we're linking any uninstalled libtool libraries 6078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_deplibs= # not-installed libtool libraries 6079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville notinst_path= # paths that contain not-installed libtool libraries 6080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 6082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 6083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville passes="conv dlpreopen link" 6084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $dlfiles $dlprefiles; do 6085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 6086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) ;; 6087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 6094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs= 6095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs= 6096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alldeplibs=no 6097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 6098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 6099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville passes="conv scan dlopen dlpreopen link" 6100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) passes="conv" 6102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for pass in $passes; do 6106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The preopen pass in lib mode reverses $deplibs; put it back here 6107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # so that -L comes before libs that need it for instance... 6108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link"; then 6109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## FIXME: Find the place where the list is rebuilt in the wrong 6110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ## order, and fix it there properly 6111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs= 6112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 6113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs="$deplib $tmp_deplibs" 6114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$tmp_deplibs" 6116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link" || 6119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode,$pass" = "prog,scan"; then 6120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$deplibs" 6121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 6122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 6124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $pass in 6125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen) libs="$dlfiles" ;; 6126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlpreopen) libs="$dlprefiles" ;; 612764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci link) 612864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libs="$deplibs %DEPLIBS%" 612964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 613064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 6131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,dlpreopen"; then 6134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect and forward deplibs of preopened libtool libs 6135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 6136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Ignore non-libtool-libs 6137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs= 613864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$lib" 6139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 614064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *.la) func_source "$func_resolve_sysroot_result" ;; 6141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect preopened libtool deplibs, except any this library 6144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # has declared as weak libs 6145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 614664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename "$deplib" 614764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci deplib_base=$func_basename_result 6148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $weak_libs " in 6149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib_base "*) ;; 615064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append deplibs " $deplib" ;; 6151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libs="$dlprefiles" 6155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlopen; then 6157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Collect dlpreopened libraries 6158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_deplibs="$deplibs" 6159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs= 6160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $libs; do 6163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib= 6164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 6165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 616664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 616764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 6169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 617264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " $deplib" 6173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib ; then 6174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 6175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 617664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * ) func_append new_inherited_linker_flags " $deplib" ;; 6177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 6183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" != lib && test "$linkmode" != prog; then 6184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' is ignored for archives/objects" 6185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-l' '' "$deplib" 6188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 6190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for searchdir in $searchdirs; do 6195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for search_ext in .la $std_shrext .so .a; do 6196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Search the libtool library 6197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$searchdir/lib${name}${search_ext}" 6198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$lib"; then 6199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$search_ext" = ".la"; then 6200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=yes 6201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 6203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 6205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$found" != yes; then 6209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # deplib doesn't seem to be a libtool library 6210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 6211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else # deplib is a libtool library 6219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to do some special things here, and not later. 6221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 6223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) 6224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$lib"; then 6225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 6226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 6227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 6228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for l in $old_library $library_names; do 6229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ll="$l" 6230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$ll" = "X$old_library" ; then # only static version available 6232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville found=no 6233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$lib" "" "." 6234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ladir="$func_dirname_result" 6235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib=$ladir/$old_library 6236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 6237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) ;; 6248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # -l 6252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.ltframework) 6253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 6254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib ; then 6259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$new_inherited_linker_flags " in 6260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 626164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * ) func_append new_inherited_linker_flags " $deplib" ;; 6262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 6268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 6269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 6270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pass" = conv && continue 6272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 6273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-L' '' "$deplib" 627464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result" 627564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newlib_search_path " $func_resolve_sysroot_result" 6276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 6278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 6279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = scan; then 6283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-L' '' "$deplib" 628964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result" 629064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newlib_search_path " $func_resolve_sysroot_result" 6291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-L' is ignored for archives/objects" 6294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # linkmode 6296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # -L 6298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) 6299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = link; then 6300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '-R' '' "$deplib" 630164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result" 630264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dir=$func_resolve_sysroot_result 6303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure the xrpath contains only unique directories. 6304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$xrpath " in 6305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 630664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append xrpath " $dir" ;; 6307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 631264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *.la) 631364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$deplib" 631464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci lib=$func_resolve_sysroot_result 631564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 6316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.$libext) 6317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 6318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 6322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 6323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Linking convenience modules into shared libraries is allowed, 6324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but linking other static libraries is non-portable. 6325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $dlpreconveniencelibs " in 6326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 6327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=no 6329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplibs_check_method in 6330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern*) 6331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 6332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 633364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville | $EGREP "$match_pattern_regex" > /dev/null; then 6335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=yes 6336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pass_all) 6339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville valid_a_lib=yes 6340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$valid_a_lib" != yes; then 634364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 6344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Trying to link with static lib archive $deplib." 634564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 634664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 634764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which you do not appear to have" 634864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because the file extensions .$libext of this argument makes me believe" 634964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** that it is just a static archive that I should not use here." 6350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 635164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 6352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the" 6353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** static library $deplib is not portable!" 6354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 6361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != link; then 6362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # linkmode 6370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; # *.$libext 6371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo | *.$objext) 6372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 6373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" = prog; then 6375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there is no dlopen support or we're linking statically, 6377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we need to preload. 637864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $deplib" 6379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$deplib $compile_deplibs" 6380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$deplib $finalize_deplibs" 6381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 638264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlfiles " $deplib" 6383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville %DEPLIBS%) 6388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville alldeplibs=yes 6389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac # case $deplib 6392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$found" = yes || test -f "$lib"; then : 6394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see that this really is a libtool archive. 6399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lalib_unsafe_p "$lib" \ 6400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville || func_fatal_error "\`$lib' is not a valid libtool archive" 6401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$lib" "" "." 6403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ladir="$func_dirname_result" 6404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 6406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopen= 6407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlpreopen= 6408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir= 6409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 6410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 6411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville inherited_linker_flags= 6412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the library was installed with an old release of libtool, 6413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # it will not redefine variables installed, or shouldnotlink 6414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville installed=yes 6415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shouldnotlink=no 6416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville avoidtemprpath= 6417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .la file 6420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source "$lib" 6421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Convert "-framework foo" to "foo.ltframework" 6423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inherited_linker_flags"; then 642464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_inherited_linker_flags " in 6427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $tmp_inherited_linker_flag "*) ;; 642864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 643264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "lib,link" || 6434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$linkmode,$pass" = "prog,scan" || 6435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$linkmode" != prog && test "$linkmode" != lib; }; then 643664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$dlopen" && func_append dlfiles " $dlopen" 643764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = conv; then 6441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only check for convenience libraries 6442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" 6443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 6444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$old_library"; then 6445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of link library for \`$lib'" 6446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # It is a libtool convenience library, so add in its objects. 644864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append convenience " $ladir/$objdir/$old_library" 644964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append old_convenience " $ladir/$objdir/$old_library" 645064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_libs= 645164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for deplib in $dependency_libs; do 645264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci deplibs="$deplib $deplibs" 645364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $opt_preserve_dup_deps ; then 645464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case "$tmp_libs " in 645564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $deplib "*) func_append specialdeplibs " $deplib" ;; 645664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 645764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 645864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append tmp_libs " $deplib" 645964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 6460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" != prog && test "$linkmode" != lib; then 6461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a convenience library" 6462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = conv 6465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the name of the library we link against. 6468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linklib= 646964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$old_library" && 647064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci { test "$prefer_static_libs" = yes || 647164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$prefer_static_libs,$installed" = "built,no"; }; then 647264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci linklib=$old_library 647364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 647464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for l in $old_library $library_names; do 647564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci linklib="$l" 647664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done 647764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 6478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$linklib"; then 6479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot find name of link library for \`$lib'" 6480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlopen. 6483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlopen; then 6484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 6485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname" || 6488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$dlopen_support" != yes || 6489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" = no; then 6490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If there is no dlname, no dlopen support or we're linking 6491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # statically, we need to preload. We also need to preload any 6492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # dependent libraries so libltdl's deplib preloader doesn't 6493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bomb out in the load deplibs phase. 649464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlprefiles " $lib $dependency_libs" 6495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 649664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlfiles " $lib" 6497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = dlopen 6500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 6502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $ladir in 6503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville abs_ladir=`cd "$ladir" && pwd` 6506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$abs_ladir"; then 6507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot determine absolute directory name of \`$ladir'" 6508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "passing it literally to the linker, although it might fail" 6509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville abs_ladir="$ladir" 6510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 6514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville laname="$func_basename_result" 6515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Find the relevant object directory and library name. 6517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$installed" = Xyes; then 651864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "library \`$lib' was moved." 6520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir" 6521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir" 6522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$abs_ladir" 6523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 652464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dir="$lt_sysroot$libdir" 652564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci absdir="$lt_sysroot$libdir" 6526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir" 6531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir" 6532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove this search path later 653364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append notinst_path " $abs_ladir" 6534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$ladir/$objdir" 6536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$abs_ladir/$objdir" 6537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove this search path later 653864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append notinst_path " $abs_ladir" 6539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $installed = yes 6541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.la' "$laname" 6542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 6543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This library was specified with -dlpreopen. 6545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen; then 6546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir" && test "$linkmode" = prog; then 6547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 654964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case "$host" in 655064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # special handling for platforms with PE-DLLs. 655164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc* ) 655264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Linker will automatically link against shared library if both 655364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # static and shared are present. Therefore, ensure we extract 655464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # symbols from the import library if a shared library is present 655564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # (otherwise, the dlopen module name will be incorrect). We do 655664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # this by putting the import library name into $newdlprefiles. 655764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # We recover the dlopen module name by 'saving' the la file 655864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # name in a special purpose variable, and (later) extracting the 655964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # dlname from the la file. 656064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$dlname"; then 656164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_tr_sh "$dir/$linklib" 656264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 656364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $dir/$linklib" 656464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 656564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $dir/$old_library" 656664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Keep a list of preopened convenience libraries to check 656764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # that they are being used correctly in the link pass. 656864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -z "$libdir" && \ 656964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlpreconveniencelibs " $dir/$old_library" 657064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 657164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 657264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci * ) 657364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Prefer using a static library (so that no silly _DYNAMIC symbols 657464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # are required to link). 657564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$old_library"; then 657664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $dir/$old_library" 657764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Keep a list of preopened convenience libraries to check 657864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # that they are being used correctly in the link pass. 657964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -z "$libdir" && \ 658064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dlpreconveniencelibs " $dir/$old_library" 658164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Otherwise, use the dlname, so that lt_dlopen finds it. 658264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci elif test -n "$dlname"; then 658364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $dir/$dlname" 658464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 658564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $dir/$linklib" 658664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 658764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 658864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 6589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $pass = dlpreopen 6590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libdir"; then 6592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the convenience library 6593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 6594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$dir/$old_library $deplibs" 6595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode,$pass" = "prog,link"; then 6596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$dir/$old_library $compile_deplibs" 6597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$dir/$old_library $finalize_deplibs" 6598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" # used for prog,scan pass 6600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog && test "$pass" != link; then 660664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newlib_search_path " $ladir" 6607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$lib $deplibs" 6608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linkalldeplibs=no 6610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$link_all_deplibs" != no || test -z "$library_names" || 6611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_libtool_libs" = no; then 6612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linkalldeplibs=yes 6613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 6616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 6617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 6618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) func_stripname '-L' '' "$deplib" 661964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result" 662064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newlib_search_path " $func_resolve_sysroot_result" 6621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Need to link against all dependency_libs? 6624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkalldeplibs" = yes; then 6625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 6626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Need to hardcode shared library paths 6628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # or/and link against static libraries 6629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 6630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 663164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $opt_preserve_dup_deps ; then 6632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$tmp_libs " in 663364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 663664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append tmp_libs " $deplib" 6637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for deplib 6638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $linkmode = prog... 6640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" = "prog,link"; then 6642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names" && 6643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { { test "$prefer_static_libs" = no || 6644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$prefer_static_libs,$installed" = "built,yes"; } || 6645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$old_library"; }; then 6646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need to hardcode the library path 6647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure the rpath contains only unique directories. 6649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$temp_rpath:" in 6650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$absdir:"*) ;; 665164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append temp_rpath "$absdir:" ;; 6652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library path. 6656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip directories that are in the system default run-time 6657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # search path. 6658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 6659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 6660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_rpath " in 6662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 666364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append compile_rpath " $absdir" ;; 6664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 6668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 6669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 6671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 667264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_rpath " $libdir" ;; 6673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # $linkmode,$pass = prog,link... 6677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$alldeplibs" = yes && 6679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$deplibs_check_method" = pass_all || 6680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$build_libtool_libs" = yes && 6681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$library_names"; }; }; then 6682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We only need to search for static libraries 6683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 6684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_static=no # Whether the deplib will be linked statically 6688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville use_static_libs=$prefer_static_libs 6689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$use_static_libs" = built && test "$installed" = yes; then 6690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville use_static_libs=no 6691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names" && 6693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$use_static_libs" = no || test -z "$old_library"; }; then 6694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 669564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | *mingw* | *cegcc*) 6696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # No point in relinking DLLs because paths are not encoded 669764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append notinst_deplibs " $lib" 6698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=no 6699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = no; then 670264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append notinst_deplibs " $lib" 6703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville need_relink=yes 6704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This is a shared library 6708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Warn about portability, can't link against -module's on some 6710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # systems (darwin). Don't bleat about dlopened modules though! 6711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopenmodule="" 6712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dlpremoduletest in $dlprefiles; do 6713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dlpremoduletest" = "X$lib"; then 6714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlopenmodule="$dlpremoduletest" 6715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 6716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 6718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 671964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 6720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 6721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the executable $output against the loadable module" 6722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** $linklib is not portable!" 6726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib && 6728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_into_libs" = yes; then 6729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library path. 6730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Skip directories that are in the system default run-time 6731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # search path. 6732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 6733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 6734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$compile_rpath " in 6736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $absdir "*) ;; 673764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append compile_rpath " $absdir" ;; 6738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $sys_lib_dlsearch_path " in 6742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 6743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 6744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 6745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 674664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_rpath " $libdir" ;; 6747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_archive_from_expsyms_cmds"; then 6753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # figure out the soname 6754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names 6755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 6757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 6758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 6759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use dlname if we got it. it's perfectly good, no? 6760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlname"; then 6761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$dlname" 6762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$soname_spec"; then 6763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # bleh windows 6764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 676564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin* | mingw* | *cegcc*) 6766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 6767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 6768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="-$major" 6769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval soname=\"$soname_spec\" 6772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$realname" 6774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make a new name for the extract_expsyms_cmds to use 6777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soroot="$soname" 6778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$soroot" 6779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$func_basename_result" 6780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.dll' "$soname" 6781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib=libimp-$func_stripname_result.a 6782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the library has no export list, then create one now 6784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$soname-def"; then : 6785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "extracting exported symbol list from \`$soname'" 6787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create $newlib 6791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/$newlib"; then :; else 6792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating import library for \`$soname'" 6793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # make sure the library variables are pointing to the new library 6796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir=$output_objdir 6797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linklib=$newlib 6798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # test -n "$old_archive_from_expsyms_cmds" 6799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 680064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$linkmode" = prog || test "$opt_mode" != relink; then 6801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath= 6802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir= 6803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add= 6804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=yes 6805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_action in 6806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville immediate | unsupported) 6807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = no; then 6808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$linklib" 6809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-unixware7*) add_dir="-L$dir" ;; 6814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin* ) 6815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # if the lib is a (non-dlopened) module then we can not 6816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # link against it, someone is ignoring the earlier warnings 6817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if /usr/bin/file -L $add 2> /dev/null | 6818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP ": [^:]* bundle" >/dev/null ; then 6819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dlopenmodule" != "X$lib"; then 6820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$old_library" ; then 682264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 682364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** And there doesn't seem to be a static archive available" 682464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** The link will probably fail, sorry" 6825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$old_library" 6827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$old_library"; then 6829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$old_library" 6830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = no; then 6834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 6835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sunos*) add_shlibpath="$dir" ;; 6836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$dir" 6838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = no; then 6840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath="$dir" 6841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=no 6844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink) 6847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = yes && 6848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_direct_absolute" = no; then 6849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$dir/$linklib" 6850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = yes; then 685164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci add_dir="-L$absdir" 6852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try looking first in the location we're being installed to. 6853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 6854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 6855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*) 685664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append add_dir " -L$inst_prefix_dir$libdir" 6857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = yes; then 6862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath="$dir" 6863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_linked=no 6866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) lib_linked=no ;; 6869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$lib_linked" != yes; then 6872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "unsupported hardcode properties" 6873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$add_shlibpath"; then 6876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$compile_shlibpath: in 6877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$add_shlibpath:"*) ;; 687864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append compile_shlibpath "$add_shlibpath:" ;; 6879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 6882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && compile_deplibs="$add $compile_deplibs" 6884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && deplibs="$add_dir $deplibs" 6886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && deplibs="$add $deplibs" 6887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" != yes && 6888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_minus_L" != yes && 6889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_shlibpath_var" = yes; then 6890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$finalize_shlibpath: in 6891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 689264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_shlibpath "$libdir:" ;; 6893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 689864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$linkmode" = prog || test "$opt_mode" = relink; then 6899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_shlibpath= 6900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir= 6901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add= 6902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Finalize command for both is simple: just hardcode it. 6903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" = yes && 6904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$hardcode_direct_absolute" = no; then 6905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$libdir/$linklib" 6906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_minus_L" = yes; then 6907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$libdir" 6908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_shlibpath_var" = yes; then 6910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$finalize_shlibpath: in 6911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 691264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_shlibpath "$libdir:" ;; 6913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$hardcode_automatic" = yes; then 6916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir" && 6917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$inst_prefix_dir$libdir/$linklib" ; then 6918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$inst_prefix_dir$libdir/$linklib" 6919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="$libdir/$linklib" 6921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We cannot seem to hardcode it, guess we'll fake it. 6924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add_dir="-L$libdir" 6925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try looking first in the location we're being installed to. 6926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$inst_prefix_dir"; then 6927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 6928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]*) 692964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append add_dir " -L$inst_prefix_dir$libdir" 6930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 6931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 6932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville add="-l$name" 6934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 6937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add_dir" && deplibs="$add_dir $deplibs" 6941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$add" && deplibs="$add $deplibs" 6942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$linkmode" = prog; then 6945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Here we assume that one of hardcode_direct or hardcode_minus_L 6946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is not unsupported. This is valid on all known static and 6947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # shared platforms. 6948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_direct" != unsupported; then 6949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$old_library" && linklib="$old_library" 6950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$dir/$linklib $compile_deplibs" 6951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$dir/$linklib $finalize_deplibs" 6952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="-l$name -L$dir $compile_deplibs" 6954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$build_libtool_libs" = yes; then 6957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Not a shared library 6958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$deplibs_check_method" != pass_all; then 6959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We're trying link a shared library against a static one 6960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but the system doesn't support it. 6961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just print a warning and add the library to dependency_libs so 6963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that the program can be linked against the static library. 696464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 6965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: This system can not link to static lib archive $lib." 696664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 696764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 696864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which you do not appear to have." 6969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes; then 697064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** But as you try to build a module library, libtool will still create " 697164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** a static module, that should work as long as the dlopening application" 697264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$global_symbol_pipe"; then 697464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 697564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** However, this would only work if libtool was able to extract symbol" 697664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 697764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** not find such a program. So, this module is probably useless." 697864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** \`nm' from GNU binutils and a full rebuild may help." 6979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 6981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 6982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 6983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 6985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 6988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$dir/$old_library $deplibs" 6989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_static=yes 6990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 6991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # link shared/static library? 6992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 6993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = lib; then 6994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dependency_libs" && 6995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test "$hardcode_into_libs" != yes || 6996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_old_libs" = yes || 6997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$link_static" = yes; }; then 6998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Extract -R from dependency_libs 6999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_deplibs= 7000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $dependency_libs; do 7001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $libdir in 7002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) func_stripname '-R' '' "$libdir" 7003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_xrpath=$func_stripname_result 7004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $xrpath " in 7005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $temp_xrpath "*) ;; 700664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append xrpath " $temp_xrpath";; 7007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac;; 700864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append temp_deplibs " $libdir";; 7009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$temp_deplibs" 7012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 701464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newlib_search_path " $absdir" 7015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link against this library 7016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # ... and its dependency_libs 7018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 7019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 7020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs="$deplib $newdependency_libs" 702164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $deplib in 702264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -L*) func_stripname '-L' '' "$deplib" 702364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$func_stripname_result";; 702464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_resolve_sysroot "$deplib" ;; 702564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 702664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if $opt_preserve_dup_deps ; then 7027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$tmp_libs " in 702864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $func_resolve_sysroot_result "*) 702964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 703264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append tmp_libs " $func_resolve_sysroot_result" 7033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$link_all_deplibs" != no; then 7036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the search paths of all dependency libraries 7037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 703864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci path= 7039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 7040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) path="$deplib" ;; 7041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 704264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$deplib" 704364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci deplib=$func_resolve_sysroot_result 7044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$deplib" "" "." 704564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci dir=$func_dirname_result 7046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We need an absolute path. 7047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $dir in 7048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir=`cd "$dir" && pwd` 7051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$absdir"; then 7052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "cannot determine absolute directory name of \`$dir'" 7053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville absdir="$dir" 7054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $GREP "^installed=no" $deplib > /dev/null; then 7058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 7060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl= 7061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$deplibrary_names" ; then 7063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for tmp in $deplibrary_names ; do 7064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl=$tmp 7065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$absdir/$objdir/$depdepl" ; then 7067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville depdepl="$absdir/$objdir/$depdepl" 7068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$darwin_install_name"; then 7070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 707264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 707364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path= 7075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path="-L$absdir/$objdir" 7080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 7085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$deplib' is not a valid libtool archive" 7086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$absdir" != "$libdir" && \ 7087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$deplib' seems to be moved" 7088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville path="-L$absdir" 7090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs " in 7094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $path "*) ;; 7095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) deplibs="$path $deplibs" ;; 7096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # link_all_deplibs != no 7099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi # linkmode = lib 7100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for deplib in $libs 7101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = link; then 7102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = "prog"; then 7103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 710664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$newdependency_libs" 7110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" = dlpreopen; then 7111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the dlpreopened libraries before other libraries 7112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $save_deplibs; do 7113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$deplib $deplibs" 7114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != dlopen; then 7117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$pass" != conv; then 7118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure lib_search_path contains only unique directories. 7119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib_search_path= 7120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $newlib_search_path; do 7121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$lib_search_path " in 7122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dir "*) ;; 712364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append lib_search_path " $dir" ;; 7124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newlib_search_path= 7127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode,$pass" != "prog,link"; then 7130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vars="deplibs" 7131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville vars="compile_deplibs finalize_deplibs" 7133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $vars dependency_libs; do 7135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add libraries to $var in reverse order 7136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval tmp_libs=\"\$$var\" 7137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 7138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $tmp_libs; do 7139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: Pedantically, this is the right thing to do, so 7140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # that some nasty dependency loop isn't accidentally 7141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # broken: 7142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #new_libs="$deplib $new_libs" 7143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Pragmatically, this seems to cause very few problems in 7144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # practice: 7145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 7146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) new_libs="$deplib $new_libs" ;; 7147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -R*) ;; 7148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # And here is the reason: when a library appears more 7150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than once as an explicit dependence of a library, or 7151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # is implicitly linked in more than once by the 7152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # compiler, it is considered special, and multiple 7153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # occurrences thereof are not removed. Compare this 7154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # with having the same library being listed as a 7155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # dependency of multiple other libraries: in this case, 7156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we know (pedantically, we assume) the library does not 7157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # need to be listed more than once, so we keep only the 7158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # last copy. This is not always right, but it is rare 7159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # enough that we require users that really mean to play 7160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # such unportable linking tricks to link the library 7161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # using -Wl,-lname, so that libtool does not consider it 7162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # for duplicate removal. 7163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $specialdeplibs " in 7164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) new_libs="$deplib $new_libs" ;; 7165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 7167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 7168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) new_libs="$deplib $new_libs" ;; 7169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 7176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $new_libs; do 7177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 7178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 7179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $tmp_libs " in 7180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 718164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append tmp_libs " $deplib" ;; 7182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 718464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append tmp_libs " $deplib" ;; 7185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval $var=\"$tmp_libs\" 7188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for var 7189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Last step: remove runtime libs from dependency_libs 7191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # (they stay in deplibs) 7192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_libs= 7193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $dependency_libs ; do 7194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps $compiler_lib_search_path " in 7195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 7196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 7197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 720064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append tmp_libs " $i" 7201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs=$tmp_libs 7204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # for pass 7205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog; then 7206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 7207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$linkmode" = prog || test "$linkmode" = lib; then 7209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 7210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $linkmode in 7213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlib) 7214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for archives" 7216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs" in 7219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *\ -l* | *\ -L*) 7220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' and \`-L' are ignored for archives" ;; 7221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$rpath" && \ 7224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-rpath' is ignored for archives" 7225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$xrpath" && \ 7227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-R' is ignored for archives" 7228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 7230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info/-version-number' is ignored for archives" 7231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 7233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for archives" 7234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$export_symbols$export_symbols_regex" && \ 7236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-export-symbols' is ignored for archives" 7237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now set the variables for building old libraries. 7239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output" 724164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append objs "$old_deplibs" 7242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib) 7245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we only generate libraries of the form `libNAME.la'. 7246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $outputname in 7247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib*) 7248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname 'lib' '.la' "$outputname" 7249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 7251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libname=\"$libname_spec\" 7252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$module" = no && \ 7255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "libtool library \`$output' must begin with \`lib'" 7256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_lib_prefix" != no; then 7258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add the "lib" prefix for modules if required 7259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.la' "$outputname" 7260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 7262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libname=\"$libname_spec\" 7263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.la' "$outputname" 7265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=$func_stripname_result 7266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$objs"; then 7271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$deplibs_check_method" != pass_all; then 7272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 727464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** objects $objs is not portable!" 727764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libobjs " $objs" 7278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$dlself" != no && \ 7282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen self' is ignored for libtool libraries" 7283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $rpath 7285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 7286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$#" -gt 1 && \ 7287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "ignoring multiple \`-rpath's for a libtool library" 7288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville install_libdir="$1" 7290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs= 7292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$rpath"; then 7293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 7294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Building a libtool convenience library. 7295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Some compilers have problems with a `.al' extension so 7296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convenience libraries should have the same extension an 7297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # archive normally would. 7298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext $oldlibs" 7299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=convenience 7300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 7301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 7304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 7307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for convenience libraries" 7308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Parse the version information argument. 7311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS=':' 7312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $vinfo 0 0 0 7313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 7314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 7315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$7" && \ 7317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "too many parameters to \`-version-info'" 7318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convert absolute version numbers to libtool ages 7320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # this retains compatibility with .la files and attempts 7321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to make the code below a bit more comprehensible 7322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $vinfo_number in 7324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville yes) 7325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_major="$1" 7326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_minor="$2" 7327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville number_revision="$3" 7328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 7329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # There are really only two kinds -- those that 7330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use the current revision as the major version 7331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and those that subtract age and use age as 7332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a minor version. But, then there is irix 7333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which has an extra 1 added just for fun 7334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 7335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 733664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # correct linux to gnu/linux during the next big refactor 7337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin|linux|osf|windows|none) 7338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $number_major + $number_minor 7339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current=$func_arith_result 7340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$number_minor" 7341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_revision" 7342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 734364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci freebsd-aout|freebsd-elf|qnx|sunos) 7344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current="$number_major" 7345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_minor" 7346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="0" 7347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville irix|nonstopux) 7349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $number_major + $number_minor 7350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current=$func_arith_result 7351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$number_minor" 7352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$number_minor" 7353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_irix_increment=no 7354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 735564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 735664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_configuration "$modename: unknown library version type \`$version_type'" 735764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 7358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville no) 7361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville current="$1" 7362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville revision="$2" 7363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville age="$3" 7364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check that each of the things are valid numbers. 7368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $current in 7369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "CURRENT \`$current' must be a nonnegative integer" 7372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 7373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $revision in 7377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "REVISION \`$revision' must be a nonnegative integer" 7380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 7381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $age in 7385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "AGE \`$age' must be a nonnegative integer" 7388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 7389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$age" -gt "$current"; then 7393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_error "AGE \`$age' is greater than the current interface number \`$current'" 7394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$vinfo' is not valid version information" 7395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Calculate the version variables. 7398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 7399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 7400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring= 7401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 7402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville none) ;; 7403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin) 7405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Like Linux, but with the current version available in 7406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # verstring for coding it into the library header 7407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 7408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 7409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$age.$revision" 7410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Darwin ld doesn't like 0 for these options... 7411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current + 1 7412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville minor_current=$func_arith_result 7413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville freebsd-aout) 7418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 7419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$revision"; 7420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville freebsd-elf) 7423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 7424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current" 7425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville irix | nonstopux) 7428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$lt_irix_increment" = "Xno"; then 7429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 7430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age + 1 7432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 7434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 7436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville nonstopux) verstring_prefix=nonstopux ;; 7437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) verstring_prefix=sgi ;; 7438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring_prefix$major.$revision" 7440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add in all the interfaces that we are compatible with. 7442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$revision 7443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$loop" -ne 0; do 7444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $revision - $loop 7445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville iface=$func_arith_result 7446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $loop - 1 7447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$func_arith_result 7448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring_prefix$major.$iface:$verstring" 7449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Before this point, $major must not contain `.'. 7452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$major 7453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$revision" 7454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 745664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci linux) # correct to gnu/linux during the next big refactor 7457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 7458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 7459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="$major.$age.$revision" 7460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville osf) 7463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 7464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=.$func_arith_result 7465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$age.$revision" 7466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$current.$age.$revision" 7467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add in all the interfaces that we are compatible with. 7469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$age 7470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test "$loop" -ne 0; do 7471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $loop 7472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville iface=$func_arith_result 7473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $loop - 1 7474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville loop=$func_arith_result 7475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="$verstring:${iface}.0" 7476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make executables depend on our current version. 747964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append verstring ":${current}.0" 7480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville qnx) 7483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 7484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current" 7485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville sunos) 7488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=".$current" 7489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".$current.$revision" 7490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville windows) 7493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Use '-' rather than '.', since we only want one 7494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # extension on DOS 8.3 filesystems. 7495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $current - $age 7496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$func_arith_result 7497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="-$major" 7498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_configuration "unknown library version type \`$version_type'" 7502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clear the version info if we defaulted, and they specified a release. 7506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$vinfo" && test -n "$release"; then 7507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 7508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $version_type in 7509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville darwin) 7510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # we can't check for "0.0" in archive_cmds due to quoting 7511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # problems, so we reset it completely 7512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring= 7513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="0.0" 7516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_version" = no; then 7519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 7520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=".0.0" 7522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove version info from name if versioning should be avoided 7526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$avoid_version" = yes && test "$need_version" = no; then 7527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major= 7528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix= 7529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville verstring="" 7530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Check to see if the archive will have undefined symbols. 7533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined" = yes; then 7534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined_flag" = unsupported; then 7535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "undefined symbols not allowed in $host shared libraries" 7536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 7538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow undefined symbols. 7541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville allow_undefined_flag="$no_undefined_flag" 7542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_generate_dlsyms "$libname" "$libname" "yes" 754764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libobjs " $symfileobj" 7548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 7549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 755064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" != relink; then 7551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Remove our outputs, but don't remove object files since they 7552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # may have been created when compiling PIC objects. 7553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville removelist= 7554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tempremovelist=`$ECHO "$output_objdir/*"` 7555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for p in $tempremovelist; do 7556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $p in 755764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *.$objext | *.gcno) 7558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$precious_files_regex" != "X"; then 7561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville then 7563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 7564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 756664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append removelist " $p" 7567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) ;; 7569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$removelist" && \ 7572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "${RM}r \$removelist" 7573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now set the variables for building old libraries. 7576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 757764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append oldlibs " $output_objdir/$libname.$libext" 7578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform .lo files to .o files. 758064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Eliminate all temporary directories. 7584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #for path in $notinst_path; do 758564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 758664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 758764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville #done 7589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$xrpath"; then 7591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specified any rpath flags, then add them. 7592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville temp_xrpath= 7593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $xrpath; do 759464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot "$libdir" 759564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append temp_xrpath " -R$func_replace_sysroot_result" 7596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 7597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 759864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_rpath " $libdir" ;; 7599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$temp_xrpath $dependency_libs" 7603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure dlfiles contains only unique files that won't be dlpreopened 7607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_dlfiles="$dlfiles" 7608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles= 7609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $old_dlfiles; do 7610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $dlprefiles $dlfiles " in 7611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $lib "*) ;; 761264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dlfiles " $lib" ;; 7613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure dlprefiles contains only unique files 7617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_dlprefiles="$dlprefiles" 7618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles= 7619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $old_dlprefiles; do 7620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$dlprefiles " in 7621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $lib "*) ;; 762264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dlprefiles " $lib" ;; 7623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 7627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$rpath"; then 7628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 762964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # these systems don't actually have a c library (as such)! 7631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 7633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Rhapsody C library is in the System framework 763464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " System.ltframework" 7635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-netbsd*) 7637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't link with libc until the a.out ld.so is fixed. 7638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do not include libc due to us having libc/libc_r. 7641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sco3.2v5* | *-*-sco5v6*) 7643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Causes problems with __ctype 7644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Compiler inserts libc in the correct place for threads to work 7647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add libc to deplibs on all other systems if necessary. 7650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_need_lc" = "yes"; then 765164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append deplibs " -lc" 7652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform deplibs into only deplibs that can be linked in shared. 7658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name_save=$name 7659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname_save=$libname 7660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release_save=$release 7661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix_save=$versuffix 7662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major_save=$major 7663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # I'm not sure if I'm treating the release correctly. I think 7664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # release should show up in the -l (ie -lgmp5) so we don't want to 7665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # add it in twice. Is that correct? 7666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release="" 7667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix="" 7668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major="" 7669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs= 7670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=no 7671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplibs_check_method in 7672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville pass_all) 7673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't check for shared/static. Everything works. 7674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This might be a little naive. We might want to check 7675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whether the library exists or not. But this is on 7676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # osf3 & osf4 and I'm not really sure... Just 7677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # implementing what was already the behavior. 7678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs=$deplibs 7679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_compile) 7681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This code stresses the "libraries are programs" paradigm to its 7682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # limits. Maybe even breaks it. We compile a program, linking it 7683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # against the deplibs as a proxy for the library. Then we can check 7684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whether they linked in statically or dynamically with ldd. 7685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest.c 7686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cat > conftest.c <<EOF 7687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville int main() { return 0; } 7688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF 7689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest 7690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ldd_output=`ldd conftest` 7692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $deplibs; do 7693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $i in 7694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 7695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$i" 7696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 7699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 770064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 7702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 7706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 7707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplib_matches; shift 7709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_match=$1 7710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 771164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 771464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: dynamic linker does not accept needed library $i." 771664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 771764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 771864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which I believe you do not have" 771964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because a test_compile did reveal that the linker did not use it for" 772064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** its dynamic dependency list that programs get resolved with at runtime." 7721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 772564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Error occurred in the first compile. Let's try to salvage 7731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the situation: Compile a separate program for each library. 7732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $deplibs; do 7733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $i in 7734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 7735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$i" 7736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM conftest 7738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ldd_output=`ldd conftest` 7740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 7742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $i "*) 774364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville i="" 7745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$i" ; then 7749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 7750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplib_matches; shift 7752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplib_match=$1 7753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 775464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 775764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: dynamic linker does not accept needed library $i." 775964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 776064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 776164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which you do not appear to have" 776264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because a test_compile did reveal that the linker did not use this one" 776364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 776864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 777064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** make it link in! You will probably need to install it or some" 777164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** library that it depends on before this library will be fully" 777264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** functional. Installing it before continuing would be even better." 7773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 777664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $i" 7777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file_magic*) 7783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 7784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for a_deplib in $deplibs; do 7786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $a_deplib in 7787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 7788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$a_deplib" 7789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 7792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $a_deplib "*) 779364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 7795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 7799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 780064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$file_magic_glob"; then 780164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 780264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 780364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libnameglob=$libname 780464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 780564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 780764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$want_nocaseglob" = yes; then 780864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci shopt -s nocaseglob 780964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 781064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $nocaseglob 781164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 781264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 781364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 7814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for potent_lib in $potential_libs; do 7815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Follow soft links. 7816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ls -lLd "$potent_lib" 2>/dev/null | 7817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $GREP " -> " >/dev/null; then 7818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 7819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The statement above tries to avoid entering an 7821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # endless loop below, in case of cyclic links. 7822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We might still enter an endless loop, since a link 7823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # loop can be closed while we follow links, 7824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # but so what? 7825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potlib="$potent_lib" 7826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while test -h "$potlib" 2>/dev/null; do 7827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $potliblink in 7829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 783064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $SED -e 10q | 7835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP "$file_magic_regex" > /dev/null; then 783664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 7838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 7839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 7844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 784564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 784764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 784864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 784964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which you do not appear to have" 785064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because I did check the linker path looking for a file starting" 7851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$potlib" ; then 7852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname and none of the candidates passed a file format test" 7855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** using a file magic. Last file checked: $potlib" 7856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add a -L argument. 786164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # Gone through all deplibs. 7865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern*) 7867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $deplibs_check_method; shift 7868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for a_deplib in $deplibs; do 7870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $a_deplib in 7871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -l*) 7872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname -l '' "$a_deplib" 7873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$func_stripname_result 7874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $predeps $postdeps " in 7876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $a_deplib "*) 787764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 7879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 7883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=`eval "\\$ECHO \"$libname_spec\""` 7884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for potent_lib in $potential_libs; do 7887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville potlib="$potent_lib" # see symlink-check above in file_magic test 788864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $EGREP "$match_pattern_regex" > /dev/null; then 789064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville a_deplib="" 7892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 2 7893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$a_deplib" ; then 7898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 789964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 790164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** I have the capability to make that library automatically link in when" 790264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** you link to this library. But I can only do this if you have a" 790364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** shared version of the library, which you do not appear to have" 790464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because I did check the linker path looking for a file starting" 7905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$potlib" ; then 7906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** with $libname and none of the candidates passed a file format test" 7909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** using a regex pattern. Last file checked: $potlib" 7910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 7914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add a -L argument. 791564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdeplibs " $a_deplib" 7916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done # Gone through all deplibs. 7919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville none | unknown | *) 7921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdeplibs="" 792264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for i in $predeps $postdeps ; do 7925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # can't use Xsed below, because $i might contain '/' 792664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 7928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 792964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $tmp_deplibs in 793064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *[!\ \ ]*) 793164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 7932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$deplibs_check_method" = "Xnone"; then 793364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** Warning: inter-library dependencies are not supported in this platform." 7934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 793564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** Warning: inter-library dependencies are not known to be supported." 7936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 793764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** All declared inter-library dependencies are being dropped." 7938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville droppeddeps=yes 793964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 794064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 7941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville versuffix=$versuffix_save 7944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville major=$major_save 7945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville release=$release_save 7946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libname=$libname_save 7947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name=$name_save 7948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 7950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 7951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Rhapsody replace the C library with the System framework 795264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 7954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 7955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$droppeddeps" = yes; then 7957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes; then 795864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 795964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** Warning: libtool could not satisfy all declared inter-library" 7960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 796164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** a static module, that should work as long as the dlopening" 796264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** application is linked with the -dlopen flag." 7963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$global_symbol_pipe"; then 796464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 796564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** However, this would only work if libtool was able to extract symbol" 796664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 796764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** not find such a program. So, this module is probably useless." 796864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** \`nm' from GNU binutils and a full rebuild may help." 7969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 7971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext" 7972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 7973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 7974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 797864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** The inter-library dependencies that have been dropped here will be" 797964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** automatically added whenever a program is linked with this library" 798064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** or is declared to -dlopen it." 7981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 7982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$allow_undefined" = no; then 798364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 798464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** Since this library must not contain undefined symbols," 798564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** because either the platform does not support them or" 798664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** it was explicitly requested with -no-undefined," 798764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "*** libtool will only create a static version of it." 7988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_old_libs" = no; then 7989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldlibs="$output_objdir/$libname.$libext" 7990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=module 7991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_old_libs=yes 7992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 7993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 7994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 7998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Done checking deplibs! 7999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs=$newdeplibs 8000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 8003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 800464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # move library search paths that coincide with paths to not yet 8011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # installed libraries to the beginning of the library search list 8012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 8013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for path in $notinst_path; do 8014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 8015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) ;; 8016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 8017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs " in 8018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) 801964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append new_libs " -L$path/$objdir" ;; 8020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $deplibs; do 8025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 8026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 8027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 8028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 802964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append new_libs " $deplib" ;; 8030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 803264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append new_libs " $deplib" ;; 8033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$new_libs" 8036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # All the library-specific variables (install_libdir is set above). 8038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville library_names= 8039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 8040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname= 8041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Test again, we may have decided not to build it any more 8043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = yes; then 804464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remove ${wl} instances when linking with ld. 804564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # FIXME: should test the right _cmds variable. 804664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $archive_cmds in 804764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *\$LD\ *) wl= ;; 804864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 8049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_into_libs" = yes; then 8050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Hardcode the library paths 8051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 8052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dep_rpath= 8053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath="$finalize_rpath" 805464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $rpath; do 8056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 8057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 805864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot "$libdir" 805964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libdir=$func_replace_sysroot_result 8060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 8061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 8062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 8064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 806864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 807464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append dep_rpath " $flag" 8075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 8077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$perm_rpath " in 8078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 807964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append perm_rpath " $libdir" ;; 8080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 8084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 8085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 8086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 808764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$runpath_var" && test -n "$perm_rpath"; then 8090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 8091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 8092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $perm_rpath; do 809364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rpath "$dir:" 8094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shlibpath="$finalize_shlibpath" 810164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$shlibpath"; then 8103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Get the real and link names of the library. 8107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval shared_ext=\"$shrext_cmds\" 8108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval library_names=\"$library_names_spec\" 8109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set dummy $library_names 8110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 8111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville realname="$1" 8112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 8113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$soname_spec"; then 8115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval soname=\"$soname_spec\" 8116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville soname="$realname" 8118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$dlname"; then 8120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname=$soname 8121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lib="$output_objdir/$realname" 8124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville linknames= 8125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for link 8126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 812764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linknames " $link" 8128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Use standard objects if they are pic 813164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 8133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delfiles= 8135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 8136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.uexp" 813864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $export_symbols" 8139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville orig_export_symbols= 8142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host_os in 814364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cygwin* | mingw* | cegcc*) 8144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # exporting using user supplied symfile 8146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # and it's NOT already a .def file. Must figure out 8148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # which of the given symbols are data symbols and tag 8149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # them as such. So, trigger use of export_symbols_cmds. 8150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # export_symbols gets reassigned inside the "prepare 8151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the list of exported symbols" if statement, so the 8152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # include_expsyms logic still works. 8153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville orig_export_symbols="$export_symbols" 8154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols= 8155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville always_export_symbols=yes 8156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Prepare the list of exported symbols 8162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$export_symbols"; then 8163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$libname.la'" 8165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.exp" 8166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $export_symbols 8167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$export_symbols_cmds 8168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 816964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for cmd1 in $cmds; do 8170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 817164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Take the normal branch if the nm_file_list_spec branch 817264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # doesn't work or if tool conversion is not needed. 817364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case $nm_file_list_spec~$to_tool_file_cmd in 817464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 817564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci try_normal_branch=yes 817664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval cmd=\"$cmd1\" 817764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_len " $cmd" 817864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci len=$func_len_result 817964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 818064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) 818164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci try_normal_branch=no 818264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 818364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci esac 818464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$try_normal_branch" = yes \ 818564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci && { test "$len" -lt "$max_cmd_len" \ 818664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci || test "$max_cmd_len" -le -1; } 818764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci then 818864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_show_eval "$cmd" 'exit $?' 818964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci skipped_export=false 819064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci elif test -n "$nm_file_list_spec"; then 819164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename "$output" 819264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output_la=$func_basename_result 819364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci save_libobjs=$libobjs 819464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci save_output=$output 819564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output=${output_objdir}/${output_la}.nm 819664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output" 819764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libobjs=$nm_file_list_spec$func_to_tool_file_result 819864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $output" 819964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_verbose "creating $NM input file list: $output" 820064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for obj in $save_libobjs; do 820164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$obj" 820264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$func_to_tool_file_result" 820364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done > "$output" 820464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval cmd=\"$cmd1\" 8205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$cmd" 'exit $?' 820664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output=$save_output 820764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci libobjs=$save_libobjs 8208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville skipped_export=false 8209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command line is too long to execute in one step. 8211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "using reloadable object file for export list..." 8212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville skipped_export=: 8213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Break out early, otherwise skipped_export may be 8214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # set to false by a later but shorter cmd. 8215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 8216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 8219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 8227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_export_symbols="$export_symbols" 8228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 822964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The given exports_symbols file has to be filtered, so filter it. 8234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: $output_objdir/$libname.filter potentially contains lots of 8236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 's' commands which not all seds can handle. GNU sed should be fine 8237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # though. Also, the filter scales superlinearly with the number of 8238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # global variables. join(1) would be nice here, but unfortunately 8239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # isn't a blessed tool. 8240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 824164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols=$output_objdir/$libname.def 8243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_deplibs= 8247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for test_deplib in $deplibs; do 8248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $convenience " in 8249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $test_deplib "*) ;; 8250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 825164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append tmp_deplibs " $test_deplib" 8252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville deplibs="$tmp_deplibs" 8256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 8258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec" && 8259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$compiler_needs_object" = yes && 8260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libobjs"; then 8261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # extract the archives, so we have objects to list. 8262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # TODO: could optimize this to just extract one archive. 8263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville whole_archive_flag_spec= 8264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec"; then 8266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_libobjs=$libobjs 8267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 8269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 827164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 8272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $convenience 827464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libobjs " $func_extract_archives_result" 8275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 8276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$thread_safe_flag_spec\" 828164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append linker_flags " $flag" 8282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make a backup of the uninstalled library when relinking 828564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = relink; then 8286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each of the archive commands. 8290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes && test -n "$module_cmds" ; then 8291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$module_expsym_cmds\" 8293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_expsym_cmds 8294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$module_cmds\" 8296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_cmds 8297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$archive_expsym_cmds\" 8301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_expsym_cmds 8302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$archive_cmds\" 8304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_cmds 8305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$skipped_export" != "X:" && 8309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" && 8310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_len_result && 8311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 8313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command line is too long to link in one step, link piecewise 8315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # or, if using GNU ld and skipped_export is not :, use a linker 8316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # script. 8317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Save the value of $output and $libobjs because we want to 8319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # use them later. If we have whole_archive_flag_spec, we 8320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # want to use save_libobjs as it was before 8321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # whole_archive_flag_spec was expanded, because we can't 8322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # assume the linker understands whole_archive_flag_spec. 8323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This may have to be revisited, in case too many 8324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # convenience libraries get linked in and end up exceeding 8325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the spec. 8326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_libobjs=$libobjs 8328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_output=$output 833064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_basename "$output" 833164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output_la=$func_basename_result 8332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Clear the reloadable object creation command queue and 8334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # initialize k to one. 8335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cmds= 8336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_cmds= 8337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 8338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_robj= 8339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville k=1 8340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=${output_objdir}/${output_la}.lnkscript 8343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating GNU ld script: $output" 834464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo 'INPUT (' > $output 8345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_libobjs 8346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 834764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$obj" 834864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$func_to_tool_file_result" >> $output 8349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 835064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo ')' >> $output 835164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $output" 835264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output" 835364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output=$func_to_tool_file_result 8354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=${output_objdir}/${output_la}.lnk 8356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating linker input file list: $output" 8357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : > $output 8358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville set x $save_libobjs 8359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 8360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville firstobj= 8361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$compiler_needs_object" = yes; then 8362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville firstobj="$1 " 8363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville shift 8364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj 8366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 836764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$obj" 836864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$func_to_tool_file_result" >> $output 8369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 837064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $output" 837164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output" 837264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$save_libobjs"; then 8375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating reloadable object files..." 8376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$output_objdir/$output_la-${k}.$objext 8377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$reload_cmds\" 8378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" 8379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len0=$func_len_result 8380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 8381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Loop over the list of objects to be linked. 8383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_libobjs 8384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 8385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $obj" 8386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len + $func_len_result 8387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 8388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$objlist" = X || 8389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$len" -lt "$max_cmd_len"; then 8390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append objlist " $obj" 8391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The command $test_cmds is almost too long, add a 8393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # command to the queue. 8394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$k" -eq 1 ; then 8395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The first file doesn't have a previous command to add. 839664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reload_objs=$objlist 839764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval concat_cmds=\"$reload_cmds\" 8398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # All subsequent reloadable object files will link in 8400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the last one created. 840164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reload_objs="$objlist $last_robj" 840264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_robj=$output_objdir/$output_la-${k}.$objext 8405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $k + 1 8406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville k=$func_arith_result 8407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$output_objdir/$output_la-${k}.$objext 840864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci objlist=" $obj" 8409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $last_robj" 8410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len0 + $func_len_result 8411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 8412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Handle the remaining objects by creating one last 8415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # reloadable object file. All subsequent reloadable object 8416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # files will link in the last one created. 8417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 841864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reload_objs="$objlist $last_robj" 841964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$last_robj"; then 8421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 842364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $output" 8424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output= 8427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${skipped_export-false}; then 8430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "generating symbol list for \`$libname.la'" 8431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols="$output_objdir/$libname.exp" 8432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $export_symbols 8433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs=$output 8434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Append the command to create the export file. 8435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$last_robj"; then 8438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$save_libobjs" && 8443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating a temporary reloadable object file: $output" 8444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Loop through the commands generated above and execute them. 8446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 8447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $concat_cmds; do 8448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 8449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 8450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$cmd" 8451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 8452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 8453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$cmd" || { 8454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_exit=$? 8455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 845764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = relink; then 8458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ( cd "$output_objdir" && \ 8459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "${realname}T" && \ 8460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "${realname}U" "$realname" ) 8461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $lt_exit 8464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 8465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 8467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if ${skipped_export-false}; then 8475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$include_expsyms"; then 8476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tmp_export_symbols="$export_symbols" 8477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 847864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$orig_export_symbols"; then 8482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # The given exports_symbols file has to be filtered, so filter it. 8483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: $output_objdir/$libname.filter potentially contains lots of 8485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # 's' commands which not all seds can handle. GNU sed should be fine 8486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # though. Also, the filter scales superlinearly with the number of 8487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # global variables. join(1) would be nice here, but unfortunately 8488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # isn't a blessed tool. 8489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 849064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville export_symbols=$output_objdir/$libname.def 8492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobjs=$output 8497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the value of output. 8498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$save_output 8499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 8503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Expand the library linking commands again to reset the 8505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # value of $libobjs for piecewise linking. 8506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each of the archive commands. 8508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes && test -n "$module_cmds" ; then 8509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_expsym_cmds 8511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$module_cmds 8513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_expsym_cmds 8517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$archive_cmds 8519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$delfiles"; then 8524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Append the command to remove temporary files to $cmds. 8525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$cmds~\$RM $delfiles\" 8526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add any objects from preloaded convenience libraries 8529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlprefiles"; then 8530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 853164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 8532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $dlprefiles 853464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append libobjs " $func_extract_archives_result" 8535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "X$libobjs" = "X " && libobjs= 8536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_ifs="$IFS"; IFS='~' 8539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for cmd in $cmds; do 8540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 8541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmd=\"$cmd\" 8542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_silent || { 8543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_expand "$cmd" 8544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval "func_echo $func_quote_for_expand_result" 8545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 8546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval "$cmd" || { 8547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville lt_exit=$? 8548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 855064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = relink; then 8551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ( cd "$output_objdir" && \ 8552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM "${realname}T" && \ 8553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $MV "${realname}U" "$realname" ) 8554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $lt_exit 8557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 8558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville IFS="$save_ifs" 8560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Restore the uninstalled library and exit 856264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = relink; then 8563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 8566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$whole_archive_flag_spec"; then 8567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 8568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 8572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create links to the real library. 8575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for linkname in $linknames; do 8576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$realname" != "$linkname"; then 8577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If -module or -export-dynamic was specified, set the dlname. 8582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$module" = yes || test "$export_dynamic" = yes; then 8583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On all known operating systems, these are identical. 8584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlname="$soname" 8585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj) 8590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-dlopen' is ignored for objects" 8592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $deplibs" in 8595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *\ -l* | *\ -L*) 8596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-l' and \`-L' are ignored for objects" ;; 8597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$rpath" && \ 8600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-rpath' is ignored for objects" 8601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$xrpath" && \ 8603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-R' is ignored for objects" 8604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 8606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info' is ignored for objects" 8607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 8609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for objects" 8610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 8612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 8613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$objs$old_deplibs" && \ 8614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj=$output 8617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_lo2o "$libobj" 8618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj=$func_lo2o_result 8619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 8621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libobj= 8622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville obj="$output" 8623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old objects. 8627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $obj $libobj 8628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Objects from convenience libraries. This assumes 8630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # single-version convenience libraries. Whenever we create 8631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # different ones for PIC/non-PIC, this we'll have to duplicate 8632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the extraction. 8633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_conv_objs= 8634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop= 8635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # reload_cmds runs $LD directly, so let us get rid of 8636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # -Wl from whole_archive_flag_spec and hope we can get by with 8637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # turning comma into space.. 8638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wl= 8639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$convenience"; then 8641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$whole_archive_flag_spec"; then 8642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 864364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${obj}x" 864664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 8647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $convenience 8649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_conv_objs="$reload_objs $func_extract_archives_result" 8650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 865364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # If we're not building shared, we need to use non_pic_objs 865464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 865564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 8656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create the old-style object. 865764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$obj" 8660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$reload_cmds" 'exit $?' 8661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Exit if we aren't doing a library object file. 8663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$libobj"; then 8664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 8665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 8666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 8669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" != yes; then 8672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 8673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 8674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Create an invalid libtool object if no PIC, so that we don't 8677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # accidentally link it into a program. 8678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $show "echo timestamp > $libobj" 8679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 8681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$pic_flag" || test "$pic_mode" != default; then 8684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only do commands if we really have different PIC objects. 8685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville reload_objs="$libobjs $reload_conv_objs" 8686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$libobj" 8687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$reload_cmds" 'exit $?' 8688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$gentop"; then 8691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '${RM}r "$gentop"' 8692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 8695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville prog) 8698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 8699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*) func_stripname '' '.exe' "$output" 8700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$func_stripname_result.exe;; 8701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$vinfo" && \ 8703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-version-info' is ignored for programs" 8704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$release" && \ 8706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`-release' is ignored for programs" 8707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$preload" = yes \ 8709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_support" = unknown \ 8710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_self" = unknown \ 8711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville && test "$dlopen_self_static" = unknown && \ 8712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 8715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-rhapsody* | *-*-darwin1.[012]) 8716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # On Rhapsody replace the C library is the System framework 871764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 871864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 8723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *-*-darwin*) 8724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't allow lazy linking, it breaks C++ global constructors 8725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # But is supposedly fixed on 10.4 or later (yay!). 8726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$tagname" = CXX ; then 8727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 10.[0123]) 872964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compile_command " ${wl}-bind_at_load" 873064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append finalize_command " ${wl}-bind_at_load" 8731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Time to change all our "foo.ltframework" stuff back to "-framework foo" 873564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # move library search paths that coincide with paths to not yet 8742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # installed libraries to the beginning of the library search list 8743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new_libs= 8744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for path in $notinst_path; do 8745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 8746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) ;; 8747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 8748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $compile_deplibs " in 8749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" -L$path/$objdir "*) 875064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append new_libs " -L$path/$objdir" ;; 8751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $compile_deplibs; do 8756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 8757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville -L*) 8758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $new_libs " in 8759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $deplib "*) ;; 876064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append new_libs " $deplib" ;; 8761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 876364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append new_libs " $deplib" ;; 8764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_deplibs="$new_libs" 8767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 876964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append compile_command " $compile_deplibs" 877064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append finalize_command " $finalize_deplibs" 8771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$rpath$xrpath"; then 8773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # If the user specified any rpath flags, then add them. 8774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $rpath $xrpath; do 8775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This is the magic to use -rpath. 8776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_rpath " in 8777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 877864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_rpath " $libdir" ;; 8779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now hardcode the library paths 8784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 8785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 8786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $compile_rpath $finalize_rpath; do 8787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 8788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 8789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 8790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 8791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 8793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 879764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 880364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rpath " $flag" 8804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 8806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$perm_rpath " in 8807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 880864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append perm_rpath " $libdir" ;; 8809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 881264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 8815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$libdir:"*) ;; 881664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ::) dllsearchpath=$libdir;; 881764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dllsearchpath ":$libdir";; 8818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case :$dllsearchpath: in 8820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *":$testbindir:"*) ;; 882164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ::) dllsearchpath=$testbindir;; 882264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append dllsearchpath ":$testbindir";; 8823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 8828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 8829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 8830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 8831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval rpath=\" $hardcode_libdir_flag_spec\" 8832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_rpath="$rpath" 8834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 8836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs= 8837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for libdir in $finalize_rpath; do 8838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_flag_spec"; then 8839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator"; then 8840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$hardcode_libdirs"; then 8841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville hardcode_libdirs="$libdir" 8842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Just accumulate the unique libdirs. 8844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 884864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval flag=\"$hardcode_libdir_flag_spec\" 885464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rpath " $flag" 8855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -n "$runpath_var"; then 8857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case "$finalize_perm_rpath " in 8858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $libdir "*) ;; 885964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append finalize_perm_rpath " $libdir" ;; 8860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Substitute the hardcoded libdirs into the rpath. 8864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$hardcode_libdir_separator" && 8865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$hardcode_libdirs"; then 8866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libdir="$hardcode_libdirs" 8867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval rpath=\" $hardcode_libdir_flag_spec\" 8868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_rpath="$rpath" 8870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$libobjs" && test "$build_old_libs" = yes; then 8872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Transform all the library objects into standard objects. 887364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 887464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # template prelinking step 8880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$prelink_cmds"; then 8881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$prelink_cmds" 'exit $?' 8882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=yes 8885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 888664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cegcc* | *mingw32ce*) 888764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 888864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci wrappers_required=no 888964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 8890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 8891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" != yes; then 8892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=no 8893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 8896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville wrappers_required=no 8898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 8900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 8901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$wrappers_required" = no; then 8902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 890364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_command$compile_rpath" 8905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We have no uninstalled library dependencies, so finalize right now. 8907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=0 8908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit_status=$?' 8909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 891064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$postlink_cmds"; then 891164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output" 891264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 891364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_execute_cmds "$postlink_cmds" 'exit $?' 891464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 891564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 8916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the generated files. 8917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -f "$output_objdir/${outputname}S.${objext}"; then 8918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $exit_status 8922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$compile_shlibpath$finalize_shlibpath"; then 8925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finalize_shlibpath"; then 8928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_var= 8932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_var= 8933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$runpath_var"; then 8934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$perm_rpath"; then 8935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 8936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 8937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $perm_rpath; do 893864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rpath "$dir:" 8939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$finalize_perm_rpath"; then 8943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We should set the runpath_var. 8944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rpath= 8945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $finalize_perm_rpath; do 894664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rpath "$dir:" 8947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 8948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$no_install" = yes; then 8953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # We don't need to create a wrapper script. 8954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 8955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 895664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old output file. 8958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $output 8959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Link the executable and exit 8960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit $?' 896164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 896264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$postlink_cmds"; then 896364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output" 896464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 896564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_execute_cmds "$postlink_cmds" 'exit $?' 896664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 896764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 8968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 8969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_action" = relink; then 8972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Fast installation is not supported 8973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 8974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$finalize_var$finalize_command$finalize_rpath" 8975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "this platform does not like uninstalled shared libraries" 8977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_warning "\`$output' will be relinked during installation" 8978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" != no; then 8980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$finalize_var$compile_command$finalize_rpath" 8981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes; then 898264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # fast_install is set to needless 8985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 8986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 8988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville link_command="$compile_var$compile_command$compile_rpath" 8989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$finalize_var$finalize_command$finalize_rpath" 8990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 8992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace the output file specification. 899464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the old output files. 8997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 8999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$link_command" 'exit $?' 9000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 900164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test -n "$postlink_cmds"; then 900264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output_objdir/$outputname" 900364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 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'` 900464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_execute_cmds "$postlink_cmds" 'exit $?' 900564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 900664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci 9007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now create the wrapper script. 9008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output" 9009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote the relink command for shipping. 9011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$relink_command"; then 9012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preserve any variables that may affect compiler behavior 9013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $variables_saved_for_relink; do 9014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval test -z \"\${$var+set}\"; then 9015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif eval var_value=\$$var; test -z "$var_value"; then 9017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=; export $var; $relink_command" 9018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$var_value" 9020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="(cd `pwd`; $relink_command)" 902464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only actually do things if not in dry run mode. 9028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 9029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # win32 will think the script is a binary if it has 9030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # a .exe suffix, so we strip it off here. 9031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 9032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) func_stripname '' '.exe' "$output" 9033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output=$func_stripname_result ;; 9034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # test for cygwin because mv fails w/o .exe extensions 9036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 9037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin*) 9038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exeext=.exe 9039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$outputname" 9040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville outputname=$func_stripname_result ;; 9041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) exeext= ;; 9042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host in 9044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *cygwin* | *mingw* ) 9045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname_and_basename "$output" "" "." 9046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_name=$func_basename_result 9047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output_path=$func_dirname_result 9048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cwrappersource="$output_path/$objdir/lt-$output_name.c" 9049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cwrapper="$output_path/$output_name.exe" 9050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $cwrappersource $cwrapper 9051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_cwrapperexe_src > $cwrappersource 9054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 905564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # The wrapper executable is built using the $host compiler, 905664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # because it contains $host paths and files. If cross- 905764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # compiling, it, like the target executable, must be 905864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # executed on the $host or under an emulation environment. 9059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 9060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $STRIP $cwrapper 9062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 9063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now, create the wrapper script for func_source use: 9065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname $cwrapper 9066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $func_ltwrapper_scriptname_result 9067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 9069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # note: this script will not be executed, so do not chmod. 9070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "x$build" = "x$host" ; then 9071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper no > $func_ltwrapper_scriptname_result 9074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 9076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * ) 9078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $output 9079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_emit_wrapper no > $output 9082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville chmod +x $output 9083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 9086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 9087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # See if we need to build an old-fashioned archive. 9091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for oldlib in $oldlibs; do 9092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = convenience; then 9094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$libobjs_save $symfileobj" 9095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville addlibs="$convenience" 9096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 9097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$build_libtool_libs" = module; then 9099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$libobjs_save" 9100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville build_libtool_libs=no 9101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs="$old_deplibs $non_pic_objects" 9103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$preload" = yes && test -f "$symfileobj"; then 910464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append oldobjs " $symfileobj" 9105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville addlibs="$old_convenience" 9108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$addlibs"; then 9111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 911264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 9113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $addlibs 911564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append oldobjs " $func_extract_archives_result" 9116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the archive commands. 9119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$old_archive_from_new_cmds 9121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add any objects from preloaded convenience libraries 9124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$dlprefiles"; then 9125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 912664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 9127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_extract_archives $gentop $dlprefiles 912964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append oldobjs " $func_extract_archives_result" 9130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # POSIX demands no paths to be encoded in archives. We have 9133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # to avoid creating archives with duplicate basenames if we 9134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # might have to extract them afterwards, e.g., when creating a 9135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # static archive out of a convenience library, or when linking 9136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the entirety of a libtool archive into another (currently 9137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # not supported by libtool). 9138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (for obj in $oldobjs 9139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 9140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$obj" 9141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO "$func_basename_result" 9142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done | sort | sort -uc >/dev/null 2>&1); then 9143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 9144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 914564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci echo "copying selected object files to avoid basename conflicts..." 9146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville gentop="$output_objdir/${outputname}x" 914764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append generated " $gentop" 9148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mkdir_p "$gentop" 9149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_oldobjs=$oldobjs 9150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs= 9151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville counter=1 9152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 9153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 9154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$obj" 9155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objbase="$func_basename_result" 9156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $oldobjs " in 9157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville " ") oldobjs=$obj ;; 9158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\ /]"$objbase "*) 9159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville while :; do 9160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Make sure we don't pick an alternate name that also 9161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # overlaps. 9162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newobj=lt$counter-$objbase 9163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $counter + 1 9164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville counter=$func_arith_result 9165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $oldobjs " in 9166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *[\ /]"$newobj "*) ;; 9167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 917164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append oldobjs " $gentop/$newobj" 9172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 917364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append oldobjs " $obj" ;; 9174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 917764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 917864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tool_oldlib=$func_to_tool_file_result 9179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"$old_archive_cmds\" 9180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $cmds" 9182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_len_result 9183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville cmds=$old_archive_cmds 918564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci elif test -n "$archiver_list_spec"; then 918664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_verbose "using command file archive linking..." 918764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci for obj in $oldobjs 918864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci do 918964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$obj" 919064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci $ECHO "$func_to_tool_file_result" 919164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci done > $output_objdir/$libname.libcmd 919264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_to_tool_file "$output_objdir/$libname.libcmd" 919364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci oldobjs=" $archiver_list_spec$func_to_tool_file_result" 919464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci cmds=$old_archive_cmds 9195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the command line is too long to link in one step, link in parts 9197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "using piecewise archive linking..." 9198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_RANLIB=$RANLIB 9199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=: 9200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 9201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville concat_cmds= 9202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville save_oldobjs=$oldobjs 9203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs= 9204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Is there a better way of finding the last object in the list? 9205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 9206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 9207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville last_oldobj=$obj 9208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval test_cmds=\"$old_archive_cmds\" 9210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $test_cmds" 9211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len0=$func_len_result 9212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 9213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for obj in $save_oldobjs 9214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 9215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_len " $obj" 9216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_arith $len + $func_len_result 9217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$func_arith_result 9218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_append objlist " $obj" 9219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$len" -lt "$max_cmd_len"; then 9220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 9221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the above command should be used before it gets too long 9223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs=$objlist 9224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$obj" = "$last_oldobj" ; then 9225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=$save_RANLIB 9226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville objlist= 9230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville len=$len0 9231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RANLIB=$save_RANLIB 9234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville oldobjs=$objlist 9235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$oldobjs" = "X" ; then 9236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$concat_cmds\" 9237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$cmds" 'exit $?' 9243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -n "$generated" && \ 9246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "${RM}r$generated" 9247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Now create the libtool archive. 9249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $output in 9250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 9251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville old_library= 9252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$build_old_libs" = yes && old_library="$libname.$libext" 9253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_verbose "creating $output" 9254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Preserve any variables that may affect compiler behavior 9256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for var in $variables_saved_for_relink; do 9257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if eval test -z \"\${$var+set}\"; then 9258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif eval var_value=\$$var; test -z "$var_value"; then 9260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=; export $var; $relink_command" 9261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_quote_for_eval "$var_value" 9263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Quote the link command for shipping. 9267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 926864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$hardcode_automatic" = yes ; then 9270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 9271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only create the output if not a dry run. 9274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_dry_run || { 9275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for installed in no yes; do 9276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = yes; then 9277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -z "$install_libdir"; then 9278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville break 9279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville output="$output_objdir/$outputname"i 9281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Replace all uninstalled libtool libraries with the installed ones 9282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdependency_libs= 9283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for deplib in $dependency_libs; do 9284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $deplib in 9285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 9286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$deplib" 9287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 928864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_resolve_sysroot "$deplib" 928964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 9291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$deplib' is not a valid libtool archive" 929264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 929364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 929464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -L*) 929564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname -L '' "$deplib" 929664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot "$func_stripname_result" 929764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdependency_libs " -L$func_replace_sysroot_result" 9298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 929964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -R*) 930064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_stripname -R '' "$deplib" 930164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_replace_sysroot "$func_stripname_result" 930264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdependency_libs " -R$func_replace_sysroot_result" 930364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 930464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append newdependency_libs " $deplib" ;; 9305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dependency_libs="$newdependency_libs" 9308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 9309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlfiles; do 9311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 9312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 9313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 9314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 9315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 9317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a valid libtool archive" 931864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 932064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append newdlfiles " $lib" ;; 9321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 9324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 9325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 9326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 9327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 9328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Only pass preopened files to the pseudo-archive (for 9329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # eventual linking with the app. that links it) if we 9330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # didn't already link the preopened objects directly into 9331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # the library: 9332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$lib" 9333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 9334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$libdir" && \ 9336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_error "\`$lib' is not a valid libtool archive" 933764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 9342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlfiles= 9344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlfiles; do 9345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 9346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) abs=`pwd`"/$lib" ;; 9348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 934964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlfiles " $abs" 9350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlfiles="$newdlfiles" 9352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville newdlprefiles= 9353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for lib in $dlprefiles; do 9354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $lib in 9355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) abs=`pwd`"/$lib" ;; 9357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 935864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append newdlprefiles " $abs" 9359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dlprefiles="$newdlprefiles" 9361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $RM $output 9363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # place dlname in correct position for cygwin 936464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # In fact, it would be nice if we could use this code for all target 936564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # systems that can't hard-code library paths into their executables 936664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # and that have no shared library path variable independent of PATH, 936764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # but it turns out we can't easily determine that from inspecting 936864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # libtool variables, so we have to hard-code the OSs to which it 936964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # applies here; at the moment, that means platforms that use the PE 937064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # object format with DLL files. See the long comment at the top of 937164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # tests/bindir.at for full details. 9372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tdlname=$dlname 9373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $host,$output,$installed,$module,$dlname in 937464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 937564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # If a -bindir argument was supplied, place the dll there. 937664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "x$bindir" != x ; 937764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci then 937864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_relative_path "$install_libdir" "$bindir" 937964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tdlname=$func_relative_path_result$dlname 938064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci else 938164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Otherwise fall back on heuristic. 938264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci tdlname=../bin/$dlname 938364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci fi 938464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci ;; 9385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO > $output "\ 9387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $outputname - a libtool library file 9388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 9390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Please DO NOT delete this file! 9391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# It is necessary for linking the library. 9392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name that we can dlopen(3). 9394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlname='$tdlname' 9395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of this library. 9397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary_names='$library_names' 9398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of the static archive. 9400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleold_library='$old_library' 9401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Linker flags that can not go in dependency_libs. 9403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinherited_linker_flags='$new_inherited_linker_flags' 9404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Libraries that this one depends upon. 9406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledependency_libs='$dependency_libs' 9407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of additional weak libraries provided by this library 9409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleweak_library_names='$weak_libs' 9410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Version information for $libname. 9412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecurrent=$current 9413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleage=$age 9414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerevision=$revision 9415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Is this an already installed library? 9417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinstalled=$installed 9418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Should we warn about portability when linking against -modules? 9420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleshouldnotlink=$module 9421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Files to dlopen/dlpreopen 9423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlopen='$dlfiles' 9424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlpreopen='$dlprefiles' 9425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Directory that this library needs to be installed in: 9427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibdir='$install_libdir'" 9428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$installed" = no && test "$need_relink" = yes; then 9429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $ECHO >> $output "\ 9430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\"" 9431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 9434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a symbolic link so that the libtool archive can be found in 9436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # LD_LIBRARY_PATH before the program is installed. 9437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_SUCCESS 9441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 9442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 944364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mode_link ${1+"$@"} 9445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_uninstall arg... 9448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_uninstall () 9449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{ 9450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville $opt_debug 9451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RM="$nonopt" 9452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville files= 9453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmforce= 9454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=0 9455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # This variable tells wrapper scripts just to set variables rather 9457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # than running their programs. 9458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville libtool_install_magic="$magic" 9459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for arg 9461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville do 9462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $arg in 946364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -f) func_append RM " $arg"; rmforce=yes ;; 946464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci -*) func_append RM " $arg" ;; 946564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append files " $arg" ;; 9466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -z "$RM" && \ 9470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify an RM program" 9471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmdirs= 9473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for file in $files; do 9475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_dirname "$file" "" "." 9476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville dir="$func_dirname_result" 9477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$dir" = X.; then 947864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci odir="$objdir" 9479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 948064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci odir="$dir/$objdir" 9481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_basename "$file" 9483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville name="$func_basename_result" 948464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test "$opt_mode" = uninstall && odir="$dir" 9485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 948664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci # Remember odir for removal later, being careful to avoid duplicates 948764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = clean; then 9488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case " $rmdirs " in 948964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *" $odir "*) ;; 949064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) func_append rmdirs " $odir" ;; 9491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Don't error if the file doesn't exist and rm -f was used. 9495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if { test -L "$file"; } >/dev/null 2>&1 || 9496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville { test -h "$file"; } >/dev/null 2>&1 || 9497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test -f "$file"; then 9498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville : 9499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test -d "$file"; then 9500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit_status=1 9501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 9502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville elif test "$rmforce" = yes; then 9503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville continue 9504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville rmfiles="$file" 9507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $name in 9509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.la) 9510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Possibly a libtool archive, so verify it. 9511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$file"; then 9512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$name 9513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Delete the libtool libraries and symlinks. 9515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for n in $library_names; do 951664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $odir/$n" 9517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 951864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 952064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case "$opt_mode" in 9521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville clean) 952264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci case " $library_names " in 9523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *" $dlname "*) ;; 952464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 952664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville uninstall) 9529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$library_names"; then 9530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the postuninstall commands. 9531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$old_library"; then 9535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do each command in the old_postuninstall commands. 9536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # FIXME: should reinstall the best remaining shared library. 9539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.lo) 9545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Possibly a libtool object, so verify it. 9546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_lalib_p "$file"; then 9547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Read the .lo file 9549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$name 9550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add PIC object to the list of files to remove. 9552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$pic_object" && 9553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$pic_object" != none; then 955464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $dir/$pic_object" 9555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Add non-PIC object to the list of files to remove. 9558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -n "$non_pic_object" && 9559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test "$non_pic_object" != none; then 956064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $dir/$non_pic_object" 9561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *) 956664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci if test "$opt_mode" = clean ; then 9567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville noexename=$name 9568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville case $file in 9569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *.exe) 9570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$file" 9571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville file=$func_stripname_result 9572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_stripname '' '.exe' "$name" 9573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville noexename=$func_stripname_result 9574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # $file with .exe has already been added to rmfiles, 9575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # add $file without .exe 957664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $file" 9577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Do a test to see if this is a libtool program. 9580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_p "$file"; then 9581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if func_ltwrapper_executable_p "$file"; then 9582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_ltwrapper_scriptname "$file" 9583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 9584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $func_ltwrapper_scriptname_result 958564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $func_ltwrapper_scriptname_result" 9586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville else 9587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville relink_command= 9588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_source $dir/$noexename 9589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # note $name still contains .exe if it was in $file originally 9592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # as does the version of $file that was added into $rmfiles 959364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "$fast_install" = yes && test -n "$relink_command"; then 959564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $odir/lt-$name" 9596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test "X$noexename" != "X$name" ; then 959864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_append rmfiles " $odir/lt-${noexename}.c" 9599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ;; 9603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville esac 9604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "$RM $rmfiles" 'exit_status=1' 9605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville # Try to remove the ${objdir}s in the directories where we deleted files 9608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for dir in $rmdirs; do 9609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if test -d "$dir"; then 9610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_show_eval "rmdir $dir >/dev/null 2>&1" 9611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville fi 9612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville done 9613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $exit_status 9615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 9616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 961764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_mode_uninstall ${1+"$@"} 9619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 962064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest -z "$opt_mode" && { 9621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville help="$generic_help" 9622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville func_fatal_help "you must specify a MODE" 9623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 9624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest -z "$exec_cmd" && \ 962664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci func_fatal_help "invalid operation mode \`$opt_mode'" 9627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "$exec_cmd"; then 9629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville eval exec "$exec_cmd" 9630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville exit $EXIT_FAILURE 9631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi 9632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit $exit_status 9634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The TAGs below are defined such that we never get into a situation 9637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in which we disable both kinds of libraries. Given conflicting 9638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# choices, we go for a static library, that is the most portable, 9639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# since we can't tell whether shared libraries were disabled because 9640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the user asked for that or because the platform doesn't support 9641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# them. This is particularly important on AIX, because we don't 9642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# support having both static and shared libraries enabled at the same 9643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# time on that platform, so we default to a shared-only configuration. 9644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If a disable-shared tag is given, we'll fallback to a static-only 9645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# configuration. But we'll never go from static-only to shared-only. 9646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_libtool_libs=no 9649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=yes 9650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-shared 9651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-static 9655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Local Variables: 9657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# mode:shell-script 9658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# sh-indentation:2 9659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# End: 9660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# vi:sw=2 9661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 9662