18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated from ltmain.m4sh. 28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ltmain.sh (GNU libtool) 2.2.6 48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This is free software; see the source for copying conditions. There is NO 88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# GNU Libtool is free software; you can redistribute it and/or modify 118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# it under the terms of the GNU General Public License as published by 128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the Free Software Foundation; either version 2 of the License, or 138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# (at your option) any later version. 148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# As a special exception to the GNU General Public License, 168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if you distribute this file as part of a program or library that 178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is built using GNU Libtool, you may include this file under the 188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# same distribution terms that you use for the rest of that program. 198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# GNU Libtool is distributed in the hope that it will be useful, but 218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# WITHOUT ANY WARRANTY; without even the implied warranty of 228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# General Public License for more details. 248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# You should have received a copy of the GNU General Public License 268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# along with GNU Libtool; see the file COPYING. If not, a copy 278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# can be downloaded from http://www.gnu.org/licenses/gpl.html, 288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# or obtained by writing to the Free Software Foundation, Inc., 298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Usage: $progname [OPTION]... [MODE-ARG]... 328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Provide generalized library-building support services. 348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --config show all configuration variables 368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --debug enable verbose shell tracing 378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -n, --dry-run display commands without modifying any files 388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --features display basic configuration information and exit 398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --mode=MODE use operation mode MODE 408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --preserve-dup-deps don't remove duplicate dependency libraries 418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --quiet, --silent don't print informational messages 428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --tag=TAG use configuration variables from tag TAG 438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -v, --verbose print informational messages (default) 448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# --version print version information 458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -h, --help print short or long help message 468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MODE must be one of the following: 488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# clean remove files from the build directory 508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# compile compile a source file into a libtool object 518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# execute automatically set library path, then run a program 528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# finish complete the installation of libtool libraries 538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# install install libraries or executables 548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# link create a library or an executable 558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# uninstall remove libraries from an installed directory 568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MODE-ARGS vary depending on the MODE. 588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# When reporting a bug, please describe a test case to reproduce it and 618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include the following information: 628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# host-triplet: $host 648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# shell: $SHELL 658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# compiler: $LTCC 668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# compiler flags: $LTCFLAGS 678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# linker: $LD (gnu? $with_gnu_ld) 688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# automake: $automake_version 708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# autoconf: $autoconf_version 718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Report bugs to <bug-libtool@gnu.org>. 738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsPROGRAM=ltmain.sh 758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsPACKAGE=libtool 768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsVERSION="2.2.6 Debian-2.2.6a-4" 778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsTIMESTAMP="" 788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspackage_revision=1.3012 798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Be Bourne compatible 818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels emulate sh 838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels NULLCMD=: 848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # is contrary to our usage. Disable this feature. 868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels alias -g '${1+"$@"}'='"$@"' 878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels setopt NO_GLOB_SUBST 888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse 898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi 918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64 928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh 938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# NLS nuisances: We save the old values to restore during execute mode. 958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Only set LANG and LC_ALL to C if already set. 968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# These must not be set unconditionally because not all systems understand 978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# e.g. LANG=C (notably SCO). 988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_user_locale= 998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_safe_locale= 1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdo 1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "if test \"\${$lt_var+set}\" = set; then 1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_$lt_var=\$$lt_var 1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $lt_var=C 1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export $lt_var 1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi" 1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdone 1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$lt_unset CDPATH 1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${CP="cp -f"} 1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${ECHO="echo"} 1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${EGREP="/bin/grep -E"} 1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${FGREP="/bin/grep -F"} 1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${GREP="/bin/grep"} 1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${LN_S="ln -s"} 1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MAKE="make"} 1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MKDIR="mkdir"} 1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MV="mv -f"} 1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${RM="rm -f"} 1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${SED="/bin/sed"} 1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${Xsed="$SED -e 1s/^X//"} 1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Global variables: 1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_SUCCESS=0 1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_FAILURE=1 1348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit_status=$EXIT_SUCCESS 1388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure IFS has a sensible default 1408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_nl=' 1418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels' 1428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIFS=" $lt_nl" 1438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdirname="s,/[^/]*$,," 1458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbasename="s,^.*/,," 1468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_dirname_and_basename file append nondir_replacement 1488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# perform func_basename and func_dirname in a single function 1498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# call: 1508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# dirname: Compute the dirname of FILE. If nonempty, 1518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# add APPEND to the result, otherwise set result 1528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# to NONDIR_REPLACEMENT. 1538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# value returned in "$func_dirname_result" 1548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# basename: Compute filename of FILE. 1558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# value retuned in "$func_basename_result" 1568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Implementation must be kept synchronized with func_dirname 1578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# and func_basename. For efficiency, we do not delegate to 1588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# those functions but instead duplicate the functionality here. 1598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_dirname_and_basename () 1608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 1618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract subdirectory from the argument. 1628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$func_dirname_result" = "X${1}"; then 1648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_result="${3}" 1658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 1668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_result="$func_dirname_result${2}" 1678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 1688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 1708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated shell functions inserted here. 1728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is ksh but when the shell is invoked as "sh" and the current value of 1758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the _XPG environment variable is not equal to 1 (one), the special 1768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# positional parameter $0, within a function call, is the name of the 1778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# function. 1788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprogpath="$0" 1798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name of this program: 1818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# In the unlikely event $progname began with a '-', it would play havoc with 1828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_echo (imagine progname=-n), so we prepend ./ in that case: 1838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_dirname_and_basename "$progpath" 1848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprogname=$func_basename_result 1858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscase $progname in 1868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) progname=./$progname ;; 1878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsesac 1888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure we have an absolute path for reexecution: 1908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscase $progpath in 1918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]*|[A-Za-z]:\\*) ;; 1928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\\/]*) 1938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progdir=$func_dirname_result 1948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progdir=`cd "$progdir" && pwd` 1958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progpath="$progdir/$progname" 1968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 1978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 1988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_IFS="$IFS" 1998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=: 2008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for progdir in $PATH; do 2018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_IFS" 2028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -x "$progdir/$progname" && break 2038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 2048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_IFS" 2058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$progdir" || progdir=`pwd` 2068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progpath="$progdir/$progname" 2078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 2088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsesac 2098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Sed substitution that helps us do robust quoting. It backslashifies 2118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# metacharacters that are still active within double-quoted strings. 2128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsXsed="${SED}"' -e 1s/^X//' 2138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Same as above, but do not quote variable references. 2168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 2178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Re-`\' parameter expansions in output of double_quote_subst that were 2198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in input to double_quote_subst, that '$' was protected from expansion. 2218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Since each input `\' is now two `\'s, look for any number of runs of 2228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs='\\' 2248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs2='\\\\' 2258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs4='\\\\\\\\' 2268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdollar='\$' 2278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_double_backslash="\ 2288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/$bs4/&\\ 2298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/g 2308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^$bs2$dollar/$bs&/ 2318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\n//g" 2338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Standard options: 2358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_dry_run=false 2368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_help=false 2378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_quiet=false 2388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_verbose=false 2398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_warning=: 2408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_echo arg... 2428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message, along with the current mode 2438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# name if it has been set yet. 2448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_echo () 2458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$progname${mode+: }$mode: $*" 2478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_verbose arg... 2508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message in verbose mode only. 2518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_verbose () 2528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_verbose && func_echo ${1+"$@"} 2548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A bug in bash halts the script if the last line of a function 2568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # fails when set -e is in force, so we need another command to 2578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # work around that: 2588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 2598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_error arg... 2628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error. 2638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_error () 2648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_warning arg... 2698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed warning message to standard error. 2708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_warning () 2718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 2738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # bash bug again: 2758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 2768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_error arg... 2798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, and exit. 2808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_error () 2818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error ${1+"$@"} 2838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 2848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_help arg... 2878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, followed by 2888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a help hint, and exit. 2898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_help () 2908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 2918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error ${1+"$@"} 2928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "$help" 2938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 2948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelshelp="Try \`$progname --help' for more information." ## default 2958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_grep expression filename 2988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Check whether EXPRESSION matches any line of FILENAME, without output. 2998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_grep () 3008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 3018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP "$1" "$2" >/dev/null 2>&1 3028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 3038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mkdir_p directory-path 3068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure the entire path to DIRECTORY-PATH is available. 3078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mkdir_p () 3088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 3098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_directory_path="$1" 3108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_dir_list= 3118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Protect directory names starting with `-' 3158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $my_directory_path in 3168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) my_directory_path="./$my_directory_path" ;; 3178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 3188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # While some portion of DIR does not yet exist... 3208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test ! -d "$my_directory_path"; do 3218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # ...make a list in topmost first order. Use a colon delimited 3228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # list incase some portion of path contains whitespace. 3238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_dir_list="$my_directory_path:$my_dir_list" 3248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the last portion added has no slash in it, the list is done 3268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $my_directory_path in */*) ;; *) break ;; esac 3278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # ...otherwise throw away the child directory and loop 3298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 3318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_mkdir_p_IFS="$IFS"; IFS=':' 3348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for my_dir in $my_dir_list; do 3358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_mkdir_p_IFS" 3368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # mkdir can fail with a `File exist' error if two processes 3378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # try to create one of the directories concurrently. Don't 3388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # stop in that case! 3398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MKDIR "$my_dir" 2>/dev/null || : 3408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 3418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_mkdir_p_IFS" 3428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Bail out if we (or some other process) failed to create a directory. 3448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -d "$my_directory_path" || \ 3458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "Failed to create \`$1'" 3468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 3478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 3488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mktempdir [string] 3518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make a temporary directory that won't clash with other running 3528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# libtool processes, and avoids race conditions if possible. If 3538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# given, STRING is the basename for that directory. 3548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mktempdir () 3558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 3568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_template="${TMPDIR-/tmp}/${1-$progname}" 3578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$opt_dry_run" = ":"; then 3598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Return a directory name, but don't create it in dry-run mode 3608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_tmpdir="${my_template}-$$" 3618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 3628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If mktemp works, use that first and foremost 3648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 3658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -d "$my_tmpdir"; then 3678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Failing that, at least try and use $RANDOM to avoid a race 3688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_tmpdir="${my_template}-${RANDOM-0}$$" 3698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_mktempdir_umask=`umask` 3718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels umask 0077 3728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MKDIR "$my_tmpdir" 3738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels umask $save_mktempdir_umask 3748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 3758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If we're not in dry-run mode, bomb out on failure 3778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -d "$my_tmpdir" || \ 3788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 3798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 3808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "X$my_tmpdir" | $Xsed 3828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 3838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 3858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_quote_for_eval arg 3868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Aesthetically quote ARG to be evaled later. 3878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is double-quoted, suitable for a subsequent eval, whereas 3898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# which are still active within double quotes backslashified. 3918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_quote_for_eval () 3928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 3938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 3948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\\\`\"\$]*) 3958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 3978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval_unquoted_result="$1" ;; 3988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 3998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $func_quote_for_eval_unquoted_result in 4018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Double-quote args containing shell metacharacters to delay 4028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # word splitting, command substitution and and variable 4038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # expansion for a subsequent eval. 4048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Many Bourne shells cannot handle close brackets correctly 4058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # in scan sets, so we specify it separately. 4068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 4098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 4108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 4118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 4128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 4138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_quote_for_expand arg 4168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Aesthetically quote ARG to be evaled later; same as above, 4178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but do not quote variable references. 4188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_quote_for_expand () 4198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 4208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 4218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\\\`\"]*) 4228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_arg=`$ECHO "X$1" | $Xsed \ 4238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 4248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 4258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_arg="$1" ;; 4268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 4278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $my_arg in 4298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Double-quote args containing shell metacharacters to delay 4308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # word splitting and command substitution for a subsequent eval. 4318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Many Bourne shells cannot handle close brackets correctly 4328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # in scan sets, so we specify it separately. 4338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_arg="\"$my_arg\"" 4358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 4368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 4378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand_result="$my_arg" 4398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 4408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_show_eval cmd [fail_exp] 4438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is given, then evaluate it. 4468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_show_eval () 4478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 4488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_cmd="$1" 4498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_fail_exp="${2-:}" 4508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ${opt_silent-false} || { 4528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand "$my_cmd" 4538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 4548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 4558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ${opt_dry_run-false}; then :; else 4578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$my_cmd" 4588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_status=$? 4598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$my_status" -eq 0; then :; else 4608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "(exit $my_status); $my_fail_exp" 4618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 4628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 4638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 4648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_show_eval_locale cmd [fail_exp] 4678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is given, then evaluate it. Use the saved locale for evaluation. 4708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_show_eval_locale () 4718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 4728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_cmd="$1" 4738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_fail_exp="${2-:}" 4748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ${opt_silent-false} || { 4768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand "$my_cmd" 4778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 4788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 4798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ${opt_dry_run-false}; then :; else 4818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$lt_user_locale 4828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $my_cmd" 4838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_status=$? 4848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$lt_safe_locale" 4858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$my_status" -eq 0; then :; else 4868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "(exit $my_status); $my_fail_exp" 4878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 4888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 4898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 4908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 4958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_version 4968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo version message to standard output and exit. 4978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_version () 4988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 4998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# // 5018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# *$// 5028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p 5048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels }' < "$progpath" 5058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 5068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 5078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_usage 5098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo short help message to standard output and exit. 5108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_usage () 5118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 5128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -n '/^# Usage:/,/# -h/ { 5138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# // 5148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# *$// 5158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\$progname/'$progname'/ 5168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p 5178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels }' < "$progpath" 5188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 5198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "run \`$progname --help | more' for full usage" 5208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 5218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 5228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_help 5248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo long help message to standard output and exit. 5258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_help () 5268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 5278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -n '/^# Usage:/,/# Report bugs to/ { 5288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# // 5298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/^# *$// 5308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$progname*'$progname'* 5318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$host*'"$host"'* 5328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$SHELL*'"$SHELL"'* 5338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$LTCC*'"$LTCC"'* 5348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$LTCFLAGS*'"$LTCFLAGS"'* 5358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s*\$LD*'"$LD"'* 5368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p 5408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels }' < "$progpath" 5418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 5428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 5438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_missing_arg argname 5458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error and set global 5468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# exit_cmd. 5478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_missing_arg () 5488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 5498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "missing argument for $1" 5508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit_cmd=exit 5518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 5528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit_cmd=: 5548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Check that we have a working $ECHO. 5608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test "X$1" = X--no-reexec; then 5618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Discard the --no-reexec flag, and continue. 5628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 5638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselif test "X$1" = X--fallback-echo; then 5648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Avoid inline document here, it may be left over 5658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 5668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Yippee, $ECHO works! 5688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 5698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse 5708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restart under the correct shell, and then maybe $ECHO will work. 5718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi 5738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test "X$1" = X--fallback-echo; then 5758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # used as fallback echo 5768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 5778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 5788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$* 5798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 5808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 5818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi 5828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmagic="%%%MAGIC variable%%%" 5848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmagic_exe="%%%MAGIC EXE variable%%%" 5858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Global variables. 5878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $mode is unset 5888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsnonopt= 5898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexecute_dlfiles= 5908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspreserve_args= 5918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslo2o="s/\\.lo\$/.${objext}/" 5928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelso2lo="s/\\.${objext}\$/.lo/" 5938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextracted_archives= 5948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextracted_serial=0 5958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 5968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_dry_run=false 5978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_duplicate_deps=false 5988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_silent=false 5998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_debug=: 6008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If this variable is set in any of the actions, the command in it 6028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# will be execed at the end. This prevents here-documents from being 6038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# left over by shells. 6048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexec_cmd= 6058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_configuration arg... 6078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, followed by 6088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a configuration failure hint, and exit. 6098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_configuration () 6108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 6118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error ${1+"$@"} 6128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "See the $PACKAGE documentation for more information." 6138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "Fatal configuration error." 6148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 6158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_config 6188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Display the configuration for all the tags in this script. 6198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_config () 6208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 6218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels re_begincf='^# ### BEGIN LIBTOOL' 6228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels re_endcf='^# ### END LIBTOOL' 6238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Default configuration. 6258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 6268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now print the configurations for the tags. 6288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for tagname in $taglist; do 6298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 6308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 6318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 6338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 6348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_features 6368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Display the features supported by this script. 6378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_features () 6388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 6398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "host: $host" 6408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 6418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "enable shared libraries" 6428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 6438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "disable shared libraries" 6448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 6458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes; then 6468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "enable static libraries" 6478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 6488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "disable static libraries" 6498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 6508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 6528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 6538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_enable_tag tagname 6558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Verify that TAGNAME is valid, and either flag an error and exit, or 6568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# variable here. 6588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_enable_tag () 6598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 6608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Global variable: 6618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tagname="$1" 6628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sed_extractcf="/$re_begincf/,/$re_endcf/p" 6668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Validate tagname. 6688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $tagname in 6698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[!-_A-Za-z0-9,/]*) 6708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "invalid tag name: $tagname" 6718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 6728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 6738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't test for the "default" C tag, as we know it's 6758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # there but not specially marked. 6768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $tagname in 6778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CC) ;; 6788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 6798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels taglist="$taglist $tagname" 6818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Evaluate the configuration. Be careful to quote the path 6838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # and the sed script, to avoid splitting on whitespace, but 6848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # also don't use non-portable quotes within backquotes within 6858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # quotes we have to do it in 2 steps: 6868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$extractedcf" 6888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 6898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "ignoring unknown tag $tagname" 6908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 6918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 6928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 6938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 6948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Parse options once, thoroughly. This comes as soon as possible in 6968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the script to make things like `libtool --version' happen quickly. 6978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 6988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 6998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Shorthand for --mode=foo, only valid as the first argument 7008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 7018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels clean|clea|cle|cl) 7028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode clean ${1+"$@"}; shift 7038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile|compil|compi|comp|com|co|c) 7058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode compile ${1+"$@"}; shift 7068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels execute|execut|execu|exec|exe|ex|e) 7088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode execute ${1+"$@"}; shift 7098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finish|finis|fini|fin|fi|f) 7118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode finish ${1+"$@"}; shift 7128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install|instal|insta|inst|ins|in|i) 7148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode install ${1+"$@"}; shift 7158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link|lin|li|l) 7178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode link ${1+"$@"}; shift 7188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift; set dummy --mode uninstall ${1+"$@"}; shift 7218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 7238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Parse non-mode specific arguments: 7258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test "$#" -gt 0; do 7268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt="$1" 7278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 7288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $opt in 7308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --config) func_config ;; 7318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --debug) preserve_args="$preserve_args $opt" 7338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_echo "enabling shell trace mode" 7348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_debug='set -x' 7358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 7368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels execute_dlfiles="$execute_dlfiles $1" 7408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 7418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --dry-run | -n) opt_dry_run=: ;; 7448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --features) func_features ;; 7458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --finish) mode="finish" ;; 7468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 7498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Valid mode arguments: 7508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels clean) ;; 7518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile) ;; 7528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels execute) ;; 7538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finish) ;; 7548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install) ;; 7558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link) ;; 7568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink) ;; 7578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels uninstall) ;; 7588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Catch anything else as an error 7608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) func_error "invalid argument for $opt" 7618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit_cmd=exit 7628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 7638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 7658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels mode="$1" 7678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 7688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --preserve-dup-deps) 7718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_duplicate_deps=: ;; 7728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --quiet|--silent) preserve_args="$preserve_args $opt" 7748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_silent=: 7758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --verbose| -v) preserve_args="$preserve_args $opt" 7788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_silent=false 7798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels preserve_args="$preserve_args $opt $1" 7838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_enable_tag "$1" # tagname is set here 7848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 7858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Separate optargs to long options: 7888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlopen=*|--mode=*|--tag=*) 7898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_opt_split "$opt" 7908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 7928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 7938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -\?|-h) func_usage ;; 7958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --help) opt_help=: ;; 7968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels --version) func_version ;; 7978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 7988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) func_fatal_help "unrecognized option \`$opt'" ;; 7998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) nonopt="$opt" 8018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 8028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 8038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 8048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 8058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 8088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* | *pw32* | *cegcc*) 8098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # don't eliminate duplications in $postdeps and $predeps 8108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_duplicate_compiler_generated_deps=: 8118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 8128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 8138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 8158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 8168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Having warned about all mis-specified options, bail out if 8188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # anything was wrong. 8198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $exit_cmd $EXIT_FAILURE 8208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 8218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_check_version_match 8238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Ensure that we are using m4 macros, and libtool script from the same 8248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# release of libtool. 8258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_check_version_match () 8268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 8278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$package_revision" != "$macro_revision"; then 8288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$VERSION" != "$macro_version"; then 8298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$macro_version"; then 8308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat >&2 <<_LT_EOF 8318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: definition of this LT_INIT comes from an older release. 8338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: and run autoconf again. 8358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF 8368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 8378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat >&2 <<_LT_EOF 8388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: and run autoconf again. 8428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF 8438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 8448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 8458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat >&2 <<_LT_EOF 8468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: of $PACKAGE $VERSION and run autoconf again. 8508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF 8518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 8528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_MISMATCH 8548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 8558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 8568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels## ----------- ## 8598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels## Main. ## 8608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels## ----------- ## 8618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$opt_help || { 8638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Sanity checks first: 8648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_check_version_match 8658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "not configured to build any kind of library" 8688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 8698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Darwin sucks 8748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval std_shrext=\"$shrext_cmds\" 8758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only execute mode is allowed to have -dlopen flags. 8788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$execute_dlfiles" && test "$mode" != execute; then 8798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "unrecognized option \`-dlopen'" 8808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$help" 1>&2 8818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 8828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 8838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Change the help message to a mode-specific one. 8858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generic_help="$help" 8868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels help="Try \`$progname --help --mode=$mode' for more information." 8878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 8888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_lalib_p file 8918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file. 8928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 8938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters. 8948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_lalib_p () 8958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 8968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$1" && 8978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e 4q "$1" 2>/dev/null \ 8988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_lalib_unsafe_p file 9028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file. 9038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function implements the same check as func_lalib_p without 9048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# resorting to external programs. To this end, it redirects stdin and 9058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# closes it afterwards, without saving the original file descriptor. 9068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# As a safety measure, use it only where a negative result would be 9078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# fatal anyway. Works if `file' does not exist. 9088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_lalib_unsafe_p () 9098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lalib_p=no 9118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lalib_p_l in 1 2 3 4 9138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 9148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels read lalib_p_line 9158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$lalib_p_line" in 9168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 9188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 9198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec 0<&5 5<&- 9208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 9218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$lalib_p" = yes 9228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_script_p file 9258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper script 9268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 9278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters. 9288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_script_p () 9298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lalib_p "$1" 9318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_executable_p file 9348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper executable 9358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 9368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters. 9378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_executable_p () 9388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_exec_suffix= 9408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 9418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe) ;; 9428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) func_ltwrapper_exec_suffix=.exe ;; 9438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 9448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_scriptname file 9488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Assumes file is an ltwrapper_executable 9498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# uses $file to determine the appropriate filename for a 9508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# temporary ltwrapper_script. 9518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_scriptname () 9528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname_result="" 9548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_executable_p "$1"; then 9558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_and_basename "$1" "" "." 9568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$func_basename_result" 9578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 9598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_p file 9628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper script or wrapper executable 9638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 9648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters. 9658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_p () 9668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_execute_cmds commands fail_cmd 9728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Execute tilde-delimited COMMANDS. 9738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If FAIL_CMD is given, eval that upon failure. 9748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FAIL_CMD may read-access the current command in variable CMD! 9758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_execute_cmds () 9768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 9788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs=$IFS; IFS='~' 9798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for cmd in $1; do 9808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=$save_ifs 9818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmd=\"$cmd\" 9828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$cmd" "${2-:}" 9838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 9848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=$save_ifs 9858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 9868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 9888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_source file 9898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Source FILE, adding directory component if necessary. 9908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Note that it is not necessary on cygwin/mingw to append a dot to 9918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# behavior happens only for exec(3), not for open(2)! Also, sourcing 9938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# `FILE.' does not work on cygwin managed mounts. 9948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_source () 9958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 9968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 9978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $1 in 9988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */* | *\\*) . "$1" ;; 9998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) . "./$1" ;; 10008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 10018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 10028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_infer_tag arg 10058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Infer tagged configuration to use if any are available and 10068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if one wasn't chosen via the "--tag" command line option. 10078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Only attempt this if the compiler in the base compile 10088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# command doesn't match the default compiler. 10098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# arg is usually of the form 'gcc ...' 10108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_infer_tag () 10118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 10128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 10138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$available_tags" && test -z "$tagname"; then 10148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CC_quoted= 10158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg in $CC; do 10168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 10178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CC_quoted="$CC_quoted $func_quote_for_eval_result" 10188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 10198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $@ in 10208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Blanks in the command may have been stripped by the calling shell, 10218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # but not from the CC environment variable when configure was run. 10228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Blanks at the start of $base_compile will cause this to fail 10248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # if we don't check for them as well. 10258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 10268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for z in $available_tags; do 10278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Evaluate the configuration. 10298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CC_quoted= 10318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg in $CC; do 10328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Double-quote args containing other shell metacharacters. 10338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 10348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels CC_quoted="$CC_quoted $func_quote_for_eval_result" 10358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 10368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$@ " in 10378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The compiler in the base compile command matches 10398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the one in the tagged configuration. 10408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Assume this is the tagged configuration we want. 10418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tagname=$z 10428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 10438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 10448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 10458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 10468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 10478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If $tagname still isn't set, then no tagged configuration 10488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # was found and let the user know that the "--tag" command 10498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # line option must be used. 10508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$tagname"; then 10518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_echo "unable to infer tagged configuration" 10528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "specify a tag with \`--tag'" 10538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# else 10548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_verbose "using $tagname tagged configuration" 10558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 10568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 10578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 10588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 10598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 10608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_write_libtool_object output_name pic_name nonpic_name 10648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Create a libtool object file (analogous to a ".la" file), 10658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but don't create it if we're doing a dry run. 10668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_write_libtool_object () 10678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 10688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels write_libobj=${1} 10698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 10708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels write_lobj=\'${2}\' 10718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 10728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels write_lobj=none 10738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 10748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes; then 10768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels write_oldobj=\'${3}\' 10778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 10788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels write_oldobj=none 10798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 10808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 10828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat >${write_libobj}T <<EOF 10838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $write_libobj - a libtool object file 10848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 10868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Please DO NOT delete this file! 10878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# It is necessary for linking the library. 10888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Name of the PIC object. 10908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspic_object=$write_lobj 10918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Name of the non-PIC object 10938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsnon_pic_object=$write_oldobj 10948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 10968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV "${write_libobj}T" "${write_libobj}" 10978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 10988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 10998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_compile arg... 11018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_compile () 11028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 11038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 11048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Get the compilation command and the source file. 11058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base_compile= 11068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels suppress_opt=yes 11088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels suppress_output= 11098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg_mode=normal 11108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj= 11118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels later= 11128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pie_flag= 11138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg 11158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 11168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg_mode in 11178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg ) 11188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # do not "continue". Instead, add this to base_compile 11198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lastarg="$arg" 11208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg_mode=normal 11218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels target ) 11248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj="$arg" 11258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg_mode=normal 11268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels normal ) 11308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Accept any command-line options. 11318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 11328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -o) 11338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$libobj" && \ 11348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "you cannot specify \`-o' more than once" 11358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg_mode=target 11368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -pie | -fpie | -fPIE) 11408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pie_flag="$pie_flag $arg" 11418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared | -static | -prefer-pic | -prefer-non-pic) 11458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels later="$later $arg" 11468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-suppress) 11508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels suppress_opt=no 11518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Xcompiler) 11558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg_mode=arg # the next one goes into the "base_compile" arg list 11568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue # The current "srcfile" will either be retained or 11578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; # replaced later. I would guess that would be a bug. 11588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Wc,*) 11608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-Wc,' '' "$arg" 11618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels args=$func_stripname_result 11628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lastarg= 11638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS=',' 11648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg in $args; do 11658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 11668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 11678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lastarg="$lastarg $func_quote_for_eval_result" 11688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 11698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 11708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname ' ' '' "$lastarg" 11718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lastarg=$func_stripname_result 11728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the arguments to base_compile. 11748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base_compile="$base_compile $lastarg" 11758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 11768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 11798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Accept the current argument as the source file. 11808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The previous "srcfile" becomes the current argument. 11818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # 11828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lastarg="$srcfile" 11838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels srcfile="$arg" 11848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # case $arg 11868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # case $arg_mode 11888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Aesthetically quote the previous argument. 11908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$lastarg" 11918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base_compile="$base_compile $func_quote_for_eval_result" 11928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # for arg 11938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 11948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg_mode in 11958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg) 11968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "you must specify an argument for -Xcompile" 11978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 11988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels target) 11998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "you must specify a target with \`-o'" 12008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 12028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Get the name of the library object. 12038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libobj" && { 12048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$srcfile" 12058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj="$func_basename_result" 12068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 12078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 12098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Recognize several different file suffixes. 12118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the user specifies -o file.o, it is replaced with file.lo 12128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $libobj in 12138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.[cCFSifmso] | \ 12148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.ada | *.adb | *.ads | *.asm | \ 12158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_xform "$libobj" 12188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj=$func_xform_result 12198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 12218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $libobj in 12238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 12248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 12258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot determine name of library object from \`$libobj'" 12268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 12288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_infer_tag $base_compile 12308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg in $later; do 12328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 12338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared) 12348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_libtool_libs" != yes && \ 12358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "can not build a shared library" 12368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=no 12378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 12388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static) 12418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 12428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 12438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 12448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -prefer-pic) 12478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_mode=yes 12488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 12498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -prefer-non-pic) 12528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_mode=no 12538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 12548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 12568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 12578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$libobj" 12598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobj" != "X$func_quote_for_eval_result" \ 12608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && func_warning "libobj name \`$libobj' may not contain shell special characters." 12628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_and_basename "$obj" "/" "" 12638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objname="$func_basename_result" 12648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xdir="$func_dirname_result" 12658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lobj=${xdir}$objdir/$objname 12668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$base_compile" && \ 12688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify a compilation command" 12698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete any leftover library objects. 12718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes; then 12728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist="$obj $lobj $libobj ${libobj}T" 12738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 12748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist="$lobj $libobj ${libobj}T" 12758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 12768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # On Cygwin there's no "real" PIC flag so we must build both object types 12788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host_os in 12798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cygwin* | mingw* | pw32* | os2* | cegcc*) 12808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_mode=default 12818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 12828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 12838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 12848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # non-PIC code in shared libraries is not supported 12858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_mode=default 12868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 12878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Calculate the filename of the output object if compiler does 12898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # not support -o with -c 12908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$compiler_c_o" = no; then 12918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 12928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lockfile="$output_obj.lock" 12938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 12948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_obj= 12958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels need_locks=no 12968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lockfile= 12978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 12988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 12998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Lock this critical section if it is needed 13008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We use this script file to make the link, it avoids creating a new file 13018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_locks" = yes; then 13028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_echo "Waiting for $lockfile to be removed" 13048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sleep 2 13058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 13068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$need_locks" = warn; then 13078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$lockfile"; then 13088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 13098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile exists and contains: 13108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null` 13118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same 13138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because 13148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 13158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 13168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 13178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler." 13188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $removelist 13208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 13218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist="$removelist $output_obj" 13238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$srcfile" > "$lockfile" 13248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $removelist 13278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist="$removelist $lockfile" 13288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$fix_srcfile_path"; then 13318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval srcfile=\"$fix_srcfile_path\" 13328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$srcfile" 13348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels qsrcfile=$func_quote_for_eval_result 13358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only build a PIC object if we are building libtool libraries. 13378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 13388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Without this assignment, base_compile gets emptied. 13398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fbsd_hideous_sh_bug=$base_compile 13408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pic_mode" != no; then 13428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$base_compile $qsrcfile $pic_flag" 13438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 13448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't build PIC code 13458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$base_compile $qsrcfile" 13468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mkdir_p "$xdir$objdir" 13498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$output_obj"; then 13518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Place PIC objects in $objdir 13528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$command -o $lobj" 13538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval_locale "$command" \ 13568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 13578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_locks" = warn && 13598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 13618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile contains: 13628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null` 13638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbut it should contain: 13658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$srcfile 13668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same 13688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because 13698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 13708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 13718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 13728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler." 13738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $removelist 13758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 13768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just move the object if needed, then go on to compile the next one 13798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$MV "$output_obj" "$lobj"' \ 13818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 13828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Allow error messages only from the first compilation. 13858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$suppress_opt" = yes; then 13868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels suppress_output=' >/dev/null 2>&1' 13878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 13908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only build a position-dependent object if we build old libraries. 13918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes; then 13928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pic_mode" != yes; then 13938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't build PIC code 13948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$base_compile $qsrcfile$pie_flag" 13958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 13968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$base_compile $qsrcfile $pic_flag" 13978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 13988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$compiler_c_o" = yes; then 13998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$command -o $obj" 14008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 14018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Suppress compiler output if we already did a PIC compilation. 14038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels command="$command$suppress_output" 14048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval_locale "$command" \ 14058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 14068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_locks" = warn && 14088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 14108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile contains: 14118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null` 14128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbut it should contain: 14148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$srcfile 14158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same 14178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because 14188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 14198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 14208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 14218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler." 14228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $removelist 14248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 14258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 14268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just move the object if needed 14288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$MV "$output_obj" "$obj"' \ 14308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 14318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 14328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 14338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 14358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 14368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Unlock the critical section if it was locked 14388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_locks" != no; then 14398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist=$lockfile 14408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM "$lockfile" 14418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 14428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 14438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 14458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 14468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$opt_help || { 14488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = compile && func_mode_compile ${1+"$@"} 14498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 14508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_help () 14528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 14538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need to display help for each of the modes. 14548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $mode in 14558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels "") 14568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Generic help is extracted from the usage comments 14578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # at the start of this file. 14588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_help 14598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 14608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels clean) 14628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 14638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 14648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRemove files from the build directory. 14668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE 14688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsto RM. 14708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf FILE is a libtool library, object or program, all the files associated 14728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelswith it are deleted. Otherwise, only FILE itself is deleted using RM." 14738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 14748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile) 14768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 14778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 14788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsCompile a source file into a libtool library object. 14808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode accepts the following additional options: 14828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-suppress do not suppress compiler output for multiple passes 14858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -prefer-pic try to building PIC objects only 14868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -prefer-non-pic try to building non-PIC objects only 14878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared do not build a \`.o' file suitable for static linking 14888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static only build a \`.o' file suitable for static linking 14898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 14918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfrom the given SOURCEFILE. 14928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe output file name is determined by removing the directory component from 14948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsSOURCEFILE, then substituting the C source code suffix \`.c' with the 14958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibrary object suffix, \`.lo'." 14968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 14978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 14988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels execute) 14998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 15008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 15018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsAutomatically set library path, then run a program. 15038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode accepts the following additional options: 15058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlopen FILE add the directory containing FILE to the library path 15078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode sets the library path environment variable according to \`-dlopen' 15098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsflags. 15108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf any of the ARGS are libtool executable wrappers, then they are translated 15128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinto their corresponding uninstalled binary, and any of their required library 15138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdirectories are added to the library path. 15148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThen, COMMAND is executed, with ARGS as arguments." 15168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 15178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finish) 15198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 15208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 15218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsComplete the installation of libtool libraries. 15238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEach LIBDIR is a directory that contains libtool libraries. 15258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe commands that this mode executes may require superuser privileges. Use 15278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthe \`--dry-run' option if you just want to see what would be executed." 15288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 15298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install) 15318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 15328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 15338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsInstall executables or libraries. 15358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsINSTALL-COMMAND is the installation command. The first component should be 15378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelseither the \`install' or \`cp' program. 15388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe following components of INSTALL-COMMAND are treated specially: 15408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 15428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe rest of the components are interpreted as arguments to that command (only 15448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBSD-compatible install options are recognized)." 15458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 15468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link) 15488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 15498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 15508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsLink object files or libraries together to form another library, or to 15528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscreate an executable program. 15538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsLINK-COMMAND is a command using the C compiler that you would use to create 15558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsa program from several object files. 15568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe following components of LINK-COMMAND are treated specially: 15588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -all-static do not do any dynamic linking at all 15608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -avoid-version do not add a version suffix if possible 15618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -export-symbols SYMFILE 15658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels try to export only the symbols listed in SYMFILE 15668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -export-symbols-regex REGEX 15678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels try to export only the symbols matching REGEX 15688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -LLIBDIR search LIBDIR for required installed libraries 15698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -lNAME OUTPUT-FILE requires the installed library libNAME 15708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -module build a library that can dlopened 15718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-fast-install disable the fast-install mode 15728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-install link a not-installable executable 15738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-undefined declare that a library does not refer to external symbols 15748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -objectlist FILE Use a list of object files found in FILE to specify objects 15768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -precious-files-regex REGEX 15778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels don't remove output files matching REGEX 15788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -release RELEASE specify package release information 15798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -rpath LIBDIR the created library will eventually be installed in LIBDIR 15808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared only do dynamic linking of libtool libraries 15828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shrext SUFFIX override the standard shared library file extension 15838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static do not do any dynamic linking of uninstalled libtool libraries 15848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static-libtool-libs 15858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do not do any dynamic linking of libtool libraries 15868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -version-info CURRENT[:REVISION[:AGE]] 15878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels specify library version info [each variable defaults to 0] 15888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -weak LIBNAME declare that the target provides the LIBNAME interface 15898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsAll other options (arguments beginning with \`-') are ignored. 15918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEvery other argument is treated as a filename. Files ending in \`.la' are 15938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstreated as uninstalled libtool libraries, other files are standard or library 15948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsobject files. 15958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 15968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsonly library objects (\`.lo' files) may be specified, and \`-rpath' is 15988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrequired, except when creating a convenience library. 15998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsusing \`ar' and \`ranlib', or on Windows using \`lib'. 16028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsis created, otherwise an executable program is created." 16058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels uninstall) 16088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \ 16098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 16108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRemove libraries from an installation directory. 16128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE 16148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsto RM. 16168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf FILE is a libtool library, all the files associated with it are deleted. 16188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsOtherwise, only FILE itself is deleted using RM." 16198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 16228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "invalid operation mode \`$mode'" 16238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 16258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 16278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "Try \`$progname --help' for more information about other modes." 16288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $? 16308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 16318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now that we've collected a possible --mode arg, show help if necessary 16338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_help && func_mode_help 16348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_execute arg... 16378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_execute () 16388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 16398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 16408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The first argument is the command name. 16418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmd="$nonopt" 16428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$cmd" && \ 16438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify a COMMAND" 16448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Handle -dlopen flags immediately. 16468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $execute_dlfiles; do 16478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$file" \ 16488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels || func_fatal_help "\`$file' is not a file" 16498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir= 16518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 16528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 16538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that this really is a libtool archive. 16548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lalib_unsafe_p "$file" \ 16558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels || func_fatal_help "\`$lib' is not a valid libtool archive" 16568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Read the libtool library. 16588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlname= 16598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels library_names= 16608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$file" 16618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Skip this library if it cannot be dlopened. 16638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dlname"; then 16648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Warn if it was a shared library. 16658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$library_names" && \ 16668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`$file' was not linked with \`-export-dynamic'" 16678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 16688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 16698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$file" "" "." 16718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$func_dirname_result" 16728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$dir/$objdir/$dlname"; then 16748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$dir/$objdir" 16758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 16768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -f "$dir/$dlname"; then 16778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 16798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 16808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 16838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just add the directory containing the .lo file. 16848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$file" "" "." 16858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$func_dirname_result" 16868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 16898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 16908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 16918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 16928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 16938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Get the absolute pathname. 16958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir=`cd "$dir" && pwd` 16968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$absdir" && dir="$absdir" 16978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 16988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now add the directory to shlibpath_var. 16998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval "test -z \"\$$shlibpath_var\""; then 17008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$shlibpath_var=\"\$dir\"" 17018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 17028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 17058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This variable tells wrapper scripts just to set shlibpath_var 17078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # rather than running their programs. 17088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libtool_execute_magic="$magic" 17098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check if any of the arguments is a wrapper script. 17118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels args= 17128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file 17138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 17148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 17158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) ;; 17168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 17178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do a test to see if this is really a libtool program. 17188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_script_p "$file"; then 17198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$file" 17208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform arg to wrapped name. 17218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file="$progdir/$program" 17228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif func_ltwrapper_executable_p "$file"; then 17238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname "$file" 17248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$func_ltwrapper_scriptname_result" 17258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform arg to wrapped name. 17268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file="$progdir/$program" 17278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 17298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 17308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Quote arguments (to preserve shell metacharacters). 17318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$file" 17328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels args="$args $func_quote_for_eval_result" 17338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 17348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$opt_dry_run" = Xfalse; then 17368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath_var"; then 17378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Export the shlibpath_var. 17388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "export $shlibpath_var" 17398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restore saved environment variables 17428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 17448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "if test \"\${save_$lt_var+set}\" = set; then 17458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $lt_var=\$save_$lt_var; export $lt_var 17468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 17478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $lt_unset $lt_var 17488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi" 17498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 17508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now prepare to actually exec the command. 17528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec_cmd="\$cmd$args" 17538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 17548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Display what would be done. 17558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath_var"; then 17568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "export $shlibpath_var" 17588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$cmd$args" 17608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 17618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 17638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = execute && func_mode_execute ${1+"$@"} 17658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_finish arg... 17688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_finish () 17698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 17708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 17718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdirs="$nonopt" 17728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels admincmds= 17738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir 17768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 17778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdirs="$libdirs $dir" 17788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 17798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $libdirs; do 17818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$finish_cmds"; then 17828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the finish commands. 17838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels'"$cmd"'"' 17858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$finish_eval"; then 17878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do the single finish_eval. 17888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmds=\"$finish_eval\" 17898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $cmds" 17918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 17938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 17948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Exit here if they wanted silent mode. 17968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_silent && exit $EXIT_SUCCESS 17978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 17988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "X----------------------------------------------------------------------" | $Xsed 17998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "Libraries have been installed in:" 18008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $libdirs; do 18018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " $libdir" 18028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 18038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 18048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "If you ever happen to want to link against installed libraries" 18058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "flag during linking and do at least one of the following:" 18088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath_var"; then 18098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " during execution" 18118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$runpath_var"; then 18138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " during linking" 18158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 18178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir=LIBDIR 18188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 18198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " - use the \`$flag' linker flag" 18218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$admincmds"; then 18238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " - have your system administrator run these commands:$admincmds" 18248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f /etc/ld.so.conf; then 18268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 18298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "See any operating system documentation about shared libraries for" 18318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 18328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels solaris2.[6789]|solaris2.1[0-9]) 18338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "pages." 18358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 18368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 18378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 18398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 18408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "X----------------------------------------------------------------------" | $Xsed 18418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 18428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 18438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = finish && func_mode_finish ${1+"$@"} 18458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_install arg... 18488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_install () 18498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 18508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 18518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # There may be an optional sh(1) argument at the beginning of 18528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # install_prog (especially on Windows NT). 18538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Allow the use of GNU shtool's install command. 18558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Aesthetically quote it. 18578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$nonopt" 18588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_prog="$func_quote_for_eval_result " 18598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$1 18608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 18618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 18628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_prog= 18638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$nonopt 18648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The real first argument should be the name of the installation program. 18678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Aesthetically quote it. 18688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 18698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_prog="$install_prog$func_quote_for_eval_result" 18708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need to accept at least all the BSD install flags. 18728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dest= 18738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels files= 18748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels opts= 18758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 18768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_type= 18778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels isdir=no 18788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels stripme= 18798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg 18808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 18818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dest"; then 18828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels files="$files $dest" 18838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dest=$arg 18848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 18858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 18868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 18878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 18888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -d) isdir=yes ;; 18898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -f) 18908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $install_prog " in 18918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\\\ /]cp\ *) ;; 18928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) prev=$arg ;; 18938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 18948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 18958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -g | -m | -o) 18968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=$arg 18978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 18988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -s) 18998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels stripme=" -s" 19008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 19018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) 19038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 19058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the previous option needed an argument, then skip it. 19068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$prev"; then 19078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 19088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 19098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dest=$arg 19108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 19118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 19128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 19148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Aesthetically quote the argument. 19168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 19178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_prog="$install_prog $func_quote_for_eval_result" 19188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 19198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$install_prog" && \ 19218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify an install program" 19228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$prev" && \ 19248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "the \`$prev' option requires an argument" 19258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$files"; then 19278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dest"; then 19288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "no file or destination specified" 19298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 19308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify a destination" 19318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 19328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 19338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Strip any trailing slash from the destination. 19358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '/' "$dest" 19368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dest=$func_stripname_result 19378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that the destination is a directory. 19398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -d "$dest" && isdir=yes 19408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$isdir" = yes; then 19418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destdir="$dest" 19428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destname= 19438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 19448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_and_basename "$dest" "" "." 19458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destdir="$func_dirname_result" 19468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destname="$func_basename_result" 19478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Not a directory, so check to see that there is only one file specified. 19498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $files; shift 19508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$#" -gt 1 && \ 19518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "\`$dest' is not a directory" 19528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 19538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $destdir in 19548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 19558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 19568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $files; do 19578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 19588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) ;; 19598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 19608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "\`$destdir' must be an absolute directory name" 19618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 19638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 19648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 19668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This variable tells wrapper scripts just to set variables rather 19688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # than running their programs. 19698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libtool_install_magic="$magic" 19708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels staticlibs= 19728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels future_libdirs= 19738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels current_libdirs= 19748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $files; do 19758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each installation. 19778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 19788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$libext) 19798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do the static libraries later. 19808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels staticlibs="$staticlibs $file" 19818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 19828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 19848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that this really is a libtool archive. 19858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lalib_unsafe_p "$file" \ 19868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels || func_fatal_help "\`$file' is not a valid libtool archive" 19878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels library_names= 19898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_library= 19908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 19918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$file" 19928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 19938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the libdir to current_libdirs if it is the destination. 19948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$destdir" = "X$libdir"; then 19958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$current_libdirs " in 19968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 19978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) current_libdirs="$current_libdirs $libdir" ;; 19988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 19998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 20008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Note the libdir as a future libdir. 20018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$future_libdirs " in 20028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 20038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) future_libdirs="$future_libdirs $libdir" ;; 20048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 20058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$file" "/" "" 20088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$func_dirname_result" 20098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$dir$objdir" 20108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$relink_command"; then 20128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Determine the prefix the user has applied to our future dir. 20138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't allow the user to place us outside of our expected 20168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # location b/c this prevents finding dependent libraries that 20178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # are installed to the same prefix. 20188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # At present, this check doesn't affect windows .dll's that 20198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # are installed into $libdir/../bin (currently, that works fine) 20208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # but it's something to keep an eye on. 20218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$inst_prefix_dir" = "$destdir" && \ 20228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$inst_prefix_dir"; then 20258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Stick the inst_prefix_dir data into the link command. 20268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 20288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "relinking \`$file'" 20328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$relink_command" \ 20338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # See the names of the shared library. 20378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $library_names; shift 20388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1"; then 20398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels realname="$1" 20408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 20418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels srcname="$realname" 20438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$relink_command" && srcname="$realname"T 20448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install the shared library and build the symlinks. 20468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 'exit $?' 20488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tstripme="$stripme" 20498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host_os in 20508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cygwin* | mingw* | pw32* | cegcc*) 20518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $realname in 20528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.dll.a) 20538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tstripme="" 20548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 20558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 20568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 20578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 20588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$tstripme" && test -n "$striplib"; then 20598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$striplib $destdir/$realname" 'exit $?' 20608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$#" -gt 0; then 20638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the old symlinks, and create new ones. 20648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try `ln -sf' first, because the `ln' binary might depend on 20658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the symlink we replace! Solaris /bin/ln does not understand -f, 20668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # so we also need to try rm && ln -s. 20678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for linkname 20688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 20698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$linkname" != "$realname" \ 20708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 20718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 20728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the postinstall commands. 20758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib="$destdir/$realname" 20768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$postinstall_cmds" 'exit $?' 20778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 20788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install the pseudo-library for information purposes. 20808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file" 20818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 20828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels instname="$dir/$name"i 20838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 20848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Maybe install the static library, too. 20868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 20888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 20908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install (i.e. copy) a libtool object. 20918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 20928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Figure out destination file name, if it wasn't already specified. 20938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$destname"; then 20948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$destdir/$destname" 20958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 20968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file" 20978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$func_basename_result" 20988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$destdir/$destfile" 20998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Deduce the name of the destination old-style object file. 21028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $destfile in 21038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 21048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lo2o "$destfile" 21058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels staticdest=$func_lo2o_result 21068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$objext) 21088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels staticdest="$destfile" 21098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile= 21108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 21128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "cannot copy a libtool object to \`$destfile'" 21138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 21158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install the libtool object if requested. 21178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$destfile" && \ 21188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog $file $destfile" 'exit $?' 21198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install the old object if enabled. 21218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes; then 21228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Deduce the name of the old-style object file. 21238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lo2o "$file" 21248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels staticobj=$func_lo2o_result 21258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 21268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 21288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 21318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Figure out destination file name, if it wasn't already specified. 21328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$destname"; then 21338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$destdir/$destname" 21348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 21358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file" 21368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$func_basename_result" 21378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile="$destdir/$destfile" 21388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the file is missing, and there is a .exe on the end, strip it 21418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # because it is most likely a libtool script we actually want to 21428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # install 21438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels stripped_ext="" 21448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 21458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe) 21468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -f "$file"; then 21478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$file" 21488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=$func_stripname_result 21498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels stripped_ext=".exe" 21508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 21538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do a test to see if this is really a libtool program. 21558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 21568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw*) 21578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_executable_p "$file"; then 21588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname "$file" 21598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrapper=$func_ltwrapper_scriptname_result 21608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 21618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$file" 21628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrapper=$func_stripname_result 21638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 21668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrapper=$file 21678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 21688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 21698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_script_p "$wrapper"; then 21708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_deplibs= 21718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 21728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$wrapper" 21748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check the variables that should have been set. 21768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$generated_by_libtool_version" && \ 21778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize=yes 21808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $notinst_deplibs; do 21818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that each library is installed. 21828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir= 21838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$lib"; then 21848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$lib" 21858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$libdir" && test ! -f "$libfile"; then 21888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`$lib' has not been installed in \`$libdir'" 21898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize=no 21908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 21918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 21928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 21948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$wrapper" 21958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 21968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels outputname= 21978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" = no && test -n "$relink_command"; then 21988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 21998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$finalize" = yes; then 22008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmpdir=`func_mktempdir` 22018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file$stripped_ext" 22028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file="$func_basename_result" 22038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels outputname="$tmpdir/$file" 22048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Replace the output file specification. 22058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_silent || { 22088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand "$relink_command" 22098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 22108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 22118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval "$relink_command"; then : 22128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 22138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "error: relink \`$file' with the above command before installing it" 22148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || ${RM}r "$tmpdir" 22158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 22168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file="$outputname" 22188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 22198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "cannot relink \`$file'" 22208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 22228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 22238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Install the binary that we compiled earlier. 22248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 22258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # remove .exe since cygwin /usr/bin/install will append another 22298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # one anyway 22308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $install_prog,$host in 22318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */usr/bin/install*,*cygwin*) 22328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file:$destfile in 22338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe:*.exe) 22348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # this is ok 22358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 22368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe:*) 22378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile=$destfile.exe 22388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 22398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *:*.exe) 22408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$destfile" 22418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destfile=$func_stripname_result 22428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 22438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 22448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 22458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 22468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || if test -n "$outputname"; then 22488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ${RM}r "$tmpdir" 22498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 22518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 22528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 22538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $staticlibs; do 22558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file" 22568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 22578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Set up the ranlib parameters. 22598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlib="$destdir/$name" 22608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$stripme" && test -n "$old_striplib"; then 22648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$old_striplib $oldlib" 'exit $?' 22658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the postinstall commands. 22688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 22708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$future_libdirs" && \ 22728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "remember to run \`$progname --finish$future_libdirs'" 22738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$current_libdirs"; then 22758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Maybe just do a dry run. 22768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run && current_libdirs=" -n$current_libdirs" 22778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 22798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 22808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 22818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 22828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = install && func_mode_install ${1+"$@"} 22848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_generate_dlsyms outputname originator pic_p 22878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Extract symbols from dlprefiles and create ${outputname}S.o with 22888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a dlpreopen symbol table. 22898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_generate_dlsyms () 22908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 22918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 22928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_outputname="$1" 22938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_originator="$2" 22948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_pic_p="${3-no}" 22958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_dlsyms= 22978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 22988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$NM" && test -n "$global_symbol_pipe"; then 23008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_dlsyms="${my_outputname}S.c" 23018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 23028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "not configured to extract global symbols from dlpreopened files" 23038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$my_dlsyms"; then 23078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $my_dlsyms in 23088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels "") ;; 23098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.c) 23108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Discover the nlist of each of the dlfiles. 23118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels nlist="$output_objdir/${my_outputname}.nm" 23128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Parse the name list into a source file. 23168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating $output_objdir/$my_dlsyms" 23178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus 23238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern \"C\" { 23248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 23258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* External symbol declarations for the compiler. */\ 23278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 23288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$dlself" = yes; then 23308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "generating symbol list for \`$output'" 23318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add our own program objects to the symbol list. 23358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for progfile in $progfiles; do 23378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "extracting global C symbols from \`$progfile'" 23388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 23408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$exclude_expsyms"; then 23428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 23458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 23468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols_regex"; then 23498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 23528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 23538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepare the list of exported symbols 23568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$export_symbols"; then 23578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols="$output_objdir/$outputname.exp" 23588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM $export_symbols 23608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 23628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 23638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 23668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 23678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 23688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 23698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 23738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 23748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin | *mingw* | *cegcc* ) 23758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 23788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 23798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 23808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 23828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dlprefile in $dlprefiles; do 23848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "extracting global C symbols from \`$dlprefile'" 23858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$dlprefile" 23868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 23878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval '$ECHO ": $name " >> "$nlist"' 23898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 23918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 23928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 23948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure we have at least an empty file. 23958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$nlist" || : > "$nlist" 23968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 23978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$exclude_expsyms"; then 23988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV "$nlist"T "$nlist" 24008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 24018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try sorting and uniquifying the output. 24038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $GREP -v "^: " < "$nlist" | 24048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if sort -k 3 </dev/null >/dev/null 2>&1; then 24058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sort -k 3 24068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 24078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sort +2 24088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi | 24098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels uniq > "$nlist"S; then 24108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 24118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 24128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP -v "^: " < "$nlist" > "$nlist"S 24138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 24148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$nlist"S; then 24168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 24178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 24188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 24198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 24208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 24228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* The mapping between symbol names and symbols. */ 24248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstypedef struct { 24258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *name; 24268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels void *address; 24278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} lt_dlsymlist; 24288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 24298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 24308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 24318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 24328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* DATA imports from DLLs on WIN32 con't be const, because 24338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels runtime relocations are performed -- see ld's documentation 24348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels on pseudo-relocs. */" 24358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_dlsym_const= ;; 24368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *osf5*) 24378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels echo >> "$output_objdir/$my_dlsyms" "\ 24388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* This system does not cope well with relocations in const data */" 24398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_dlsym_const= ;; 24408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 24418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_dlsym_const=const ;; 24428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 24438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 24458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern $lt_dlsym_const lt_dlsymlist 24468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[]; 24478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$lt_dlsym_const lt_dlsymlist 24488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[] = 24498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{\ 24508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { \"$my_originator\", (void *) 0 }," 24518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $need_lib_prefix in 24538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels no) 24548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 24568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 24578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 24598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 24608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 24618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels {0, (void *) 0} 24628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}; 24638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* This works around a problem in FreeBSD linker */ 24658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef FREEBSD_WORKAROUND 24668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const void *lt_preloaded_setup() { 24678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return lt_${my_prefix}_LTX_preloaded_symbols; 24688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 24698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 24708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus 24728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 24738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif\ 24748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 24758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } # !$opt_dry_run 24768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 24778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_flag_for_symtable= 24788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$compile_command " in 24798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -static "*) ;; 24808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 24818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 24828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # compiling the symbol table file with pic_flag works around 24838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # a FreeBSD bug that causes programs to crash when -lm is 24848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # linked before any other PIC object. But we must not use 24858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # pic_flag when linking with -static. The problem exists in 24868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-hpux*) 24908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_flag_for_symtable=" $pic_flag" ;; 24918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 24928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$my_pic_p" != Xno; then 24938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_flag_for_symtable=" $pic_flag" 24948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 24958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 24968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 24978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 24988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 24998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels symtab_cflags= 25008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg in $LTCFLAGS; do 25018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 25028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -pie | -fpie | -fPIE) ;; 25038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) symtab_cflags="$symtab_cflags $arg" ;; 25048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 25068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now compile the dynamic symbol file. 25088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 25098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Clean up the generated files. 25118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 25128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform the symbol file into the correct name. 25148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels symfileobj="$output_objdir/${my_outputname}S.$objext" 25158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 25168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 25178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$output_objdir/$my_outputname.def"; then 25188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 25218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 25248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 25268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 25328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "unknown suffix for \`$my_dlsyms'" 25338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 25368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We keep going just in case the user didn't refer to 25378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # really was required. 25398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Nullify the symbol file. 25418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 25448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 25458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_win32_libid arg 25478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# return the library type of file 'arg' 25488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 25498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Need a lot of goo to handle *both* DLLs and import libs 25508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Has to be a shell function in order to 'eat' the argument 25518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# that is supplied when $file_magic_command is called. 25528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_win32_libid () 25538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 25548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 25558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_libid_type="unknown" 25568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_fileres=`file -L $1 2>/dev/null` 25578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $win32_fileres in 25588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *ar\ archive\ import\ library*) # definitely import 25598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_libid_type="x86 archive import" 25608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *ar\ archive*) # could be an import, or static 25628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_nmres=`eval $NM -f posix -A $1 | 25658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -n -e ' 25668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1,100{ 25678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels / I /{ 25688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels s,.*,import, 25698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p 25708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels q 25718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 25728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels }'` 25738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $win32_nmres in 25748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels import*) win32_libid_type="x86 archive import";; 25758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) win32_libid_type="x86 archive static";; 25768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 25788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *DLL*) 25808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_libid_type="x86 DLL" 25818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *executable*) # but shell scripts are "executable" too... 25838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $win32_fileres in 25848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *MS\ Windows\ PE\ Intel*) 25858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels win32_libid_type="x86 DLL" 25868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 25898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 25908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$win32_libid_type" 25918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 25928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 25958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_extract_an_archive dir oldlib 25968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_extract_an_archive () 25978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 25988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 25998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels f_ex_an_ar_dir="$1"; shift 26008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels f_ex_an_ar_oldlib="$1" 26018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 26048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 26058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 26078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 26088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_extract_archives gentop oldlib ... 26118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_extract_archives () 26128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 26138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 26148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_gentop="$1"; shift 26158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_oldlibs=${1+"$@"} 26168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_oldobjs="" 26178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xlib="" 26188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xabs="" 26198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xdir="" 26208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for my_xlib in $my_oldlibs; do 26228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract the objects. 26238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $my_xlib in 26248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) my_xabs=`pwd`"/$my_xlib" ;; 26268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 26278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$my_xlib" 26288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xlib="$func_basename_result" 26298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xlib_u=$my_xlib 26308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while :; do 26318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $extracted_archives " in 26328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $my_xlib_u "*) 26338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $extracted_serial + 1 26348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels extracted_serial=$func_arith_result 26358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xlib_u=lt$extracted_serial-$my_xlib ;; 26368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) break ;; 26378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 26388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 26398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels extracted_archives="$extracted_archives $my_xlib_u" 26408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_xdir="$my_gentop/$my_xlib_u" 26418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mkdir_p "$my_xdir" 26438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 26458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-darwin*) 26468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "Extracting $my_xabs" 26478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do not bother doing anything if just a dry run 26488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 26498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_orig_dir=`pwd` 26508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cd $my_xdir || exit $? 26518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_archive=$my_xabs 26528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_curdir=`pwd` 26538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_base_archive=`basename "$darwin_archive"` 26548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$darwin_arches"; then 26568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_arch= 26588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for darwin_arch in $darwin_arches ; do 26608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cd "$darwin_curdir" 26658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # $darwin_arches 26678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_file= 26708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_files= 26718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for darwin_file in $darwin_filelist; do 26728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $LIPO -create -output "$darwin_file" $darwin_files 26748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # $darwin_filelist 26758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM -rf unfat-$$ 26768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cd "$darwin_orig_dir" 26778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 26788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cd $darwin_orig_dir 26798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_an_archive "$my_xdir" "$my_xabs" 26808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $darwin_arches 26818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } # !$opt_dry_run 26828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 26838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 26848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_an_archive "$my_xdir" "$my_xabs" 26858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 26868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 26878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 26898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives_result="$my_oldobjs" 26918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 26928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 26958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper_part1 [arg=no] 26968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 26978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit the first part of a libtool wrapper script on stdout. 26988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# For more information, see the description associated with 26998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper(), below. 27008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper_part1 () 27018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 27028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part1_arg1=no 27038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1" ; then 27048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part1_arg1=$1 27058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 27068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 27088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#! $SHELL 27098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $output - temporary wrapper script for $objdir/$outputname 27118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 27138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The $output program cannot be directly executed until all the libtool 27148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# libraries that it depends on are installed. 27158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 27168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This wrapper script should never be moved out of the build directory. 27178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If it is, it will not operate correctly. 27188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Sed substitution that helps us do robust quoting. It backslashifies 27208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# metacharacters that are still active within double-quoted strings. 27218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsXsed='${SED} -e 1s/^X//' 27228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_quote_subst='$sed_quote_subst' 27238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Be Bourne compatible 27258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels emulate sh 27278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels NULLCMD=: 27288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # is contrary to our usage. Disable this feature. 27308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels alias -g '\${1+\"\$@\"}'='\"\$@\"' 27318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels setopt NO_GLOB_SUBST 27328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse 27338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi 27358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64 27368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh 27378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The HP-UX ksh and POSIX shell print the target directory to stdout 27398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if CDPATH is set. 27408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 27418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrelink_command=\"$relink_command\" 27438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This environment variable determines our operation mode. 27458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test \"\$libtool_install_magic\" = \"$magic\"; then 27468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # install mode needs the following variables: 27478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated_by_libtool_version='$macro_version' 27488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_deplibs='$notinst_deplibs' 27498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse 27508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # When we are sourced in execute mode, \$file and \$ECHO are already set. 27518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"\$libtool_execute_magic\" != \"$magic\"; then 27528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ECHO=\"$qecho\" 27538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=\"\$0\" 27548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure echo works. 27558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"X\$1\" = X--no-reexec; then 27568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Discard the --no-reexec flag, and continue. 27578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 27588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Yippee, \$ECHO works! 27608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 27618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 27628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restart under the correct shell, and then maybe \$ECHO will work. 27638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 27658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi\ 27668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 27678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 27688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Find the directory that this script lives in. 27708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test \"x\$thisdir\" = \"x\$file\" && thisdir=. 27728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Follow symbolic links until we get to the real thisdir. 27748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test -n \"\$file\"; do 27768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 27778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If there was a directory component, then change thisdir. 27798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"x\$destdir\" != \"x\$file\"; then 27808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case \"\$destdir\" in 27818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) thisdir=\"\$thisdir/\$destdir\" ;; 27838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 27848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 27858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 27898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 27908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 27918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_wrapper_part1 27928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 27938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper_part2 [arg=no] 27948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 27958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit the second part of a libtool wrapper script on stdout. 27968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# For more information, see the description associated with 27978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper(), below. 27988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper_part2 () 27998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 28008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part2_arg1=no 28018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1" ; then 28028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part2_arg1=$1 28038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Usually 'no', except on cygwin/mingw when embedded into 28088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the cwrapper. 28098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # special case for '.' 28128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"\$thisdir\" = \".\"; then 28138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels thisdir=\`pwd\` 28148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # remove .libs from thisdir 28168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case \"\$thisdir\" in 28178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $objdir ) thisdir=. ;; 28198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 28208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try to get the absolute directory name. 28238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir=\`cd \"\$thisdir\" && pwd\` 28248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n \"\$absdir\" && thisdir=\"\$absdir\" 28258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 28268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" = yes; then 28288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels program=lt-'$outputname'$exeext 28308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progdir=\"\$thisdir/$objdir\" 28318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -f \"\$progdir/\$program\" || 28338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=\"\$\$-\$program\" 28378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -d \"\$progdir\"; then 28398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MKDIR \"\$progdir\" 28408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 28418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM \"\$progdir/\$file\" 28428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi" 28438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # relink executable if necessary 28478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n \"\$relink_command\"; then 28488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 28508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \"\$relink_command_output\" >&2 28518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM \"\$progdir/\$file\" 28528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit 1 28538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { $RM \"\$progdir/\$program\"; 28588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM \"\$progdir/\$file\" 28608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi" 28618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 28628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels program='$outputname' 28648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels progdir=\"\$thisdir/$objdir\" 28658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 28668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f \"\$progdir/\$program\"; then" 28718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Export our shlibpath_var if we have one. 28738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add our own library path to $shlibpath_var 28768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Some systems cannot cope with colon-terminated $shlibpath_var 28798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The second colon is a workaround for a bug in BeOS R4 sed 28808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export $shlibpath_var 28838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 28848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # fixup the dll searchpath if we need to. 28878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dllsearchpath"; then 28888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the dll search path components to the executable PATH 28908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels PATH=$dllsearchpath:\$PATH 28918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 28928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 28938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 28948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 28958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test \"\$libtool_execute_magic\" != \"$magic\"; then 28968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Run the actual program with our arguments. 28978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 28988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 28998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Backslashes separate directories on plain windows 29008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-mingw | *-*-os2* | *-cegcc*) 29018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 29028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 29048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 29058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 29078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 29088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec \"\$progdir/\$program\" \${1+\"\$@\"} 29098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 29108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 29118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 29128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "\ 29138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit 1 29158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 29168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 29178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The program doesn't exist. 29188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit 1 29228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 29238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi\ 29248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels" 29258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 29268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_wrapper_part2 29278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper [arg=no] 29308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 29318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit a libtool wrapper script on stdout. 29328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Don't directly open a file because we may want to 29338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# incorporate the script contents within a cygwin/mingw 29348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# wrapper executable. Must ONLY be called from within 29358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_link because it depends on a number of variables 29368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# set therein. 29378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 29388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# variable will take. If 'yes', then the emitted script 29408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# will assume that the directory in which it is stored is 29418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the $objdir directory. This is a cygwin/mingw-specific 29428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# behavior. 29438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper () 29448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 29458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_arg1=no 29468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1" ; then 29478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_arg1=$1 29488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 29498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # split this up so that func_emit_cwrapperexe_src 29518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # can call each part independently. 29528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 29558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 29578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_to_host_path arg 29588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 29598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Convert paths to host format when used with build tools. 29608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Intended for use with "native" mingw (where libtool itself 29618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is running under the msys shell), or in the following cross- 29628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# build environments: 29638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $build $host 29648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# mingw (msys) mingw [e.g. native] 29658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# cygwin mingw 29668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# *nix + wine mingw 29678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# where wine is equipped with the `winepath' executable. 29688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# In the native mingw case, the (msys) shell automatically 29698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# converts paths for any non-msys applications it launches, 29708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but that facility isn't available from inside the cwrapper. 29718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Similar accommodations are necessary for $host mingw and 29728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $build cygwin. Calling this function does no harm for other 29738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $host/$build combinations not listed above. 29748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 29758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is the path (on $build) that should be converted to 29768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the proper representation for $host. The result is stored 29778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in $func_to_host_path_result. 29788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_to_host_path () 29798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 29808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result="$1" 29818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1" ; then 29828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 29838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *mingw* ) 29848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $build in 29868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *mingw* ) # actually, msys 29878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # awkward: cmd appends spaces to result 29888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 29938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 29948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* ) 29958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_tmp1=`cygpath -w "$1"` 29968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 29988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 29998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) 30008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Unfortunately, winepath does not exit with a non-zero 30018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # error code, so we are forced to check the contents of 30028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # stdout. On the other hand, if the command is not 30038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # found, the shell will set an exit code of 127 and print 30048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # *an error message* to stdout. So we must check for both 30058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # error code of zero AND non-empty stdout, which explains 30068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the odd construction: 30078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 30118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 30128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Allow warning below. 30138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result="" 30148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 30168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 30178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$func_to_host_path_result" ; then 30188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "Could not determine host path corresponding to" 30198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error " '$1'" 30208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "Continuing, but uninstalled executables may not work." 30218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Fallback: 30228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path_result="$1" 30238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 30258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 30268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 30288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_to_host_path 30298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 30308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_to_host_pathlist arg 30318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 30328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Convert pathlists to host format when used with build tools. 30338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# See func_to_host_path(), above. This function supports the 30348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# following $build/$host combinations (but does no harm for 30358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# combinations not listed here): 30368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $build $host 30378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# mingw (msys) mingw [e.g. native] 30388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# cygwin mingw 30398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# *nix + wine mingw 30408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 30418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Path separators are also converted from $build format to 30428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $host format. If ARG begins or ends with a path separator 30438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# character, it is preserved (but converted to $host format) 30448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# on output. 30458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 30468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is a pathlist (on $build) that should be converted to 30478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the proper representation on $host. The result is stored 30488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in $func_to_host_pathlist_result. 30498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_to_host_pathlist () 30508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 30518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result="$1" 30528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$1" ; then 30538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 30548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *mingw* ) 30558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remove leading and trailing path separator characters from 30578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # ARG. msys behavior is inconsistent here, cygpath turns them 30588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # into '.;' and ';.', and winepath ignores them completely. 30598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_tmp2="$1" 30608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Once set for this call, this variable should not be 30618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # reassigned. It is used in tha fallback case. 30628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e 's|^:*||' -e 's|:*$||'` 30648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $build in 30658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *mingw* ) # Actually, msys. 30668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Awkward: cmd appends spaces to result. 30678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 30728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 30738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* ) 30748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 30778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 30788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) 30798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # unfortunately, winepath doesn't convert pathlists 30808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result="" 30818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_oldIFS=$IFS 30828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=: 30838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=$func_to_host_pathlist_oldIFS 30858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$func_to_host_pathlist_f" ; then 30868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_path "$func_to_host_pathlist_f" 30878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$func_to_host_path_result" ; then 30888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$func_to_host_pathlist_result" ; then 30898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result="$func_to_host_path_result" 30908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 30918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 30958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=: 30968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 30978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS=$func_to_host_pathlist_oldIFS 30988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 30998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 31008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$func_to_host_pathlist_result" ; then 31018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "Could not determine the host path(s) corresponding to" 31028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error " '$1'" 31038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "Continuing, but uninstalled executables may not work." 31048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Fallback. This may break if $1 contains DOS-style drive 31058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # specifications. The fix is not to complicate the expression 31068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # below, but for the user to provide a working wine installation 31078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # with winepath so that path translation in the cross-to-mingw 31088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # case works properly. 31098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_replace_pathsep_nix_to_dos="s|:|;|g" 31108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e "$lt_replace_pathsep_nix_to_dos"` 31128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 31138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now, add the leading and trailing path separators back 31148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$1" in 31158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 31178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 31188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$1" in 31198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 31218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 31228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 31238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 31248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 31258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 31268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_to_host_pathlist 31278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_cwrapperexe_src 31298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# emit the source code for a wrapper executable on stdout 31308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Must ONLY be called from within func_mode_link because 31318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# it depends on a number of variable set therein. 31328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_cwrapperexe_src () 31338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 31348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 31358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels The $output program cannot be directly executed until all the libtool 31408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libraries that it depends on are installed. 31418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels This wrapper executable should never be moved out of the build directory. 31438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels If it is, it will not operate correctly. 31448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels Currently, it simply execs the wrapper *script* "$SHELL $output", 31468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels but could eventually absorb all of the scripts functionality and 31478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exec $objdir/$outputname directly. 31488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 31498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 31508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 31518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdio.h> 31528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdlib.h> 31538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef _MSC_VER 31548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <direct.h> 31558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <process.h> 31568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <io.h> 31578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define setmode _setmode 31588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else 31598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <unistd.h> 31608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <stdint.h> 31618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifdef __CYGWIN__ 31628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <io.h> 31638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define HAVE_SETENV 31648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifdef __STRICT_ANSI__ 31658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *realpath (const char *, char *); 31668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint putenv (char *); 31678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint setenv (const char *, const char *, int); 31688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif 31698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif 31708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 31718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <malloc.h> 31728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdarg.h> 31738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <assert.h> 31748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <string.h> 31758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <ctype.h> 31768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <errno.h> 31778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <fcntl.h> 31788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <sys/stat.h> 31798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined(PATH_MAX) 31818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX PATH_MAX 31828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#elif defined(MAXPATHLEN) 31838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX MAXPATHLEN 31848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else 31858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX 1024 31868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 31878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_IXOTH 31898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXOTH 0 31908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 31918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_IXGRP 31928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXGRP 0 31938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 31948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 31958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef _MSC_VER 31968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXUSR _S_IEXEC 31978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define stat _stat 31988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef _INTPTR_T_DEFINED 31998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define intptr_t int 32008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif 32018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef DIR_SEPARATOR 32048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define DIR_SEPARATOR '/' 32058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define PATH_SEPARATOR ':' 32068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels defined (__OS2__) 32108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define HAVE_DOS_BASED_FILE_SYSTEM 32118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "wb" 32128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef DIR_SEPARATOR_2 32138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define DIR_SEPARATOR_2 '\\' 32148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif 32158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef PATH_SEPARATOR_2 32168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define PATH_SEPARATOR_2 ';' 32178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif 32188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef DIR_SEPARATOR_2 32218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else /* DIR_SEPARATOR_2 */ 32238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_DIR_SEPARATOR(ch) \ 32248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* DIR_SEPARATOR_2 */ 32268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef PATH_SEPARATOR_2 32288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else /* PATH_SEPARATOR_2 */ 32308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* PATH_SEPARATOR_2 */ 32328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __CYGWIN__ 32348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "wb" 32358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef FOPEN_WB 32388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "w" 32398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef _O_BINARY 32418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define _O_BINARY 0 32428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define XFREE(stale) do { \ 32468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (stale) { free ((void *) stale); stale = 0; } \ 32478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} while (0) 32488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#undef LTWRAPPER_DEBUGPRINTF 32508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined DEBUGWRAPPER 32518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic void 32538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsltwrapper_debugprintf (const char *fmt, ...) 32548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 32558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_list args; 32568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_start (args, fmt); 32578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (void) vfprintf (stderr, fmt, args); 32588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_end (args); 32598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 32608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else 32618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args) 32628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 32638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char *program_name = NULL; 32658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid *xmalloc (size_t num); 32678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *xstrdup (const char *string); 32688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char *base_name (const char *name); 32698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *find_executable (const char *wrapper); 32708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *chase_symlinks (const char *pathspec); 32718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint make_executable (const char *path); 32728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint check_executable (const char *path); 32738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *strendzap (char *str, const char *pat); 32748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_fatal (const char *message, ...); 32758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_setenv (const char *name, const char *value); 32768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *lt_extend_str (const char *orig_value, const char *add, int to_end); 32778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_set (const char *arg); 32788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_prepend (const char *arg); 32798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_append (const char *arg); 32808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint lt_split_name_value (const char *arg, char** name, char** value); 32818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_update_exe_path (const char *name, const char *value); 32828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_update_lib_path (const char *name, const char *value); 32838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *script_text_part1 = 32858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 32868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part1 yes | 32888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e 's/\([\\"]\)/\\\1/g' \ 32898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -e 's/^/ "/' -e 's/$/\\n"/' 32908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels echo ";" 32918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 32928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 32938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *script_text_part2 = 32948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 32958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper_part2 yes | 32968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e 's/\([\\"]\)/\\\1/g' \ 32978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -e 's/^/ "/' -e 's/$/\\n"/' 32988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels echo ";" 32998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 33018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * MAGIC_EXE = "$magic_exe"; 33028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 33038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist "$temp_rpath" 33078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 33088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 33118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 33128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VALUE = ""; 33138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 33158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dllsearchpath"; then 33178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_to_host_pathlist "$dllsearchpath:" 33188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 33198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VARNAME = "PATH"; 33208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 33238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 33248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VARNAME = ""; 33258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VALUE = ""; 33268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 33288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" = yes; then 33308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 33318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 33348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 33358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 33388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 33418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX "--lt-" 33438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint 33638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmain (int argc, char *argv[]) 33648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 33658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char **newargz; 33668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int newargc; 33678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *tmp_pathspec; 33688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *actual_cwrapper_path; 33698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *actual_cwrapper_name; 33708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *target_name; 33718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *lt_argv_zero; 33728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels intptr_t rval = 127; 33738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int i; 33758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels program_name = (char *) xstrdup (base_name (argv[0])); 33778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* very simple arg parsing; don't want to rely on getopt */ 33818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (i = 1; i < argc; i++) 33828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 33838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strcmp (argv[i], dumpscript_opt) == 0) 33848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 33858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 33868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$host" in 33878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *mingw* | *cygwin* ) 33888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # make stdout use "unix" line endings 33898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels echo " setmode(1,_O_BINARY);" 33908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 33918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 33928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 33938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 33948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf ("%s", script_text_part1); 33958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf ("%s", script_text_part2); 33968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 0; 33978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 33988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 33998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newargz = XMALLOC (char *, argc + 1); 34018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = find_executable (argv[0]); 34028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (tmp_pathspec == NULL) 34038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("Couldn't find %s", argv[0]); 34048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec)); 34068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels actual_cwrapper_path)); 34108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (tmp_pathspec); 34118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strendzap (actual_cwrapper_path, actual_cwrapper_name); 34148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* wrapper name transforms */ 34168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strendzap (actual_cwrapper_name, ".exe"); 34178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (actual_cwrapper_name); 34198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels actual_cwrapper_name = tmp_pathspec; 34208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = 0; 34218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* target_name transforms -- use actual target program name; might have lt- prefix */ 34238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strendzap (target_name, ".exe"); 34258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (target_name); 34278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels target_name = tmp_pathspec; 34288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = 0; 34298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels target_name)); 34328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 34338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<EOF 34358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newargz[0] = 34368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XMALLOC (char, (strlen (actual_cwrapper_path) + 34378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (newargz[0], actual_cwrapper_path); 34398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcat (newargz[0], "$objdir"); 34408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcat (newargz[0], "/"); 34418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 34428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 34448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* stop here, and copy so we don't have to do this twice */ 34458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = xstrdup (newargz[0]); 34468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcat (newargz[0], actual_cwrapper_name); 34498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* DO want the lt- prefix here if it exists, so use target_name */ 34518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (tmp_pathspec); 34538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = NULL; 34548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 34558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host_os in 34578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels mingw*) 34588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 34598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char* p; 34618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while ((p = strchr (newargz[0], '\\')) != NULL) 34628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *p = '/'; 34648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 34658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *p = '/'; 34688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 34698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 34708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 34718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 34728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 34738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 34758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (target_name); 34768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (actual_cwrapper_path); 34778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (actual_cwrapper_name); 34788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 34838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 34848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newargc=0; 34858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (i = 1; i < argc; i++) 34868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (argv[i][env_set_opt_len] == '=') 34908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p = argv[i] + env_set_opt_len + 1; 34928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_set (p); 34938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 34948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 34968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_set (argv[++i]); /* don't copy */ 34978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 34988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 34998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("%s missing required argument", env_set_opt); 35008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue; 35018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (argv[i][env_prepend_opt_len] == '=') 35058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p = argv[i] + env_prepend_opt_len + 1; 35078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_prepend (p); 35088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 35148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("%s missing required argument", env_prepend_opt); 35158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue; 35168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (argv[i][env_append_opt_len] == '=') 35208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p = argv[i] + env_append_opt_len + 1; 35228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_append (p); 35238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_opt_process_env_append (argv[++i]); /* don't copy */ 35278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 35298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("%s missing required argument", env_append_opt); 35308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue; 35318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels namespace, but it is not one of the ones we know about and 35368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels have already dealt with, above (inluding dump-script), then 35378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels report an error. Otherwise, targets might begin to believe 35388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels namespace. The first time any user complains about this, we'll 35408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels or a configure.ac-settable value. 35428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels */ 35438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("Unrecognized option in %s namespace: '%s'", 35448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ltwrapper_option_prefix, argv[i]); 35458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* otherwise ... */ 35478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newargz[++newargc] = xstrdup (argv[i]); 35488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newargz[++newargc] = NULL; 35508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (i = 0; i < newargc; i++) 35538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 35588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host_os in 35608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels mingw*) 35618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 35628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* execv doesn't actually work on mingw as expected on unix */ 35638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (rval == -1) 35658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 35668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* failed to start process */ 35678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 127; 35698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 35708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return rval; 35718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 35728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 35738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 35748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 35758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels execv (lt_argv_zero, newargz); 35768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return rval; /* =127, but avoids unused variable warning */ 35778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 35788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 35798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 35808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat <<"EOF" 35828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 35838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid * 35858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsxmalloc (size_t num) 35868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 35878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels void *p = (void *) malloc (num); 35888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (!p) 35898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("Memory exhausted"); 35908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return p; 35928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 35938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 35948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar * 35958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsxstrdup (const char *string) 35968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 35978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels string) : NULL; 35998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 36008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * 36028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbase_name (const char *name) 36038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 36048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *base; 36058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* Skip over the disk name in MSDOS pathnames. */ 36088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name += 2; 36108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 36118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (base = name; *name; name++) 36138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (IS_DIR_SEPARATOR (*name)) 36148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base = name + 1; 36158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return base; 36168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 36178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint 36198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscheck_executable (const char *path) 36208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 36218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels struct stat st; 36228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path ? (*path ? path : "EMPTY!") : "NULL!")); 36258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ((!path) || (!*path)) 36268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 0; 36278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ((stat (path, &st) >= 0) 36298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 1; 36318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 36328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 0; 36338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 36348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint 36368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmake_executable (const char *path) 36378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 36388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int rval = 0; 36398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels struct stat st; 36408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path ? (*path ? path : "EMPTY!") : "NULL!")); 36438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ((!path) || (!*path)) 36448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 0; 36458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (stat (path, &st) >= 0) 36478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 36488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 36508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return rval; 36518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 36528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* Searches for the full path of the wrapper. Returns 36548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newly allocated full path name if found, NULL otherwise 36558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels Does not chase symlinks, even on platforms that support them. 36568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/ 36578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar * 36588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfind_executable (const char *wrapper) 36598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 36608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int has_slash = 0; 36618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p; 36628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p_next; 36638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* static buffer for getcwd */ 36648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char tmp[LT_PATHMAX + 1]; 36658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int tmp_len; 36668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *concat_name; 36678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 36708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ((wrapper == NULL) || (*wrapper == '\0')) 36728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return NULL; 36738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* Absolute path? */ 36758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 36788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name = xstrdup (wrapper); 36798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (check_executable (concat_name)) 36808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return concat_name; 36818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (concat_name); 36828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 36838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 36848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 36858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 36868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (IS_DIR_SEPARATOR (wrapper[0])) 36878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 36888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name = xstrdup (wrapper); 36898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (check_executable (concat_name)) 36908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return concat_name; 36918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (concat_name); 36928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 36938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 36958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 36968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 36978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (p = wrapper; *p; p++) 36988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (*p == '/') 36998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels has_slash = 1; 37018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break; 37028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (!has_slash) 37048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* no slashes; search PATH */ 37068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *path = getenv ("PATH"); 37078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (path != NULL) 37088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (p = path; *p; p = p_next) 37108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *q; 37128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels size_t p_len; 37138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for (q = p; *q; q++) 37148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (IS_PATH_SEPARATOR (*q)) 37158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break; 37168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p_len = q - p; 37178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p_next = (*q == '\0' ? q : q + 1); 37188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (p_len == 0) 37198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* empty path: current directory */ 37218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (getcwd (tmp, LT_PATHMAX) == NULL) 37228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("getcwd failed"); 37238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_len = strlen (tmp); 37248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name = 37258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels memcpy (concat_name, tmp, tmp_len); 37278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name[tmp_len] = '/'; 37288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (concat_name + tmp_len + 1, wrapper); 37298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 37318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name = 37338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels memcpy (concat_name, p, p_len); 37358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name[p_len] = '/'; 37368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (concat_name + p_len + 1, wrapper); 37378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (check_executable (concat_name)) 37398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return concat_name; 37408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (concat_name); 37418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* not found in PATH; assume curdir */ 37448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* Relative path | not found in path: prepend cwd */ 37468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (getcwd (tmp, LT_PATHMAX) == NULL) 37478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("getcwd failed"); 37488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_len = strlen (tmp); 37498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels memcpy (concat_name, tmp, tmp_len); 37518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_name[tmp_len] = '/'; 37528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (concat_name + tmp_len + 1, wrapper); 37538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 37548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (check_executable (concat_name)) 37558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return concat_name; 37568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (concat_name); 37578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return NULL; 37588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 37598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 37608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar * 37618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschase_symlinks (const char *pathspec) 37628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 37638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_ISLNK 37648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return xstrdup (pathspec); 37658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else 37668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char buf[LT_PATHMAX]; 37678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels struct stat s; 37688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *tmp_pathspec = xstrdup (pathspec); 37698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *p; 37708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int has_symlinks = 0; 37718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while (strlen (tmp_pathspec) && !has_symlinks) 37728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec)); 37758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (lstat (tmp_pathspec, &s) == 0) 37768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (S_ISLNK (s.st_mode) != 0) 37788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels has_symlinks = 1; 37808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break; 37818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 37838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* search backwards for last DIR_SEPARATOR */ 37848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p--; 37878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* no more DIR_SEPARATORS left */ 37908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break; 37918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *p = '\0'; 37938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 37958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 37968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *errstr = strerror (errno); 37978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 37998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (tmp_pathspec); 38018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (!has_symlinks) 38038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return xstrdup (pathspec); 38058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_pathspec = realpath (pathspec, buf); 38088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (tmp_pathspec == 0) 38098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("Could not follow symlinks for %s", pathspec); 38118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return xstrdup (tmp_pathspec); 38138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 38148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 38158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar * 38178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstrendzap (char *str, const char *pat) 38188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 38198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels size_t len, patlen; 38208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels assert (str != NULL); 38228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels assert (pat != NULL); 38238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len = strlen (str); 38258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels patlen = strlen (pat); 38268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (patlen <= len) 38288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels str += len - patlen; 38308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (strcmp (str, pat) == 0) 38318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *str = '\0'; 38328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return str; 38348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 38358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic void 38378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_error_core (int exit_status, const char *mode, 38388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *message, va_list ap) 38398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 38408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fprintf (stderr, "%s: %s: ", program_name, mode); 38418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vfprintf (stderr, message, ap); 38428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fprintf (stderr, ".\n"); 38438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (exit_status >= 0) 38458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit (exit_status); 38468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 38478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 38498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_fatal (const char *message, ...) 38508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 38518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_list ap; 38528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_start (ap, message); 38538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels va_end (ap); 38558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 38568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 38588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_setenv (const char *name, const char *value) 38598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 38608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (name ? name : "<NULL>"), 38628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (value ? value : "<NULL>"))); 38638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef HAVE_SETENV 38658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* always make a copy, for consistency with !HAVE_SETENV */ 38668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *str = xstrdup (value); 38678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels setenv (name, str, 1); 38688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else 38698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int len = strlen (name) + 1 + strlen (value) + 1; 38708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *str = XMALLOC (char, len); 38718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sprintf (str, "%s=%s", name, value); 38728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (putenv (str) != EXIT_SUCCESS) 38738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (str); 38758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif 38778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 38798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 38808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar * 38818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_extend_str (const char *orig_value, const char *add, int to_end) 38828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 38838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *new_value; 38848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (orig_value && *orig_value) 38858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int orig_value_len = strlen (orig_value); 38878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int add_len = strlen (add); 38888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_value = XMALLOC (char, add_len + orig_value_len + 1); 38898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (to_end) 38908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (new_value, orig_value); 38928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (new_value + orig_value_len, add); 38938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 38958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 38968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (new_value, add); 38978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strcpy (new_value + add_len, orig_value); 38988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 38998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 39008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 39018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 39028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_value = xstrdup (add); 39038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 39048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return new_value; 39058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 39068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint 39088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_split_name_value (const char *arg, char** name, char** value) 39098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 39108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels const char *p; 39118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int len; 39128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (!arg || !*arg) 39138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 1; 39148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels p = strchr (arg, (int)'='); 39168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (!p) 39188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 1; 39198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *value = xstrdup (++p); 39218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len = strlen (arg) - strlen (*value); 39238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *name = XMALLOC (char, len); 39248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels strncpy (*name, arg, len-1); 39258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (*name)[len - 1] = '\0'; 39268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels return 0; 39288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 39298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 39318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_set (const char *arg) 39328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 39338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *name = NULL; 39348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *value = NULL; 39358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 39378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 39388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 39428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv (name, value); 39448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 39478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 39498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_prepend (const char *arg) 39508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 39518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *name = NULL; 39528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *value = NULL; 39538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *new_value = NULL; 39548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 39568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 39578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 39618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_value = lt_extend_str (getenv (name), value, 0); 39638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv (name, new_value); 39648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (new_value); 39658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 39688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 39708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_append (const char *arg) 39718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 39728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *name = NULL; 39738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *value = NULL; 39748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *new_value = NULL; 39758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 39778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 39788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 39828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_value = lt_extend_str (getenv (name), value, 1); 39848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv (name, new_value); 39858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (new_value); 39868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (name); 39878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (value); 39888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 39898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 39918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_update_exe_path (const char *name, const char *value) 39928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 39938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (name ? name : "<NULL>"), 39958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (value ? value : "<NULL>"))); 39968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 39978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (name && *name && value && *value) 39988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 39998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *new_value = lt_extend_str (getenv (name), value, 0); 40008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels /* some systems can't cope with a ':'-terminated path #' */ 40018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int len = strlen (new_value); 40028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 40048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_value[len-1] = '\0'; 40058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 40068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv (name, new_value); 40078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (new_value); 40088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 40098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 40108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid 40128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_update_lib_path (const char *name, const char *value) 40138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 40148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (name ? name : "<NULL>"), 40168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels (value ? value : "<NULL>"))); 40178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (name && *name && value && *value) 40198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { 40208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels char *new_value = lt_extend_str (getenv (name), value, 0); 40218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_setenv (name, new_value); 40228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels XFREE (new_value); 40238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 40248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 40258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 40288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 40298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_cwrapperexe_src 40308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_link arg... 40328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_link () 40338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 40348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 40358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 40368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # It is impossible to link a dll without this setting, and 40388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # we shouldn't force the makefile maintainer to figure out 40398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # which system we are compiling for in order to pass an extra 40408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # flag for every libtool invocation. 40418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # allow_undefined=no 40428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: Unfortunately, there are problems with the above when trying 40448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # to make a dll which has undefined symbols, in which case not 40458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # even a static library is built. For now, we need to specify 40468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -no-undefined on the libtool link line when we can be certain 40478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # that all symbols are satisfied, otherwise we get a static library. 40488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels allow_undefined=yes 40498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 40508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 40518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels allow_undefined=yes 40528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 40538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 40548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libtool_args=$nonopt 40558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels base_compile="$nonopt $@" 40568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=$nonopt 40578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=$nonopt 40588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_rpath= 40608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_rpath= 40618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_shlibpath= 40628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_shlibpath= 40638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels convenience= 40648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_convenience= 40658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs= 40668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_deplibs= 40678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags= 40688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags= 40698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dllsearchpath= 40708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_search_path=`pwd` 40718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels inst_prefix_dir= 40728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_inherited_linker_flags= 40738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 40748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels avoid_version=no 40758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles= 40768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles= 40778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlself=no 40788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_dynamic=no 40798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols= 40808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols_regex= 40818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated= 40828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs= 40838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ltlibs= 40848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels module=no 40858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels no_install=no 40868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objs= 40878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_objects= 40888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels precious_files_regex= 40898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prefer_static_libs=no 40908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels preload=no 40918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 40928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prevarg= 40938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release= 40948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 40958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xrpath= 40968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels perm_rpath= 40978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels temp_rpath= 40988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels thread_safe=no 40998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vinfo= 41008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vinfo_number=no 41018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels weak_libs= 41028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels single_module="${wl}-single_module" 41038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_infer_tag $base_compile 41048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 41058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need to know -static, to get the right output filenames. 41068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg 41078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 41088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 41098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared) 41108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_libtool_libs" != yes && \ 41118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "can not build a shared library" 41128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=no 41138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 41148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -all-static | -static | -static-libtool-libs) 41168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 41178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -all-static) 41188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "complete static linking is impossible in this configuration" 41208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$link_static_flag"; then 41228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopen_self=$dlopen_self_static 41238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prefer_static_libs=yes 41258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static) 41278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_flag" && test -n "$link_static_flag"; then 41288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopen_self=$dlopen_self_static 41298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prefer_static_libs=built 41318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static-libtool-libs) 41338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_flag" && test -n "$link_static_flag"; then 41348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopen_self=$dlopen_self_static 41358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prefer_static_libs=yes 41378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 41398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 41408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 41418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 41428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 41448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 41458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 41468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # See if our shared archives depend on static archives. 41478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$old_archive_from_new_cmds" && build_old_libs=yes 41488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 41498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Go through the arguments, transforming them on the way. 41508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test "$#" -gt 0; do 41518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$1" 41528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 41538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 41548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels qarg=$func_quote_for_eval_unquoted_result 41558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append libtool_args " $func_quote_for_eval_result" 41568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 41578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the previous option needs an argument, assign it. 41588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$prev"; then 41598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $prev in 41608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output) 41618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " @OUTPUT@" 41628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " @OUTPUT@" 41638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 41658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 41668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $prev in 41678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles|dlprefiles) 41688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$preload" = no; then 41698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the symbol object into the linking commands. 41708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " @SYMFILE@" 41718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " @SYMFILE@" 41728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels preload=yes 41738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 41758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la | *.lo) ;; # We handle these cases below. 41768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels force) 41778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$dlself" = no; then 41788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlself=needless 41798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_dynamic=yes 41808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 41828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 41838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels self) 41858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlprefiles; then 41868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlself=yes 41878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlself=yes 41898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 41908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlself=needless 41918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_dynamic=yes 41928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 41938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 41948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 41958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 41968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 41978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlfiles; then 41988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$dlfiles $arg" 41998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 42008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$dlprefiles $arg" 42018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 42068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels expsyms) 42088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols="$arg" 42098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$arg" \ 42108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels || func_fatal_error "symbol file \`$arg' does not exist" 42118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels expsyms_regex) 42158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols_regex="$arg" 42168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels framework) 42208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 42218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-darwin*) 42228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$deplibs " in 42238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $qarg.ltframework "*) ;; 42248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 42278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 42298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels inst_prefix) 42338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels inst_prefix_dir="$arg" 42348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 42378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objectlist) 42388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$arg"; then 42398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_arg=$arg 42408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels moreargs= 42418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for fil in `cat "$save_arg"` 42428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 42438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# moreargs="$moreargs $fil" 42448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$fil 42458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A libtool-controlled object. 42468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that this really is a libtool object. 42488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_lalib_unsafe_p "$arg"; then 42498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object= 42508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object= 42518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Read the .lo file 42538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$arg" 42548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_object" || 42568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$non_pic_object" || 42578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$pic_object" = none && 42588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$non_pic_object" = none; then 42598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find name of object for \`$arg'" 42608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract subdirectory from the argument. 42638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$arg" "/" "" 42648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xdir="$func_dirname_result" 42658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pic_object" != none; then 42678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepend the subdirectory the object is found in. 42688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object="$xdir$pic_object" 42698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlfiles; then 42718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$dlfiles $pic_object" 42738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 42758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 42768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If libtool objects are unsupported, then we need to preload. 42778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=dlprefiles 42788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # CHECK ME: I think I busted this. -Ossama 42828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlprefiles; then 42838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Preload the old-style object. 42848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$dlprefiles $pic_object" 42858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 42868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A PIC object. 42898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append libobjs " $pic_object" 42908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$pic_object" 42918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 42928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Non-PIC object. 42948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$non_pic_object" != none; then 42958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepend the subdirectory the object is found in. 42968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object="$xdir$non_pic_object" 42978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 42988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A standard non-PIC object 42998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 43008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_object" || test "$pic_object" = none ; then 43018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$non_pic_object" 43028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 43048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the PIC object exists, use it instead. 43058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $xdir was prepended to $pic_object above. 43068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object="$pic_object" 43078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 43088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 43108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only an error if not doing a dry-run. 43118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_dry_run; then 43128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract subdirectory from the argument. 43138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$arg" "/" "" 43148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xdir="$func_dirname_result" 43158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 43168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lo2o "$arg" 43178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object=$xdir$objdir/$func_lo2o_result 43188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object=$xdir$func_lo2o_result 43198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append libobjs " $pic_object" 43208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 43218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 43228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$arg' is not a valid libtool object" 43238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 43268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 43278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "link input file \`$arg' does not exist" 43288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$save_arg 43308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels precious_regex) 43348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels precious_files_regex="$arg" 43358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release) 43398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release="-$arg" 43408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath | xrpath) 43448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need an absolute path. 43458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 43468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 43478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 43488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "only absolute run-paths are allowed" 43498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 43518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = rpath; then 43528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$rpath " in 43538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $arg "*) ;; 43548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) rpath="$rpath $arg" ;; 43558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 43568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 43578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$xrpath " in 43588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $arg "*) ;; 43598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) xrpath="$xrpath $arg" ;; 43608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 43618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 43628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shrext) 43668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shrext_cmds="$arg" 43678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels weak) 43718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels weak_libs="$weak_libs $arg" 43728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xcclinker) 43768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags="$linker_flags $qarg" 43778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $qarg" 43788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $qarg" 43808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $qarg" 43818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xcompiler) 43848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $qarg" 43858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $qarg" 43878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $qarg" 43888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xlinker) 43918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags="$linker_flags $qarg" 43928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $wl$qarg" 43938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 43948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $wl$qarg" 43958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $wl$qarg" 43968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 43978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 43988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 43998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$prev=\"\$arg\"" 44008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 44018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 44048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # test -n "$prev" 44058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prevarg="$arg" 44078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 44098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -all-static) 44108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$link_static_flag"; then 44118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # See comment for -static flag below, for more details. 44128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $link_static_flag" 44138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $link_static_flag" 44148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 44158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -allow-undefined) 44198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: remove this flag sometime in the future. 44208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -avoid-version) 44248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels avoid_version=yes 44258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlopen) 44298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=dlfiles 44308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -dlpreopen) 44348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=dlprefiles 44358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -export-dynamic) 44398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_dynamic=yes 44408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -export-symbols | -export-symbols-regex) 44448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "more than one -exported-symbols argument is not allowed" 44468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 44478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$arg" = "X-export-symbols"; then 44488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=expsyms 44498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 44508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=expsyms_regex 44518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 44528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -framework) 44568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=framework 44578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -inst-prefix-dir) 44618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=inst_prefix 44628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # so, if we see these flags be careful not to treat them like -L 44678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L[A-Z][A-Z]*:*) 44688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $with_gcc/$host in 44698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels no/*-*-irix* | /*-*-irix*) 44708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 44718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 44728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 44748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 44758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 44778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) 44788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-L' '' "$arg" 44798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir=$func_stripname_result 44808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dir"; then 44818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$#" -gt 0; then 44828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "require no space between \`-L' and \`$1'" 44838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 44848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "need path for \`-L' option" 44858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 44868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 44878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need an absolute path. 44888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $dir in 44898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 44908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 44918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir=`cd "$dir" && pwd` 44928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$absdir" && \ 44938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot determine absolute directory name of \`$dir'" 44948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$absdir" 44958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 44968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 44978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$deplibs " in 44988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -L$dir "*) ;; 44998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 45008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs -L$dir" 45018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_search_path="$lib_search_path $dir" 45028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 45058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$dllsearchpath: in 45088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$dir:"*) ;; 45098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ::) dllsearchpath=$dir;; 45108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dllsearchpath="$dllsearchpath:$dir";; 45118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$dllsearchpath: in 45138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$testbindir:"*) ;; 45148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ::) dllsearchpath=$testbindir;; 45158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dllsearchpath="$dllsearchpath:$testbindir";; 45168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 45238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 45258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # These systems don't actually have a C or math library (as such) 45278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-os2*) 45308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # These systems don't actually have a C library (as such) 45318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$arg" = "X-lc" && continue 45328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do not include libc due to us having libc/libc_r. 45358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$arg" = "X-lc" && continue 45368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 45388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Rhapsody C and math libraries are in the System framework 45398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs System.ltframework" 45408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sco3.2v5* | *-*-sco5v6*) 45438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Causes problems with __ctype 45448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$arg" = "X-lc" && continue 45458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Compiler inserts libc in the correct place for threads to work 45488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$arg" = "X-lc" && continue 45498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "X$arg" = "X-lc_r"; then 45528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 45538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do not include libc_r directly, use -pthread flag. 45558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 45598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs $arg" 45608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -module) 45648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels module=yes 45658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # classes, name mangling, and exception handling. 45708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Darwin uses the -arch flag to determine output architecture. 45718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -model|-arch|-isysroot) 45728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $arg" 45738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 45748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 45758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=xcompiler 45768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $arg" 45818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 45828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 45838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$new_inherited_linker_flags " in 45848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $arg "*) ;; 45858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 45878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -multi_module) 45918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels single_module="${wl}-multi_module" 45928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 45958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-fast-install) 45968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fast_install=no 45978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 45988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 45998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-install) 46018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 46028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The PATH hackery in wrapper scripts is required on Windows 46048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # and Darwin in order for the loader to find any dlls it needs. 46058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-no-install' is ignored for $host" 46068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "assuming \`-no-fast-install' instead" 46078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fast_install=no 46088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) no_install=yes ;; 46108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 46118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -no-undefined) 46158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels allow_undefined=no 46168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -objectlist) 46208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=objectlist 46218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -o) prev=output ;; 46258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -precious-files-regex) 46278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=precious_regex 46288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -release) 46328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=release 46338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -rpath) 46378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=rpath 46388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R) 46428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=xrpath 46438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R*) 46478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-R' '' "$arg" 46488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir=$func_stripname_result 46498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need an absolute path. 46508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $dir in 46518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 46528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 46538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "only absolute run-paths are allowed" 46548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 46568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$xrpath " in 46578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $dir "*) ;; 46588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) xrpath="$xrpath $dir" ;; 46598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 46608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shared) 46648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The effects of -shared are defined in a previous loop. 46658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -shrext) 46698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=shrext 46708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -static | -static-libtool-libs) 46748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The effects of -static are defined in a previous loop. 46758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We used to do the same as -all-static on platforms that 46768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # didn't have a PIC flag, but the assumption that the effects 46778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # would be equivalent was wrong. It would break on at least 46788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Digital Unix and AIX. 46798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -thread-safe) 46838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels thread_safe=yes 46848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -version-info) 46888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=vinfo 46898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -version-number) 46938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=vinfo 46948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vinfo_number=yes 46958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 46968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 46978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 46988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -weak) 46998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=weak 47008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 47018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Wc,*) 47048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-Wc,' '' "$arg" 47058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels args=$func_stripname_result 47068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg= 47078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS=',' 47088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for flag in $args; do 47098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 47108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$flag" 47118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$arg $wl$func_quote_for_eval_result" 47128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $func_quote_for_eval_result" 47138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 47148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 47158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname ' ' '' "$arg" 47168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$func_stripname_result 47178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Wl,*) 47208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-Wl,' '' "$arg" 47218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels args=$func_stripname_result 47228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg= 47238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS=',' 47248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for flag in $args; do 47258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 47268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$flag" 47278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$arg $wl$func_quote_for_eval_result" 47288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags="$linker_flags $func_quote_for_eval_result" 47308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 47318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 47328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname ' ' '' "$arg" 47338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg=$func_stripname_result 47348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Xcompiler) 47378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=xcompiler 47388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 47398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -Xlinker) 47428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=xlinker 47438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 47448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -XCClinker) 47478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=xcclinker 47488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 47498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -msg_* for osf cc 47528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -msg_*) 47538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 47548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$func_quote_for_eval_result" 47558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -r[0-9][0-9]* specifies the processor on the SGI compiler 47598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # +DA*, +DD* enable 64-bit mode on the HP compiler 47618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -q* pass through compiler args for the IBM compiler 47628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -m*, -t[45]*, -txscale* pass through architecture-specific 47638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # compiler args for GCC 47648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -F/path gives path to uninstalled frameworks, gcc on darwin 47658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # @file GCC response files 47678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 47708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$func_quote_for_eval_result" 47718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 47728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 47738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $arg" 47748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 47758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Some other compiler flag. 47788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -* | +*) 47798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 47808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$func_quote_for_eval_result" 47818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$objext) 47848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A standard object. 47858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objs="$objs $arg" 47868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 47878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 47898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A libtool-controlled object. 47908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that this really is a libtool object. 47928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_lalib_unsafe_p "$arg"; then 47938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object= 47948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object= 47958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Read the .lo file 47978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$arg" 47988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 47998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_object" || 48008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$non_pic_object" || 48018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$pic_object" = none && 48028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$non_pic_object" = none; then 48038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find name of object for \`$arg'" 48048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract subdirectory from the argument. 48078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$arg" "/" "" 48088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xdir="$func_dirname_result" 48098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pic_object" != none; then 48118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepend the subdirectory the object is found in. 48128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object="$xdir$pic_object" 48138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlfiles; then 48158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$dlfiles $pic_object" 48178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 48188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 48198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 48208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If libtool objects are unsupported, then we need to preload. 48218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev=dlprefiles 48228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # CHECK ME: I think I busted this. -Ossama 48268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlprefiles; then 48278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Preload the old-style object. 48288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$dlprefiles $pic_object" 48298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 48308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A PIC object. 48338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append libobjs " $pic_object" 48348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$pic_object" 48358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Non-PIC object. 48388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$non_pic_object" != none; then 48398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepend the subdirectory the object is found in. 48408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object="$xdir$non_pic_object" 48418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A standard non-PIC object 48438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 48448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$pic_object" || test "$pic_object" = none ; then 48458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$non_pic_object" 48468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 48488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the PIC object exists, use it instead. 48498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $xdir was prepended to $pic_object above. 48508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object="$pic_object" 48518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 48528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 48548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only an error if not doing a dry-run. 48558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_dry_run; then 48568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract subdirectory from the argument. 48578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$arg" "/" "" 48588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xdir="$func_dirname_result" 48598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lo2o "$arg" 48618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pic_object=$xdir$objdir/$func_lo2o_result 48628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels non_pic_object=$xdir$func_lo2o_result 48638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append libobjs " $pic_object" 48648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append non_pic_objects " $non_pic_object" 48658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 48668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$arg' is not a valid libtool object" 48678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 48708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$libext) 48728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # An archive. 48738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs $arg" 48748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_deplibs="$old_deplibs $arg" 48758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 48768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 48778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 48798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # A libtool-controlled library. 48808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$prev" = dlfiles; then 48828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This library was specified with -dlopen. 48838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$dlfiles $arg" 48848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 48858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$prev" = dlprefiles; then 48868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The library was specified with -dlpreopen. 48878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$dlprefiles $arg" 48888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prev= 48898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 48908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs $arg" 48918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 48928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 48938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 48948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 48958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Some other compiler argument. 48968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 48978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Unknown arguments in both finalize_command and compile_command need 48988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # to be aesthetically quoted because they are evaled later. 48998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$arg" 49008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels arg="$func_quote_for_eval_result" 49018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 49028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # arg 49038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now actually substitute the argument into the commands. 49058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$arg"; then 49068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 49078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 49088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # argument parsing loop 49108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$prev" && \ 49128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "the \`$prevarg' option requires an argument" 49138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval arg=\"$export_dynamic_flag_spec\" 49168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append compile_command " $arg" 49178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append finalize_command " $arg" 49188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs= 49218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # calculate the name of the file, without its directory 49228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$output" 49238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels outputname="$func_basename_result" 49248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs_save="$libobjs" 49258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath_var"; then 49278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # get the directories listed in $shlibpath_var 49288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 49308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shlib_search_path= 49318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$output" "/" "" 49368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_objdir="$func_dirname_result$objdir" 49378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Create the object directory. 49388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mkdir_p "$output_objdir" 49398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Determine the type of output 49418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $output in 49428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels "") 49438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify an output file" 49448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 49458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$libext) linkmode=oldlib ;; 49468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo | *.$objext) linkmode=obj ;; 49478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) linkmode=lib ;; 49488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) linkmode=prog ;; # Anything else should be a program. 49498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 49508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels specialdeplibs= 49528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs= 49548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Find all interdependent deplibs by searching for libraries 49558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # that are linked more than once (e.g. -la -lb -la) 49568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $deplibs; do 49578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_duplicate_deps ; then 49588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$libs " in 49598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 49618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs="$libs $deplib" 49638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 49648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib; then 49668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs="$predeps $libs $compiler_lib_search_path $postdeps" 49678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Compute libraries that are listed more than once in $predeps 49698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $postdeps and mark them as special (i.e., whose duplicates are 49708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # not to be eliminated). 49718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pre_post_deps= 49728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_duplicate_compiler_generated_deps; then 49738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for pre_post_dep in $predeps $postdeps; do 49748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$pre_post_deps " in 49758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 49778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pre_post_deps="$pre_post_deps $pre_post_dep" 49788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 49798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pre_post_deps= 49818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 49828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs= 49848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs= 49858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path= 49868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels need_relink=no # whether we're linking any uninstalled libtool libraries 49878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_deplibs= # not-installed libtool libraries 49888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_path= # paths that contain not-installed libtool libraries 49898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 49908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $linkmode in 49918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib) 49928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels passes="conv dlpreopen link" 49938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $dlfiles $dlprefiles; do 49948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 49958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) ;; 49968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 49978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 49998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 50018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 50028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prog) 50038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs= 50048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs= 50058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels alldeplibs=no 50068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles= 50078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles= 50088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels passes="conv scan dlopen dlpreopen link" 50098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 50108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) passes="conv" 50118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 50128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 50148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for pass in $passes; do 50158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The preopen pass in lib mode reverses $deplibs; put it back here 50168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # so that -L comes before libs that need it for instance... 50178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "lib,link"; then 50188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ## FIXME: Find the place where the list is rebuilt in the wrong 50198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ## order, and fix it there properly 50208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs= 50218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $deplibs; do 50228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs="$deplib $tmp_deplibs" 50238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 50248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$tmp_deplibs" 50258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 50278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "lib,link" || 50288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$linkmode,$pass" = "prog,scan"; then 50298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs="$deplibs" 50308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs= 50318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog; then 50338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $pass in 50348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopen) libs="$dlfiles" ;; 50358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlpreopen) libs="$dlprefiles" ;; 50368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link) 50378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs="$deplibs %DEPLIBS%" 50388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 50398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 50408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "lib,dlpreopen"; then 50438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Collect and forward deplibs of preopened libtool libs 50448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $dlprefiles; do 50458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Ignore non-libtool-libs 50468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs= 50478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $lib in 50488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) func_source "$lib" ;; 50498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 50518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Collect preopened libtool deplibs, except any this library 50528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # has declared as weak libs 50538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 50548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $weak_libs " in 50568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib_base "*) ;; 50578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) deplibs="$deplibs $deplib" ;; 50588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 50608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 50618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libs="$dlprefiles" 50628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = dlopen; then 50648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Collect dlpreopened libraries 50658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_deplibs="$deplibs" 50668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs= 50678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 50698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $libs; do 50708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib= 50718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels found=no 50728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 50738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 50758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 50768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 50778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 50788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags $deplib" 50798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib ; then 50808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$new_inherited_linker_flags " in 50818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 50828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 50848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 50878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 50888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 50898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" != lib && test "$linkmode" != prog; then 50908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-l' is ignored for archives/objects" 50918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 50928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 50938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-l' '' "$deplib" 50948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 50958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib; then 50968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 50988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for searchdir in $searchdirs; do 51018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for search_ext in .la $std_shrext .so .a; do 51028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Search the libtool library 51038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib="$searchdir/lib${name}${search_ext}" 51048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$lib"; then 51058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$search_ext" = ".la"; then 51068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels found=yes 51078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 51088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels found=no 51098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 2 51118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 51138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 51148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$found" != yes; then 51158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # deplib doesn't seem to be a libtool library 51168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 51178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 51188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 51198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 51208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 51248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else # deplib is a libtool library 51258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need to do some special things here, and not later. 51278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps " in 51298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) 51308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_lalib_p "$lib"; then 51318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels library_names= 51328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_library= 51338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$lib" 51348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for l in $old_library $library_names; do 51358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ll="$l" 51368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 51378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$ll" = "X$old_library" ; then # only static version available 51388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels found=no 51398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$lib" "" "." 51408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ladir="$func_dirname_result" 51418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib=$ladir/$old_library 51428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 51438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 51448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 51458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 51468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 51508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 51538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) ;; 51548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 51558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; # -l 51588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.ltframework) 51598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 51608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 51618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 51628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 51638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib ; then 51658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$new_inherited_linker_flags " in 51668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 51678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 51698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 51728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 51738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) 51748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $linkmode in 51758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib) 51768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$pass" = conv && continue 51788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 51798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-L' '' "$deplib" 51808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 51818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 51828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prog) 51838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = conv; then 51848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 51868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = scan; then 51888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 51898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 51908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 51918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 51928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 51938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-L' '' "$deplib" 51948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 51958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 51968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 51978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-L' is ignored for archives/objects" 51988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 51998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # linkmode 52008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; # -L 52028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R*) 52038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = link; then 52048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '-R' '' "$deplib" 52058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir=$func_stripname_result 52068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure the xrpath contains only unique directories. 52078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$xrpath " in 52088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $dir "*) ;; 52098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) xrpath="$xrpath $dir" ;; 52108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 52118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 52138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) lib="$deplib" ;; 52168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$libext) 52178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = conv; then 52188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 52198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $linkmode in 52228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib) 52238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Linking convenience modules into shared libraries is allowed, 52248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # but linking other static libraries is non-portable. 52258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $dlpreconveniencelibs " in 52268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 52278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 52288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels valid_a_lib=no 52298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplibs_check_method in 52308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels match_pattern*) 52318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $deplibs_check_method; shift 52328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels | $EGREP "$match_pattern_regex" > /dev/null; then 52358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels valid_a_lib=yes 52368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pass_all) 52398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels valid_a_lib=yes 52408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 52428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$valid_a_lib" != yes; then 52438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 52448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 52468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 52478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 52488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** that it is just a static archive that I should not use here." 52508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 52518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 52528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the" 52538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** static library $deplib is not portable!" 52548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 52558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 52588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prog) 52618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" != link; then 52628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 52638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 52648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 52658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 52668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # linkmode 52708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; # *.$libext 52718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo | *.$objext) 52728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = conv; then 52738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 52748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$linkmode" = prog; then 52758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If there is no dlopen support or we're linking statically, 52778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # we need to preload. 52788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $deplib" 52798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 52808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 52818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 52828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles="$newdlfiles $deplib" 52838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels %DEPLIBS%) 52888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels alldeplibs=yes 52898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 52908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 52918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac # case $deplib 52928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 52938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$found" = yes || test -f "$lib"; then : 52948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 52958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 52978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 52988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see that this really is a libtool archive. 52998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lalib_unsafe_p "$lib" \ 53008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels || func_fatal_error "\`$lib' is not a valid libtool archive" 53018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$lib" "" "." 53038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ladir="$func_dirname_result" 53048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlname= 53068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopen= 53078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlpreopen= 53088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir= 53098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels library_names= 53108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_library= 53118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels inherited_linker_flags= 53128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the library was installed with an old release of libtool, 53138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # it will not redefine variables installed, or shouldnotlink 53148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels installed=yes 53158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shouldnotlink=no 53168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels avoidtemprpath= 53178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Read the .la file 53208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source "$lib" 53218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Convert "-framework foo" to "foo.ltframework" 53238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$inherited_linker_flags"; then 53248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_inherited_linker_flags " in 53278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $tmp_inherited_linker_flag "*) ;; 53288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 53308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 53318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "lib,link" || 53348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$linkmode,$pass" = "prog,scan" || 53358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = conv; then 53418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only check for convenience libraries 53428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$lib $deplibs" 53438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$libdir"; then 53448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$old_library"; then 53458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find name of link library for \`$lib'" 53468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # It is a libtool convenience library, so add in its objects. 53488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels convenience="$convenience $ladir/$objdir/$old_library" 53498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_convenience="$old_convenience $ladir/$objdir/$old_library" 53508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs= 53518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 53528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 53538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_duplicate_deps ; then 53548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$tmp_libs " in 53558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 53578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs="$tmp_libs $deplib" 53598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 53608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$linkmode" != prog && test "$linkmode" != lib; then 53618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$lib' is not a convenience library" 53628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 53648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $pass = conv 53658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Get the name of the library we link against. 53688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linklib= 53698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for l in $old_library $library_names; do 53708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linklib="$l" 53718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 53728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$linklib"; then 53738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot find name of link library for \`$lib'" 53748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This library was specified with -dlopen. 53778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = dlopen; then 53788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$libdir"; then 53798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dlname" || 53828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$dlopen_support" != yes || 53838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_libtool_libs" = no; then 53848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If there is no dlname, no dlopen support or we're linking 53858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # statically, we need to preload. We also need to preload any 53868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # dependent libraries so libltdl's deplib preloader doesn't 53878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # bomb out in the load deplibs phase. 53888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$dlprefiles $lib $dependency_libs" 53898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 53908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles="$newdlfiles $lib" 53918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 53928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 53938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $pass = dlopen 53948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 53958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need an absolute path. 53968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $ladir in 53978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 53998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels abs_ladir=`cd "$ladir" && pwd` 54008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$abs_ladir"; then 54018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "cannot determine absolute directory name of \`$ladir'" 54028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "passing it literally to the linker, although it might fail" 54038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels abs_ladir="$ladir" 54048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 54068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 54078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$lib" 54088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels laname="$func_basename_result" 54098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Find the relevant object directory and library name. 54118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$installed" = Xyes; then 54128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "library \`$lib' was moved." 54148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$ladir" 54158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir="$abs_ladir" 54168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir="$abs_ladir" 54178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$libdir" 54198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir="$libdir" 54208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$ladir" 54258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir="$abs_ladir" 54268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remove this search path later 54278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_path="$notinst_path $abs_ladir" 54288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$ladir/$objdir" 54308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir="$abs_ladir/$objdir" 54318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remove this search path later 54328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_path="$notinst_path $abs_ladir" 54338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $installed = yes 54358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname 'lib' '.la' "$laname" 54368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 54378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This library was specified with -dlpreopen. 54398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = dlpreopen; then 54408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$libdir" && test "$linkmode" = prog; then 54418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prefer using a static library (so that no silly _DYNAMIC symbols 54448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # are required to link). 54458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$old_library"; then 54468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$old_library" 54478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Keep a list of preopened convenience libraries to check 54488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # that they are being used correctly in the link pass. 54498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libdir" && \ 54508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Otherwise, use the dlname, so that lt_dlopen finds it. 54528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$dlname"; then 54538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$dlname" 54548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$linklib" 54568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $pass = dlpreopen 54588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$libdir"; then 54608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Link the convenience library 54618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib; then 54628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$dir/$old_library $deplibs" 54638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$linkmode,$pass" = "prog,link"; then 54648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$dir/$old_library $compile_deplibs" 54658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$dir/$old_library $finalize_deplibs" 54668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$lib $deplibs" # used for prog,scan pass 54688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 54708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog && test "$pass" != link; then 54748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path="$newlib_search_path $ladir" 54758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$lib $deplibs" 54768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linkalldeplibs=no 54788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$link_all_deplibs" != no || test -z "$library_names" || 54798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_libtool_libs" = no; then 54808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linkalldeplibs=yes 54818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 54838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs= 54848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 54858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 54868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) func_stripname '-L' '' "$deplib" 54878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 54888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 54898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 54908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Need to link against all dependency_libs? 54918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkalldeplibs" = yes; then 54928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 54938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 54948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Need to hardcode shared library paths 54958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # or/and link against static libraries 54968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 54978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 54988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_duplicate_deps ; then 54998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$tmp_libs " in 55008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 55018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs="$tmp_libs $deplib" 55048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # for deplib 55058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 55068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $linkmode = prog... 55078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 55088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 55098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$library_names" && 55108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { { test "$prefer_static_libs" = no || 55118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$prefer_static_libs,$installed" = "built,yes"; } || 55128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$old_library"; }; then 55138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need to hardcode the library path 55148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure the rpath contains only unique directories. 55168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$temp_rpath:" in 55178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *"$absdir:"*) ;; 55188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) temp_rpath="$temp_rpath$absdir:" ;; 55198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 55228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Hardcode the library path. 55238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Skip directories that are in the system default run-time 55248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # search path. 55258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $sys_lib_dlsearch_path " in 55268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $absdir "*) ;; 55278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 55288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$compile_rpath " in 55298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $absdir "*) ;; 55308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) compile_rpath="$compile_rpath $absdir" 55318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 55338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $sys_lib_dlsearch_path " in 55358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 55368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 55378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$finalize_rpath " in 55388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 55398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" 55408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 55428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # $linkmode,$pass = prog,link... 55448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 55458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$alldeplibs" = yes && 55468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test "$deplibs_check_method" = pass_all || 55478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test "$build_libtool_libs" = yes && 55488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$library_names"; }; }; then 55498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We only need to search for static libraries 55508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 55518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 55548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_static=no # Whether the deplib will be linked statically 55558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels use_static_libs=$prefer_static_libs 55568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$use_static_libs" = built && test "$installed" = yes; then 55578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels use_static_libs=no 55588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$library_names" && 55608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test "$use_static_libs" = no || test -z "$old_library"; }; then 55618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 55628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* | *cegcc*) 55638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # No point in relinking DLLs because paths are not encoded 55648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_deplibs="$notinst_deplibs $lib" 55658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels need_relink=no 55668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 55678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 55688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$installed" = no; then 55698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels notinst_deplibs="$notinst_deplibs $lib" 55708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels need_relink=yes 55718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 55738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 55748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This is a shared library 55758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 55768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Warn about portability, can't link against -module's on some 55778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # systems (darwin). Don't bleat about dlopened modules though! 55788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopenmodule="" 55798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dlpremoduletest in $dlprefiles; do 55808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$dlpremoduletest" = "X$lib"; then 55818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlopenmodule="$dlpremoduletest" 55828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 55838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 55858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 55878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog; then 55888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: Linking the executable $output against the loadable module" 55898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 55908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** $linklib is not portable!" 55938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 55948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib && 55958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$hardcode_into_libs" = yes; then 55968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Hardcode the library path. 55978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Skip directories that are in the system default run-time 55988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # search path. 55998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $sys_lib_dlsearch_path " in 56008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $absdir "*) ;; 56018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 56028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$compile_rpath " in 56038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $absdir "*) ;; 56048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) compile_rpath="$compile_rpath $absdir" 56058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 56068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 56078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 56088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $sys_lib_dlsearch_path " in 56098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 56108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 56118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$finalize_rpath " in 56128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 56138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" 56148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 56158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 56168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 56178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 56198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$old_archive_from_expsyms_cmds"; then 56208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # figure out the soname 56218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $library_names 56228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 56238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels realname="$1" 56248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 56258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 56268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # use dlname if we got it. it's perfectly good, no? 56278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlname"; then 56288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels soname="$dlname" 56298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$soname_spec"; then 56308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # bleh windows 56318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 56328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | mingw* | *cegcc*) 56338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 56348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=$func_arith_result 56358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="-$major" 56368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 56378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 56388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval soname=\"$soname_spec\" 56398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 56408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels soname="$realname" 56418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 56438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make a new name for the extract_expsyms_cmds to use 56448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels soroot="$soname" 56458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$soroot" 56468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels soname="$func_basename_result" 56478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname 'lib' '.dll' "$soname" 56488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib=libimp-$func_stripname_result.a 56498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 56508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the library has no export list, then create one now 56518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$output_objdir/$soname-def"; then : 56528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 56538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "extracting exported symbol list from \`$soname'" 56548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 56578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Create $newlib 56588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$output_objdir/$newlib"; then :; else 56598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "generating import library for \`$soname'" 56608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # make sure the library variables are pointing to the new library 56638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir=$output_objdir 56648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linklib=$newlib 56658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # test -n "$old_archive_from_expsyms_cmds" 56668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 56678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog || test "$mode" != relink; then 56688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_shlibpath= 56698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir= 56708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add= 56718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_linked=yes 56728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $hardcode_action in 56738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels immediate | unsupported) 56748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_direct" = no; then 56758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$dir/$linklib" 56768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 56778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-unixware7*) add_dir="-L$dir" ;; 56818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-darwin* ) 56828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # if the lib is a (non-dlopened) module then we can not 56838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # link against it, someone is ignoring the earlier warnings 56848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if /usr/bin/file -L $add 2> /dev/null | 56858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP ": [^:]* bundle" >/dev/null ; then 56868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$dlopenmodule" != "X$lib"; then 56878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$old_library" ; then 56898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 56908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** And there doesn't seem to be a static archive available" 56918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** The link will probably fail, sorry" 56928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 56938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$dir/$old_library" 56948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$old_library"; then 56968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$dir/$old_library" 56978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 56998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_minus_L" = no; then 57018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 57028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sunos*) add_shlibpath="$dir" ;; 57038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="-L$dir" 57058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_shlibpath_var" = no; then 57078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_shlibpath="$dir" 57088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 57108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_linked=no 57118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 57138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink) 57148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_direct" = yes && 57158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$hardcode_direct_absolute" = no; then 57168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$dir/$linklib" 57178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_minus_L" = yes; then 57188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="-L$dir" 57198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try looking first in the location we're being installed to. 57208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$inst_prefix_dir"; then 57218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $libdir in 57228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]*) 57238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="$add_dir -L$inst_prefix_dir$libdir" 57248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 57258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_shlibpath_var" = yes; then 57298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_shlibpath="$dir" 57308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 57328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_linked=no 57338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 57358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) lib_linked=no ;; 57368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 57388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$lib_linked" != yes; then 57398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "unsupported hardcode properties" 57408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 57428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$add_shlibpath"; then 57438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$compile_shlibpath: in 57448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$add_shlibpath:"*) ;; 57458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog; then 57498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add" && compile_deplibs="$add $compile_deplibs" 57518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 57528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add_dir" && deplibs="$add_dir $deplibs" 57538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add" && deplibs="$add $deplibs" 57548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_direct" != yes && 57558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$hardcode_minus_L" != yes && 57568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$hardcode_shlibpath_var" = yes; then 57578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$finalize_shlibpath: in 57588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$libdir:"*) ;; 57598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 57658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog || test "$mode" = relink; then 57668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_shlibpath= 57678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir= 57688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add= 57698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Finalize command for both is simple: just hardcode it. 57708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_direct" = yes && 57718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$hardcode_direct_absolute" = no; then 57728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$libdir/$linklib" 57738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_minus_L" = yes; then 57748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="-L$libdir" 57758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_shlibpath_var" = yes; then 57778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$finalize_shlibpath: in 57788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$libdir:"*) ;; 57798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 57828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$hardcode_automatic" = yes; then 57838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$inst_prefix_dir" && 57848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$inst_prefix_dir$libdir/$linklib" ; then 57858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$inst_prefix_dir$libdir/$linklib" 57868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 57878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="$libdir/$linklib" 57888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 57898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 57908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We cannot seem to hardcode it, guess we'll fake it. 57918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="-L$libdir" 57928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try looking first in the location we're being installed to. 57938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$inst_prefix_dir"; then 57948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $libdir in 57958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]*) 57968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add_dir="$add_dir -L$inst_prefix_dir$libdir" 57978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 57988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 57998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels add="-l$name" 58018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 58038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog; then 58048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 58078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add_dir" && deplibs="$add_dir $deplibs" 58088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$add" && deplibs="$add $deplibs" 58098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$linkmode" = prog; then 58128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Here we assume that one of hardcode_direct or hardcode_minus_L 58138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # is not unsupported. This is valid on all known static and 58148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # shared platforms. 58158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_direct" != unsupported; then 58168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$old_library" && linklib="$old_library" 58178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$dir/$linklib $compile_deplibs" 58188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$dir/$linklib $finalize_deplibs" 58198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 58208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="-l$name -L$dir $compile_deplibs" 58218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$build_libtool_libs" = yes; then 58248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Not a shared library 58258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$deplibs_check_method" != pass_all; then 58268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We're trying link a shared library against a static one 58278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # but the system doesn't support it. 58288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 58298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just print a warning and add the library to dependency_libs so 58308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # that the program can be linked against the static library. 58318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 58328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: This system can not link to static lib archive $lib." 58338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 58348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 58358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have." 58368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$module" = yes; then 58378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** But as you try to build a module library, libtool will still create " 58388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** a static module, that should work as long as the dlopening application" 58398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$global_symbol_pipe"; then 58418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 58428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** However, this would only work if libtool was able to extract symbol" 58438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** not find such a program. So, this module is probably useless." 58458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = no; then 58488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=module 58498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 58508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 58518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 58528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 58558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$dir/$old_library $deplibs" 58568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_static=yes 58578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # link shared/static library? 58598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 58608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = lib; then 58618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dependency_libs" && 58628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test "$hardcode_into_libs" != yes || 58638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_old_libs" = yes || 58648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$link_static" = yes; }; then 58658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Extract -R from dependency_libs 58668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels temp_deplibs= 58678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $dependency_libs; do 58688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $libdir in 58698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R*) func_stripname '-R' '' "$libdir" 58708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels temp_xrpath=$func_stripname_result 58718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $xrpath " in 58728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $temp_xrpath "*) ;; 58738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) xrpath="$xrpath $temp_xrpath";; 58748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac;; 58758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) temp_deplibs="$temp_deplibs $libdir";; 58768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 58778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 58788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs="$temp_deplibs" 58798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 58818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path="$newlib_search_path $absdir" 58828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Link against this library 58838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # ... and its dependency_libs 58858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs= 58868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 58878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 58888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $opt_duplicate_deps ; then 58898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$tmp_libs " in 58908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 58928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 58938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs="$tmp_libs $deplib" 58948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 58958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 58968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$link_all_deplibs" != no; then 58978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the search paths of all dependency libraries 58988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 58998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path= 59008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 59018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) path="$deplib" ;; 59028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 59038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$deplib" "" "." 59048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$func_dirname_result" 59058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We need an absolute path. 59068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $dir in 59078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 59098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir=`cd "$dir" && pwd` 59108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$absdir"; then 59118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "cannot determine absolute directory name of \`$dir'" 59128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels absdir="$dir" 59138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 59158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 59168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $GREP "^installed=no" $deplib > /dev/null; then 59178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 59188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-darwin*) 59198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels depdepl= 59208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$deplibrary_names" ; then 59228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for tmp in $deplibrary_names ; do 59238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels depdepl=$tmp 59248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 59258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$absdir/$objdir/$depdepl" ; then 59268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels depdepl="$absdir/$objdir/$depdepl" 59278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$darwin_install_name"; then 59298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path= 59348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 59378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 59388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path="-L$absdir/$objdir" 59398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 59408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 59418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 59428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libdir" && \ 59448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$deplib' is not a valid libtool archive" 59458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$absdir" != "$libdir" && \ 59468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`$deplib' seems to be moved" 59478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 59488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels path="-L$absdir" 59498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 59518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 59528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $deplibs " in 59538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $path "*) ;; 59548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) deplibs="$path $deplibs" ;; 59558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 59568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 59578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # link_all_deplibs != no 59588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi # linkmode = lib 59598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # for deplib in $libs 59608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = link; then 59618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = "prog"; then 59628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 59658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs="$newdependency_libs" 59698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" = dlpreopen; then 59708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Link the dlpreopened libraries before other libraries 59718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $save_deplibs; do 59728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplib $deplibs" 59738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 59748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" != dlopen; then 59768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$pass" != conv; then 59778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure lib_search_path contains only unique directories. 59788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib_search_path= 59798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir in $newlib_search_path; do 59808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$lib_search_path " in 59818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $dir "*) ;; 59828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) lib_search_path="$lib_search_path $dir" ;; 59838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 59848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 59858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newlib_search_path= 59868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 59888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode,$pass" != "prog,link"; then 59898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vars="deplibs" 59908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 59918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels vars="compile_deplibs finalize_deplibs" 59928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 59938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for var in $vars dependency_libs; do 59948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add libraries to $var in reverse order 59958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval tmp_libs=\"\$$var\" 59968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_libs= 59978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $tmp_libs; do 59988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: Pedantically, this is the right thing to do, so 59998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # that some nasty dependency loop isn't accidentally 60008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # broken: 60018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #new_libs="$deplib $new_libs" 60028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Pragmatically, this seems to cause very few problems in 60038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # practice: 60048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 60058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) new_libs="$deplib $new_libs" ;; 60068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -R*) ;; 60078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 60088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # And here is the reason: when a library appears more 60098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # than once as an explicit dependence of a library, or 60108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # is implicitly linked in more than once by the 60118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # compiler, it is considered special, and multiple 60128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # occurrences thereof are not removed. Compare this 60138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # with having the same library being listed as a 60148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # dependency of multiple other libraries: in this case, 60158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # we know (pedantically, we assume) the library does not 60168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # need to be listed more than once, so we keep only the 60178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # last copy. This is not always right, but it is rare 60188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # enough that we require users that really mean to play 60198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # such unportable linking tricks to link the library 60208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # using -Wl,-lname, so that libtool does not consider it 60218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # for duplicate removal. 60228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $specialdeplibs " in 60238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) new_libs="$deplib $new_libs" ;; 60248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 60258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_libs " in 60268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 60278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_libs="$deplib $new_libs" ;; 60288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 60308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 60328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 60348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs= 60358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $new_libs; do 60368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 60378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) 60388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $tmp_libs " in 60398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 60408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) tmp_libs="$tmp_libs $deplib" ;; 60418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 60438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) tmp_libs="$tmp_libs $deplib" ;; 60448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 60468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval $var=\"$tmp_libs\" 60478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # for var 60488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 60498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Last step: remove runtime libs from dependency_libs 60508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # (they stay in deplibs) 60518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs= 60528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $dependency_libs ; do 60538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps $compiler_lib_search_path " in 60548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $i "*) 60558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels i="" 60568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 60578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$i" ; then 60598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_libs="$tmp_libs $i" 60608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 60618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 60628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs=$tmp_libs 60638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # for pass 60648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog; then 60658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$newdlfiles" 60668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 60678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$linkmode" = prog || test "$linkmode" = lib; then 60688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$newdlprefiles" 60698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 60708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $linkmode in 60728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlib) 60738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-dlopen' is ignored for archives" 60758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 60768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $deplibs" in 60788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *\ -l* | *\ -L*) 60798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-l' and \`-L' are ignored for archives" ;; 60808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 60818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$rpath" && \ 60838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-rpath' is ignored for archives" 60848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$xrpath" && \ 60868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-R' is ignored for archives" 60878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$vinfo" && \ 60898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-version-info/-version-number' is ignored for archives" 60908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$release" && \ 60928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-release' is ignored for archives" 60938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$export_symbols$export_symbols_regex" && \ 60958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-export-symbols' is ignored for archives" 60968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 60978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now set the variables for building old libraries. 60988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 60998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs="$output" 61008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objs="$objs$old_deplibs" 61018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 61028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib) 61048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure we only generate libraries of the form `libNAME.la'. 61058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $outputname in 61068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib*) 61078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname 'lib' '.la' "$outputname" 61088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 61098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 61108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libname=\"$libname_spec\" 61118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 61128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 61138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$module" = no && \ 61148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "libtool library \`$output' must begin with \`lib'" 61158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_lib_prefix" != no; then 61178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add the "lib" prefix for modules if required 61188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.la' "$outputname" 61198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 61208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 61218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libname=\"$libname_spec\" 61228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 61238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.la' "$outputname" 61248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=$func_stripname_result 61258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 61268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 61278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 61288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$objs"; then 61308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$deplibs_check_method" != pass_all; then 61318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 61338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 61348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** objects $objs is not portable!" 61368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs="$libobjs $objs" 61378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 61388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 61398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$dlself" != no && \ 61418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-dlopen self' is ignored for libtool libraries" 61428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $rpath 61448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 61458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$#" -gt 1 && \ 61468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "ignoring multiple \`-rpath's for a libtool library" 61478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels install_libdir="$1" 61498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs= 61518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$rpath"; then 61528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 61538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Building a libtool convenience library. 61548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Some compilers have problems with a `.al' extension so 61558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # convenience libraries should have the same extension an 61568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # archive normally would. 61578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs="$output_objdir/$libname.$libext $oldlibs" 61588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=convenience 61598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 61608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 61618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$vinfo" && \ 61638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$release" && \ 61668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-release' is ignored for convenience libraries" 61678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 61688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Parse the version information argument. 61708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS=':' 61718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $vinfo 0 0 0 61728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 61738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 61748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$7" && \ 61768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "too many parameters to \`-version-info'" 61778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # convert absolute version numbers to libtool ages 61798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # this retains compatibility with .la files and attempts 61808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # to make the code below a bit more comprehensible 61818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 61828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $vinfo_number in 61838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels yes) 61848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels number_major="$1" 61858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels number_minor="$2" 61868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels number_revision="$3" 61878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # 61888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # There are really only two kinds -- those that 61898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # use the current revision as the major version 61908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # and those that subtract age and use age as 61918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # a minor version. But, then there is irix 61928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # which has an extra 1 added just for fun 61938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # 61948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $version_type in 61958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin|linux|osf|windows|none) 61968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $number_major + $number_minor 61978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels current=$func_arith_result 61988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels age="$number_minor" 61998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels revision="$number_revision" 62008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels freebsd-aout|freebsd-elf|sunos) 62028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels current="$number_major" 62038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels revision="$number_minor" 62048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels age="0" 62058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels irix|nonstopux) 62078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $number_major + $number_minor 62088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels current=$func_arith_result 62098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels age="$number_minor" 62108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels revision="$number_minor" 62118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_irix_increment=no 62128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 62148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "$modename: unknown library version type \`$version_type'" 62158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels no) 62198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels current="$1" 62208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels revision="$2" 62218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels age="$3" 62228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check that each of the things are valid numbers. 62268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $current in 62278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 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]) ;; 62288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 62298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "CURRENT \`$current' must be a nonnegative integer" 62308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 62318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $revision in 62358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 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]) ;; 62368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 62378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "REVISION \`$revision' must be a nonnegative integer" 62388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 62398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $age in 62438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 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]) ;; 62448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 62458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "AGE \`$age' must be a nonnegative integer" 62468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 62478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$age" -gt "$current"; then 62518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_error "AGE \`$age' is greater than the current interface number \`$current'" 62528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 62538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 62548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Calculate the version variables. 62568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major= 62578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix= 62588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring= 62598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $version_type in 62608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels none) ;; 62618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin) 62638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Like Linux, but with the current version available in 62648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # verstring for coding it into the library header 62658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 62668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=.$func_arith_result 62678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="$major.$age.$revision" 62688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Darwin ld doesn't like 0 for these options... 62698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current + 1 62708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels minor_current=$func_arith_result 62718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels freebsd-aout) 62768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=".$current" 62778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".$current.$revision"; 62788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels freebsd-elf) 62818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=".$current" 62828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".$current" 62838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 62848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels irix | nonstopux) 62868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$lt_irix_increment" = "Xno"; then 62878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 62888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 62898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age + 1 62908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 62918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=$func_arith_result 62928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $version_type in 62948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels nonstopux) verstring_prefix=nonstopux ;; 62958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) verstring_prefix=sgi ;; 62968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 62978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="$verstring_prefix$major.$revision" 62988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 62998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add in all the interfaces that we are compatible with. 63008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels loop=$revision 63018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test "$loop" -ne 0; do 63028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $revision - $loop 63038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels iface=$func_arith_result 63048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $loop - 1 63058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels loop=$func_arith_result 63068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="$verstring_prefix$major.$iface:$verstring" 63078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 63088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Before this point, $major must not contain `.'. 63108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=.$major 63118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="$major.$revision" 63128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linux) 63158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 63168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=.$func_arith_result 63178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="$major.$age.$revision" 63188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels osf) 63218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 63228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=.$func_arith_result 63238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".$current.$age.$revision" 63248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="$current.$age.$revision" 63258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add in all the interfaces that we are compatible with. 63278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels loop=$age 63288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test "$loop" -ne 0; do 63298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $loop 63308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels iface=$func_arith_result 63318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $loop - 1 63328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels loop=$func_arith_result 63338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="$verstring:${iface}.0" 63348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 63358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make executables depend on our current version. 63378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="$verstring:${current}.0" 63388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels qnx) 63418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=".$current" 63428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".$current" 63438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels sunos) 63468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=".$current" 63478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".$current.$revision" 63488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels windows) 63518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Use '-' rather than '.', since we only want one 63528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # extension on DOS 8.3 filesystems. 63538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $current - $age 63548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=$func_arith_result 63558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="-$major" 63568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 63598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_configuration "unknown library version type \`$version_type'" 63608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 63628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Clear the version info if we defaulted, and they specified a release. 63648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$vinfo" && test -n "$release"; then 63658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major= 63668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $version_type in 63678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels darwin) 63688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # we can't check for "0.0" in archive_cmds due to quoting 63698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # problems, so we reset it completely 63708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring= 63718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 63738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="0.0" 63748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 63758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 63768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_version" = no; then 63778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix= 63788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 63798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=".0.0" 63808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 63818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 63828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remove version info from name if versioning should be avoided 63848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$avoid_version" = yes && test "$need_version" = no; then 63858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major= 63868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix= 63878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels verstring="" 63888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 63898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 63908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Check to see if the archive will have undefined symbols. 63918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$allow_undefined" = yes; then 63928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$allow_undefined_flag" = unsupported; then 63938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "undefined symbols not allowed in $host shared libraries" 63948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 63958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 63968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 63978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 63988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't allow undefined symbols. 63998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels allow_undefined_flag="$no_undefined_flag" 64008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_generate_dlsyms "$libname" "$libname" "yes" 64058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs="$libobjs $symfileobj" 64068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 64078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" != relink; then 64098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remove our outputs, but don't remove object files since they 64108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # may have been created when compiling PIC objects. 64118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist= 64128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tempremovelist=`$ECHO "$output_objdir/*"` 64138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for p in $tempremovelist; do 64148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $p in 64158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.$objext | *.gcno) 64168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$precious_files_regex" != "X"; then 64198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels then 64218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 64228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels removelist="$removelist $p" 64258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) ;; 64278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 64288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 64298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$removelist" && \ 64308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "${RM}r \$removelist" 64318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now set the variables for building old libraries. 64348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs="$oldlibs $output_objdir/$libname.$libext" 64368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform .lo files to .o files. 64388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Eliminate all temporary directories. 64428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #for path in $notinst_path; do 64438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels #done 64478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$xrpath"; then 64498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the user specified any rpath flags, then add them. 64508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels temp_xrpath= 64518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $xrpath; do 64528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels temp_xrpath="$temp_xrpath -R$libdir" 64538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$finalize_rpath " in 64548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 64558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" ;; 64568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 64578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 64588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs="$temp_xrpath $dependency_libs" 64608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 64628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure dlfiles contains only unique files that won't be dlpreopened 64648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_dlfiles="$dlfiles" 64658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles= 64668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $old_dlfiles; do 64678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $dlprefiles $dlfiles " in 64688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $lib "*) ;; 64698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dlfiles="$dlfiles $lib" ;; 64708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 64718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 64728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure dlprefiles contains only unique files 64748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_dlprefiles="$dlprefiles" 64758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles= 64768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $old_dlprefiles; do 64778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$dlprefiles " in 64788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $lib "*) ;; 64798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dlprefiles="$dlprefiles $lib" ;; 64808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 64818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 64828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 64838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 64848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$rpath"; then 64858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 64868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # these systems don't actually have a c library (as such)! 64888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 64908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Rhapsody C library is in the System framework 64918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs System.ltframework" 64928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-netbsd*) 64948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't link with libc until the a.out ld.so is fixed. 64958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do not include libc due to us having libc/libc_r. 64988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 64998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sco3.2v5* | *-*-sco5v6*) 65008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Causes problems with __ctype 65018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 65038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Compiler inserts libc in the correct place for threads to work 65048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 65068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add libc to deplibs on all other systems if necessary. 65078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_need_lc" = "yes"; then 65088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$deplibs -lc" 65098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 65108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 65128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 65138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 65148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform deplibs into only deplibs that can be linked in shared. 65158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name_save=$name 65168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname_save=$libname 65178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release_save=$release 65188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix_save=$versuffix 65198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major_save=$major 65208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # I'm not sure if I'm treating the release correctly. I think 65218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # release should show up in the -l (ie -lgmp5) so we don't want to 65228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # add it in twice. Is that correct? 65238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release="" 65248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix="" 65258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major="" 65268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs= 65278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=no 65288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplibs_check_method in 65298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels pass_all) 65308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't check for shared/static. Everything works. 65318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This might be a little naive. We might want to check 65328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # whether the library exists or not. But this is on 65338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # osf3 & osf4 and I'm not really sure... Just 65348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # implementing what was already the behavior. 65358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs=$deplibs 65368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test_compile) 65388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This code stresses the "libraries are programs" paradigm to its 65398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # limits. Maybe even breaks it. We compile a program, linking it 65408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # against the deplibs as a proxy for the library. Then we can check 65418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # whether they linked in statically or dynamically with ldd. 65428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM conftest.c 65438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cat > conftest.c <<EOF 65448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels int main() { return 0; } 65458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF 65468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM conftest 65478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ldd_output=`ldd conftest` 65498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $deplibs; do 65508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $i in 65518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 65528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname -l '' "$i" 65538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 65548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps " in 65568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $i "*) 65578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 65588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels i="" 65598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 65618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 65628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$i" ; then 65638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 65648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $deplib_matches; shift 65668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplib_match=$1 65678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 65698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 65708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 65718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 65728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 65748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 65758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which I believe you do not have" 65768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 65798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 65808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 65828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 65838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 65848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 65858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 65868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 65878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Error occurred in the first compile. Let's try to salvage 65888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the situation: Compile a separate program for each library. 65898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $deplibs; do 65908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $i in 65918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 65928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname -l '' "$i" 65938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 65948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM conftest 65958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ldd_output=`ldd conftest` 65978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps " in 65998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $i "*) 66008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 66018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels i="" 66028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 66038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 66048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$i" ; then 66068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 66078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $deplib_matches; shift 66098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplib_match=$1 66108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 66128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 66138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 66148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 66158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 66178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 66188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 66198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 66248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 66258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 66268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** make it link in! You will probably need to install it or some" 66288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** library that it depends on before this library will be fully" 66298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** functional. Installing it before continuing would be even better." 66308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 66328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 66338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $i" 66348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 66358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 66368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 66378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 66398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file_magic*) 66408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $deplibs_check_method; shift 66418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for a_deplib in $deplibs; do 66438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $a_deplib in 66448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 66458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname -l '' "$a_deplib" 66468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 66478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps " in 66498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $a_deplib "*) 66508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 66518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels a_deplib="" 66528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 66538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 66548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$a_deplib" ; then 66568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 66578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for potent_lib in $potential_libs; do 66608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Follow soft links. 66618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ls -lLd "$potent_lib" 2>/dev/null | 66628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP " -> " >/dev/null; then 66638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 66648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The statement above tries to avoid entering an 66668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # endless loop below, in case of cyclic links. 66678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We might still enter an endless loop, since a link 66688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # loop can be closed while we follow links, 66698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # but so what? 66708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels potlib="$potent_lib" 66718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while test -h "$potlib" 2>/dev/null; do 66728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $potliblink in 66748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 66778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 66788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $SED -e 10q | 66808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $EGREP "$file_magic_regex" > /dev/null; then 66818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 66828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels a_deplib="" 66838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 2 66848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 66868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 66878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 66888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$a_deplib" ; then 66898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 66908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 66918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 66938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 66948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 66958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because I did check the linker path looking for a file starting" 66968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$potlib" ; then 66978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 66998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** with $libname and none of the candidates passed a file format test" 67008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** using a file magic. Last file checked: $potlib" 67018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 67058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add a -L argument. 67068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 67078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 67098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # Gone through all deplibs. 67108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels match_pattern*) 67128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $deplibs_check_method; shift 67138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for a_deplib in $deplibs; do 67158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $a_deplib in 67168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -l*) 67178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname -l '' "$a_deplib" 67188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$func_stripname_result 67198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $predeps $postdeps " in 67218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $a_deplib "*) 67228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 67238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels a_deplib="" 67248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 67268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$a_deplib" ; then 67288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 67298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for potent_lib in $potential_libs; do 67328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels potlib="$potent_lib" # see symlink-check above in file_magic test 67338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $EGREP "$match_pattern_regex" > /dev/null; then 67358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 67368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels a_deplib="" 67378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 2 67388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 67408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 67418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$a_deplib" ; then 67438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 67448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 67458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 67478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 67488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 67498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because I did check the linker path looking for a file starting" 67508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$potlib" ; then 67518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 67538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** with $libname and none of the candidates passed a file format test" 67548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** using a regex pattern. Last file checked: $potlib" 67558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 67598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add a -L argument. 67608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 67618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 67638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done # Gone through all deplibs. 67648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels none | unknown | *) 67668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs="" 67678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for i in $predeps $postdeps ; do 67718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # can't use Xsed below, because $i might contain '/' 67728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 67748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $GREP . >/dev/null; then 67778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 67788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$deplibs_check_method" = "Xnone"; then 67798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 67818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** All declared inter-library dependencies are being dropped." 67848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels droppeddeps=yes 67858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 67868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 67888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels versuffix=$versuffix_save 67898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels major=$major_save 67908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels release=$release_save 67918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libname=$libname_save 67928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name=$name_save 67938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 67948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 67958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 67968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # On Rhapsody replace the C library with the System framework 67978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 67998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$droppeddeps" = yes; then 68028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$module" = yes; then 68038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 68048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 68058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 68068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** a static module, that should work as long as the dlopening" 68078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** application is linked with the -dlopen flag." 68088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$global_symbol_pipe"; then 68098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 68108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** However, this would only work if libtool was able to extract symbol" 68118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** not find such a program. So, this module is probably useless." 68138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = no; then 68168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs="$output_objdir/$libname.$libext" 68178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=module 68188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 68198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 68208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 68218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 68238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** The inter-library dependencies that have been dropped here will be" 68248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** automatically added whenever a program is linked with this library" 68258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** or is declared to -dlopen it." 68268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$allow_undefined" = no; then 68288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 68298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** Since this library must not contain undefined symbols," 68308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** because either the platform does not support them or" 68318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** it was explicitly requested with -no-undefined," 68328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "*** libtool will only create a static version of it." 68338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_old_libs" = no; then 68348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldlibs="$output_objdir/$libname.$libext" 68358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=module 68368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_old_libs=yes 68378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 68388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 68398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Done checking deplibs! 68448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs=$newdeplibs 68458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 68468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 68488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-darwin*) 68498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 68538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # move library search paths that coincide with paths to not yet 68568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # installed libraries to the beginning of the library search list 68578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_libs= 68588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for path in $notinst_path; do 68598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_libs " in 68608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -L$path/$objdir "*) ;; 68618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 68628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $deplibs " in 68638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -L$path/$objdir "*) 68648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_libs="$new_libs -L$path/$objdir" ;; 68658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 68678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 68698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $deplibs; do 68708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 68718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) 68728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_libs " in 68738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 68748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 68758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 68778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 68788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 68798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 68808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$new_libs" 68818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # All the library-specific variables (install_libdir is set above). 68838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels library_names= 68848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_library= 68858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlname= 68868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 68878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Test again, we may have decided not to build it any more 68888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = yes; then 68898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_into_libs" = yes; then 68908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Hardcode the library paths 68918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs= 68928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dep_rpath= 68938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$finalize_rpath" 68948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$mode" != relink && rpath="$compile_rpath$rpath" 68958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $rpath; do 68968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 68978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 68988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$hardcode_libdirs"; then 68998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$libdir" 69008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 69018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just accumulate the unique libdirs. 69028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 69038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 69048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 69058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 69068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 69088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 69098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 69118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 69128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dep_rpath="$dep_rpath $flag" 69138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$runpath_var"; then 69158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$perm_rpath " in 69168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 69178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) perm_rpath="$perm_rpath $libdir" ;; 69188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 69198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 69218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 69228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator" && 69238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$hardcode_libdirs"; then 69248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir="$hardcode_libdirs" 69258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_flag_spec_ld"; then 69268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 69288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$runpath_var" && test -n "$perm_rpath"; then 69328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We should set the runpath_var. 69338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 69348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir in $perm_rpath; do 69358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$rpath$dir:" 69368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 69378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 69408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shlibpath="$finalize_shlibpath" 69438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$shlibpath"; then 69458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Get the real and link names of the library. 69498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 69508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval library_names=\"$library_names_spec\" 69518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set dummy $library_names 69528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 69538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels realname="$1" 69548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 69558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$soname_spec"; then 69578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval soname=\"$soname_spec\" 69588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 69598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels soname="$realname" 69608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$dlname"; then 69628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlname=$soname 69638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lib="$output_objdir/$realname" 69668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linknames= 69678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for link 69688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 69698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linknames="$linknames $link" 69708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 69718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Use standard objects if they are pic 69738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 69758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles= 69778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 69788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols="$output_objdir/$libname.uexp" 69808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $export_symbols" 69818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 69838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels orig_export_symbols= 69848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host_os in 69858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cygwin* | mingw* | cegcc*) 69868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # exporting using user supplied symfile 69888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # and it's NOT already a .def file. Must figure out 69908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # which of the given symbols are data symbols and tag 69918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # them as such. So, trigger use of export_symbols_cmds. 69928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # export_symbols gets reassigned inside the "prepare 69938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the list of exported symbols" if statement, so the 69948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # include_expsyms logic still works. 69958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels orig_export_symbols="$export_symbols" 69968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols= 69978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels always_export_symbols=yes 69988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 69998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 70018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 70028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Prepare the list of exported symbols 70048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$export_symbols"; then 70058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 70068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "generating symbol list for \`$libname.la'" 70078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols="$output_objdir/$libname.exp" 70088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $export_symbols 70098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$export_symbols_cmds 70108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS='~' 70118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for cmd in $cmds; do 70128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 70138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmd=\"$cmd\" 70148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $cmd" 70158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_len_result 70168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$cmd" 'exit $?' 70188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels skipped_export=false 70198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 70208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The command line is too long to execute in one step. 70218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "using reloadable object file for export list..." 70228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels skipped_export=: 70238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Break out early, otherwise skipped_export may be 70248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # set to false by a later but shorter cmd. 70258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 70268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 70288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 70298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 70378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_export_symbols="$export_symbols" 70388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The given exports_symbols file has to be filtered, so filter it. 70448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: $output_objdir/$libname.filter potentially contains lots of 70468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # 's' commands which not all seds can handle. GNU sed should be fine 70478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # though. Also, the filter scales superlinearly with the number of 70488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # global variables. join(1) would be nice here, but unfortunately 70498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # isn't a blessed tool. 70508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols=$output_objdir/$libname.def 70538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs= 70578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for test_deplib in $deplibs; do 70588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $convenience " in 70598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $test_deplib "*) ;; 70608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 70618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_deplibs="$tmp_deplibs $test_deplib" 70628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 70638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 70648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 70658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels deplibs="$tmp_deplibs" 70668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$convenience"; then 70688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$whole_archive_flag_spec" && 70698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$compiler_needs_object" = yes && 70708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libobjs"; then 70718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # extract the archives, so we have objects to list. 70728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # TODO: could optimize this to just extract one archive. 70738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels whole_archive_flag_spec= 70748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$whole_archive_flag_spec"; then 70768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_libobjs=$libobjs 70778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 70798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 70808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${outputname}x" 70818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 70828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives $gentop $convenience 70848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs="$libobjs $func_extract_archives_result" 70858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 70868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval flag=\"$thread_safe_flag_spec\" 70918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels linker_flags="$linker_flags $flag" 70928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make a backup of the uninstalled library when relinking 70958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = relink; then 70968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 70988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 70998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each of the archive commands. 71008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$module" = yes && test -n "$module_cmds" ; then 71018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 71028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$module_expsym_cmds\" 71038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$module_expsym_cmds 71048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$module_cmds\" 71068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$module_cmds 71078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 71088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$archive_expsym_cmds\" 71118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$archive_expsym_cmds 71128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$archive_cmds\" 71148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$archive_cmds 71158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 71168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 71178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 71188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$skipped_export" != "X:" && 71198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $test_cmds" && 71208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_len_result && 71218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 71238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The command line is too long to link in one step, link piecewise 71258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # or, if using GNU ld and skipped_export is not :, use a linker 71268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # script. 71278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 71288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Save the value of $output and $libobjs because we want to 71298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # use them later. If we have whole_archive_flag_spec, we 71308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # want to use save_libobjs as it was before 71318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # whole_archive_flag_spec was expanded, because we can't 71328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # assume the linker understands whole_archive_flag_spec. 71338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This may have to be revisited, in case too many 71348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # convenience libraries get linked in and end up exceeding 71358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the spec. 71368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_libobjs=$libobjs 71388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 71398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_output=$output 71408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 71418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 71428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Clear the reloadable object creation command queue and 71438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # initialize k to one. 71448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test_cmds= 71458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_cmds= 71468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objlist= 71478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels last_robj= 71488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels k=1 71498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 71508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=${output_objdir}/${output_la}.lnkscript 71528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating GNU ld script: $output" 71538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO 'INPUT (' > $output 71548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj in $save_libobjs 71558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 71568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$obj" >> $output 71578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 71588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO ')' >> $output 71598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $output" 71608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=${output_objdir}/${output_la}.lnk 71628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating linker input file list: $output" 71638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : > $output 71648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels set x $save_libobjs 71658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 71668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels firstobj= 71678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$compiler_needs_object" = yes; then 71688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels firstobj="$1 " 71698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels shift 71708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 71718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj 71728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 71738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$obj" >> $output 71748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 71758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $output" 71768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$firstobj\"$file_list_spec$output\" 71778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$save_libobjs"; then 71798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating reloadable object files..." 71808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$output_objdir/$output_la-${k}.$objext 71818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$reload_cmds\" 71828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $test_cmds" 71838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len0=$func_len_result 71848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$len0 71858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 71868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Loop over the list of objects to be linked. 71878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj in $save_libobjs 71888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 71898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $obj" 71908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $len + $func_len_result 71918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_arith_result 71928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$objlist" = X || 71938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$len" -lt "$max_cmd_len"; then 71948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append objlist " $obj" 71958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 71968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The command $test_cmds is almost too long, add a 71978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # command to the queue. 71988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$k" -eq 1 ; then 71998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The first file doesn't have a previous command to add. 72008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 72018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 72028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # All subsequent reloadable object files will link in 72038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the last one created. 72048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 72058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels last_robj=$output_objdir/$output_la-${k}.$objext 72078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $k + 1 72088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels k=$func_arith_result 72098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$output_objdir/$output_la-${k}.$objext 72108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objlist=$obj 72118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $last_robj" 72128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $len0 + $func_len_result 72138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_arith_result 72148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 72168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Handle the remaining objects by creating one last 72178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # reloadable object file. All subsequent reloadable object 72188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # files will link in the last one created. 72198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$last_robj"; then 72228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 72238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $output" 72258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 72278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output= 72288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ${skipped_export-false}; then 72318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "generating symbol list for \`$libname.la'" 72328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols="$output_objdir/$libname.exp" 72338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $export_symbols 72348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs=$output 72358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Append the command to create the export file. 72368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$last_robj"; then 72398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 72408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$save_libobjs" && 72448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating a temporary reloadable object file: $output" 72458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Loop through the commands generated above and execute them. 72478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS='~' 72488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for cmd in $concat_cmds; do 72498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 72508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_silent || { 72518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand "$cmd" 72528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 72538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 72548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval "$cmd" || { 72558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_exit=$? 72568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restore the uninstalled library and exit 72588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = relink; then 72598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ( cd "$output_objdir" && \ 72608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM "${realname}T" && \ 72618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV "${realname}U" "$realname" ) 72628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $lt_exit 72658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 72668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 72678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 72688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 72728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if ${skipped_export-false}; then 72768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 72778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tmp_export_symbols="$export_symbols" 72788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$orig_export_symbols"; then 72838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The given exports_symbols file has to be filtered, so filter it. 72848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: $output_objdir/$libname.filter potentially contains lots of 72868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # 's' commands which not all seds can handle. GNU sed should be fine 72878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # though. Also, the filter scales superlinearly with the number of 72888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # global variables. join(1) would be nice here, but unfortunately 72898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # isn't a blessed tool. 72908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels export_symbols=$output_objdir/$libname.def 72938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 72968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 72978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs=$output 72988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restore the value of output. 72998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$save_output 73008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 73028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 73038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 73048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Expand the library linking commands again to reset the 73068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # value of $libobjs for piecewise linking. 73078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each of the archive commands. 73098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$module" = yes && test -n "$module_cmds" ; then 73108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$module_expsym_cmds 73128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 73138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$module_cmds 73148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 73168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$archive_expsym_cmds 73188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 73198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$archive_cmds 73208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$delfiles"; then 73258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Append the command to remove temporary files to $cmds. 73268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmds=\"\$cmds~\$RM $delfiles\" 73278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add any objects from preloaded convenience libraries 73308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlprefiles"; then 73318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${outputname}x" 73328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 73338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives $gentop $dlprefiles 73358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobjs="$libobjs $func_extract_archives_result" 73368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "X$libobjs" = "X " && libobjs= 73378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_ifs="$IFS"; IFS='~' 73408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for cmd in $cmds; do 73418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 73428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmd=\"$cmd\" 73438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_silent || { 73448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_expand "$cmd" 73458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 73468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 73478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval "$cmd" || { 73488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels lt_exit=$? 73498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restore the uninstalled library and exit 73518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = relink; then 73528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ( cd "$output_objdir" && \ 73538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM "${realname}T" && \ 73548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $MV "${realname}U" "$realname" ) 73558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $lt_exit 73588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 73598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 73608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels IFS="$save_ifs" 73618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Restore the uninstalled library and exit 73638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = relink; then 73648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 73658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$convenience"; then 73678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$whole_archive_flag_spec"; then 73688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '${RM}r "$gentop"' 73698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 73738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Create links to the real library. 73768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for linkname in $linknames; do 73778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$realname" != "$linkname"; then 73788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 73798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 73818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If -module or -export-dynamic was specified, set the dlname. 73838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$module" = yes || test "$export_dynamic" = yes; then 73848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # On all known operating systems, these are identical. 73858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlname="$soname" 73868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 73898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels obj) 73918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-dlopen' is ignored for objects" 73938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 73948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 73958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $deplibs" in 73968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *\ -l* | *\ -L*) 73978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-l' and \`-L' are ignored for objects" ;; 73988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 73998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$rpath" && \ 74018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-rpath' is ignored for objects" 74028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$xrpath" && \ 74048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-R' is ignored for objects" 74058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$vinfo" && \ 74078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-version-info' is ignored for objects" 74088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$release" && \ 74108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-release' is ignored for objects" 74118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $output in 74138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 74148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$objs$old_deplibs" && \ 74158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj=$output 74188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_lo2o "$libobj" 74198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels obj=$func_lo2o_result 74208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 74218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 74228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libobj= 74238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels obj="$output" 74248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 74258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 74268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the old objects. 74288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $obj $libobj 74298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Objects from convenience libraries. This assumes 74318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # single-version convenience libraries. Whenever we create 74328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # different ones for PIC/non-PIC, this we'll have to duplicate 74338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the extraction. 74348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels reload_conv_objs= 74358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop= 74368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # reload_cmds runs $LD directly, so let us get rid of 74378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # -Wl from whole_archive_flag_spec and hope we can get by with 74388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # turning comma into space.. 74398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wl= 74408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$convenience"; then 74428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$whole_archive_flag_spec"; then 74438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 74468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${obj}x" 74478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 74488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives $gentop $convenience 74508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels reload_conv_objs="$reload_objs $func_extract_archives_result" 74518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Create the old-style object. 74558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 74568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output="$obj" 74588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$reload_cmds" 'exit $?' 74598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Exit if we aren't doing a library object file. 74618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$libobj"; then 74628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$gentop"; then 74638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '${RM}r "$gentop"' 74648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 74678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" != yes; then 74708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$gentop"; then 74718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '${RM}r "$gentop"' 74728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Create an invalid libtool object if no PIC, so that we don't 74758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # accidentally link it into a program. 74768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $show "echo timestamp > $libobj" 74778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 74798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$pic_flag" || test "$pic_mode" != default; then 74828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only do commands if we really have different PIC objects. 74838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels reload_objs="$libobjs $reload_conv_objs" 74848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output="$libobj" 74858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$reload_cmds" 'exit $?' 74868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$gentop"; then 74898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '${RM}r "$gentop"' 74908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 74918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 74938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 74948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 74958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels prog) 74968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 74978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin*) func_stripname '' '.exe' "$output" 74988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$func_stripname_result.exe;; 74998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$vinfo" && \ 75018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-version-info' is ignored for programs" 75028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$release" && \ 75048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`-release' is ignored for programs" 75058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$preload" = yes \ 75078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && test "$dlopen_support" = unknown \ 75088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && test "$dlopen_self" = unknown \ 75098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels && test "$dlopen_self_static" = unknown && \ 75108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 75138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 75148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # On Rhapsody replace the C library is the System framework 75158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 75218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-darwin*) 75228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't allow lazy linking, it breaks C++ global constructors 75238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # But is supposedly fixed on 10.4 or later (yay!). 75248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$tagname" = CXX ; then 75258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 10.[0123]) 75278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command="$compile_command ${wl}-bind_at_load" 75288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command="$finalize_command ${wl}-bind_at_load" 75298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 75328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # move library search paths that coincide with paths to not yet 75408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # installed libraries to the beginning of the library search list 75418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_libs= 75428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for path in $notinst_path; do 75438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_libs " in 75448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -L$path/$objdir "*) ;; 75458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 75468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $compile_deplibs " in 75478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" -L$path/$objdir "*) 75488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels new_libs="$new_libs -L$path/$objdir" ;; 75498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 75538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $compile_deplibs; do 75548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 75558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -L*) 75568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $new_libs " in 75578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $deplib "*) ;; 75588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 75598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 75628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 75648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_deplibs="$new_libs" 75658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command="$compile_command $compile_deplibs" 75688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command="$finalize_command $finalize_deplibs" 75698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$rpath$xrpath"; then 75718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # If the user specified any rpath flags, then add them. 75728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $rpath $xrpath; do 75738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This is the magic to use -rpath. 75748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$finalize_rpath " in 75758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 75768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" ;; 75778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 75798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 75808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 75818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now hardcode the library paths 75828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 75838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs= 75848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $compile_rpath $finalize_rpath; do 75858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 75868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 75878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$hardcode_libdirs"; then 75888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$libdir" 75898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 75908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just accumulate the unique libdirs. 75918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 75958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 75978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 75988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 75998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 76008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 76018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$rpath $flag" 76028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$runpath_var"; then 76048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$perm_rpath " in 76058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 76068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) perm_rpath="$perm_rpath $libdir" ;; 76078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 76108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$dllsearchpath: in 76138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$libdir:"*) ;; 76148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ::) dllsearchpath=$libdir;; 76158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dllsearchpath="$dllsearchpath:$libdir";; 76168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case :$dllsearchpath: in 76188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *":$testbindir:"*) ;; 76198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ::) dllsearchpath=$testbindir;; 76208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) dllsearchpath="$dllsearchpath:$testbindir";; 76218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 76258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 76268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator" && 76278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$hardcode_libdirs"; then 76288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir="$hardcode_libdirs" 76298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval rpath=\" $hardcode_libdir_flag_spec\" 76308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_rpath="$rpath" 76328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 76338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 76348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs= 76358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for libdir in $finalize_rpath; do 76368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 76378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 76388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$hardcode_libdirs"; then 76398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$libdir" 76408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 76418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Just accumulate the unique libdirs. 76428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 76468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 76518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 76528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$rpath $flag" 76538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -n "$runpath_var"; then 76558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$finalize_perm_rpath " in 76568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $libdir "*) ;; 76578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 76618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 76628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$hardcode_libdir_separator" && 76638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$hardcode_libdirs"; then 76648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libdir="$hardcode_libdirs" 76658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval rpath=\" $hardcode_libdir_flag_spec\" 76668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_rpath="$rpath" 76688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 76698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$libobjs" && test "$build_old_libs" = yes; then 76708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Transform all the library objects into standard objects. 76718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 76758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 76768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 76778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # template prelinking step 76788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$prelink_cmds"; then 76798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$prelink_cmds" 'exit $?' 76808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 76828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrappers_required=yes 76838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 76848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* ) 76858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" != yes; then 76868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrappers_required=no 76878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cegcc) 76908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Disable wrappers for cegcc, we are cross compiling anyway. 76918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrappers_required=no 76928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 76948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels wrappers_required=no 76968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 76978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 76988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 76998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$wrappers_required" = no; then 77008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Replace the output file specification. 77018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command="$compile_command$compile_rpath" 77038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We have no uninstalled library dependencies, so finalize right now. 77058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit_status=0 77068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$link_command" 'exit_status=$?' 77078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the generated files. 77098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -f "$output_objdir/${outputname}S.${objext}"; then 77108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 77118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $exit_status 77148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$compile_shlibpath$finalize_shlibpath"; then 77178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$finalize_shlibpath"; then 77208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_var= 77248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_var= 77258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$runpath_var"; then 77268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$perm_rpath"; then 77278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We should set the runpath_var. 77288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 77298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir in $perm_rpath; do 77308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$rpath$dir:" 77318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 77328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 77338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$finalize_perm_rpath"; then 77358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We should set the runpath_var. 77368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath= 77378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir in $finalize_perm_rpath; do 77388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rpath="$rpath$dir:" 77398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 77408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 77418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$no_install" = yes; then 77458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # We don't need to create a wrapper script. 77468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 77478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Replace the output file specification. 77488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the old output file. 77508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $output 77518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Link the executable and exit 77528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$link_command" 'exit $?' 77538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 77548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_action" = relink; then 77578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Fast installation is not supported 77588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 77598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$finalize_var$finalize_command$finalize_rpath" 77608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "this platform does not like uninstalled shared libraries" 77628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_warning "\`$output' will be relinked during installation" 77638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 77648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" != no; then 77658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command="$finalize_var$compile_command$finalize_rpath" 77668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" = yes; then 77678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 77698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # fast_install is set to needless 77708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 77718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 77738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 77748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$finalize_var$finalize_command$finalize_rpath" 77758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 77778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Replace the output file specification. 77798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 77808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the old output files. 77828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 77838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$link_command" 'exit $?' 77858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now create the wrapper script. 77878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating $output" 77888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 77898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Quote the relink command for shipping. 77908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$relink_command"; then 77918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Preserve any variables that may affect compiler behavior 77928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for var in $variables_saved_for_relink; do 77938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval test -z \"\${$var+set}\"; then 77948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif eval var_value=\$$var; test -z "$var_value"; then 77968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$var=; export $var; $relink_command" 77978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 77988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$var_value" 77998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 78008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 78028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="(cd `pwd`; $relink_command)" 78038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 78048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Quote $ECHO for shipping. 78078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $progpath in 78098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 78118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 78128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 78148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only actually do things if not in dry run mode. 78188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 78198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # win32 will think the script is a binary if it has 78208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # a .exe suffix, so we strip it off here. 78218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $output in 78228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe) func_stripname '' '.exe' "$output" 78238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output=$func_stripname_result ;; 78248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 78258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # test for cygwin because mv fails w/o .exe extensions 78268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 78278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin*) 78288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exeext=.exe 78298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$outputname" 78308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels outputname=$func_stripname_result ;; 78318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) exeext= ;; 78328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 78338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host in 78348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin* | *mingw* ) 78358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname_and_basename "$output" "" "." 78368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_name=$func_basename_result 78378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output_path=$func_dirname_result 78388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cwrappersource="$output_path/$objdir/lt-$output_name.c" 78398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cwrapper="$output_path/$output_name.exe" 78408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM $cwrappersource $cwrapper 78418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_cwrapperexe_src > $cwrappersource 78448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # The wrapper executable is built using the $host compiler, 78468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # because it contains $host paths and files. If cross- 78478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # compiling, it, like the target executable, must be 78488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # executed on the $host or under an emulation environment. 78498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 78508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $STRIP $cwrapper 78528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 78538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now, create the wrapper script for func_source use: 78558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname $cwrapper 78568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM $func_ltwrapper_scriptname_result 78578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 78598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # note: this script will not be executed, so do not chmod. 78608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "x$build" = "x$host" ; then 78618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 78638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper no > $func_ltwrapper_scriptname_result 78648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 78668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 78678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * ) 78688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM $output 78698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 78708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_emit_wrapper no > $output 78728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels chmod +x $output 78738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 78748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 78758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 78768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 78778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 78788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 78798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # See if we need to build an old-fashioned archive. 78818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for oldlib in $oldlibs; do 78828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 78838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = convenience; then 78848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$libobjs_save $symfileobj" 78858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels addlibs="$convenience" 78868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 78878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 78888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$build_libtool_libs" = module; then 78898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$libobjs_save" 78908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels build_libtool_libs=no 78918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 78928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$old_deplibs $non_pic_objects" 78938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$preload" = yes && test -f "$symfileobj"; then 78948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$oldobjs $symfileobj" 78958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels addlibs="$old_convenience" 78988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 78998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$addlibs"; then 79018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${outputname}x" 79028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 79038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives $gentop $addlibs 79058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$oldobjs $func_extract_archives_result" 79068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 79078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the archive commands. 79098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$old_archive_from_new_cmds 79118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 79128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add any objects from preloaded convenience libraries 79148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$dlprefiles"; then 79158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${outputname}x" 79168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 79178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_extract_archives $gentop $dlprefiles 79198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$oldobjs $func_extract_archives_result" 79208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 79218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # POSIX demands no paths to be encoded in archives. We have 79238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # to avoid creating archives with duplicate basenames if we 79248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # might have to extract them afterwards, e.g., when creating a 79258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # static archive out of a convenience library, or when linking 79268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the entirety of a libtool archive into another (currently 79278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # not supported by libtool). 79288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if (for obj in $oldobjs 79298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 79308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$obj" 79318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "$func_basename_result" 79328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done | sort | sort -uc >/dev/null 2>&1); then 79338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 79348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 79358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO "copying selected object files to avoid basename conflicts..." 79368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels gentop="$output_objdir/${outputname}x" 79378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels generated="$generated $gentop" 79388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mkdir_p "$gentop" 79398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_oldobjs=$oldobjs 79408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs= 79418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels counter=1 79428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj in $save_oldobjs 79438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 79448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$obj" 79458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objbase="$func_basename_result" 79468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $oldobjs " in 79478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels " ") oldobjs=$obj ;; 79488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\ /]"$objbase "*) 79498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels while :; do 79508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Make sure we don't pick an alternate name that also 79518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # overlaps. 79528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newobj=lt$counter-$objbase 79538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $counter + 1 79548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels counter=$func_arith_result 79558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $oldobjs " in 79568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *[\ /]"$newobj "*) ;; 79578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 79598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 79608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs="$oldobjs $gentop/$newobj" 79628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 79638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) oldobjs="$oldobjs $obj" ;; 79648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 79658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 79668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 79678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmds=\"$old_archive_cmds\" 79688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 79698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $cmds" 79708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_len_result 79718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels cmds=$old_archive_cmds 79738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 79748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the command line is too long to link in one step, link in parts 79758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "using piecewise archive linking..." 79768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_RANLIB=$RANLIB 79778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels RANLIB=: 79788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objlist= 79798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels concat_cmds= 79808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels save_oldobjs=$oldobjs 79818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs= 79828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Is there a better way of finding the last object in the list? 79838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj in $save_oldobjs 79848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 79858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels last_oldobj=$obj 79868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 79878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval test_cmds=\"$old_archive_cmds\" 79888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $test_cmds" 79898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len0=$func_len_result 79908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$len0 79918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for obj in $save_oldobjs 79928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 79938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_len " $obj" 79948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_arith $len + $func_len_result 79958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$func_arith_result 79968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_append objlist " $obj" 79978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$len" -lt "$max_cmd_len"; then 79988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 79998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 80008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the above command should be used before it gets too long 80018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs=$objlist 80028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$obj" = "$last_oldobj" ; then 80038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels RANLIB=$save_RANLIB 80048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 80068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objlist= 80088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels len=$len0 80098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 80118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels RANLIB=$save_RANLIB 80128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels oldobjs=$objlist 80138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$oldobjs" = "X" ; then 80148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmds=\"\$concat_cmds\" 80158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 80168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$cmds" 'exit $?' 80218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 80228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 80238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$generated" && \ 80248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "${RM}r$generated" 80258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 80268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Now create the libtool archive. 80278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $output in 80288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 80298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels old_library= 80308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$build_old_libs" = yes && old_library="$libname.$libext" 80318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_verbose "creating $output" 80328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 80338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Preserve any variables that may affect compiler behavior 80348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for var in $variables_saved_for_relink; do 80358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if eval test -z \"\${$var+set}\"; then 80368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif eval var_value=\$$var; test -z "$var_value"; then 80388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$var=; export $var; $relink_command" 80398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 80408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_quote_for_eval "$var_value" 80418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 80428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 80448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Quote the link command for shipping. 80458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$hardcode_automatic" = yes ; then 80488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 80498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 80518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only create the output if not a dry run. 80528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_dry_run || { 80538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for installed in no yes; do 80548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$installed" = yes; then 80558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -z "$install_libdir"; then 80568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels break 80578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 80588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels output="$output_objdir/$outputname"i 80598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Replace all uninstalled libtool libraries with the installed ones 80608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs= 80618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for deplib in $dependency_libs; do 80628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $deplib in 80638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 80648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$deplib" 80658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 80668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libdir" && \ 80688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$deplib' is not a valid libtool archive" 80698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdependency_libs="$newdependency_libs $libdir/$name" 80708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 80718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) newdependency_libs="$newdependency_libs $deplib" ;; 80728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 80738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 80748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dependency_libs="$newdependency_libs" 80758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles= 80768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 80778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $dlfiles; do 80788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $lib in 80798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 80808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$lib" 80818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 80828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libdir" && \ 80848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$lib' is not a valid libtool archive" 80858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles="$newdlfiles $libdir/$name" 80868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 80878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) newdlfiles="$newdlfiles $lib" ;; 80888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 80898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 80908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$newdlfiles" 80918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles= 80928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $dlprefiles; do 80938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $lib in 80948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 80958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Only pass preopened files to the pseudo-archive (for 80968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # eventual linking with the app. that links it) if we 80978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # didn't already link the preopened objects directly into 80988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # the library: 80998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$lib" 81008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 81018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$libdir" && \ 81038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_error "\`$lib' is not a valid libtool archive" 81048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $libdir/$name" 81058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 81068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 81078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 81088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$newdlprefiles" 81098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 81108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles= 81118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $dlfiles; do 81128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $lib in 81138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) abs=`pwd`"/$lib" ;; 81158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 81168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlfiles="$newdlfiles $abs" 81178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 81188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlfiles="$newdlfiles" 81198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles= 81208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for lib in $dlprefiles; do 81218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $lib in 81228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) abs=`pwd`"/$lib" ;; 81248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 81258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels newdlprefiles="$newdlprefiles $abs" 81268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 81278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dlprefiles="$newdlprefiles" 81288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 81298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $RM $output 81308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # place dlname in correct position for cygwin 81318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels tdlname=$dlname 81328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $host,$output,$installed,$module,$dlname in 81338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 81358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO > $output "\ 81368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $outputname - a libtool library file 81378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 81398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Please DO NOT delete this file! 81408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# It is necessary for linking the library. 81418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name that we can dlopen(3). 81438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlname='$tdlname' 81448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Names of this library. 81468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibrary_names='$library_names' 81478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name of the static archive. 81498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsold_library='$old_library' 81508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Linker flags that can not go in dependency_libs. 81528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinherited_linker_flags='$new_inherited_linker_flags' 81538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Libraries that this one depends upon. 81558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdependency_libs='$dependency_libs' 81568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Names of additional weak libraries provided by this library 81588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsweak_library_names='$weak_libs' 81598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Version information for $libname. 81618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscurrent=$current 81628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsage=$age 81638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrevision=$revision 81648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Is this an already installed library? 81668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinstalled=$installed 81678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Should we warn about portability when linking against -modules? 81698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsshouldnotlink=$module 81708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Files to dlopen/dlpreopen 81728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlopen='$dlfiles' 81738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlpreopen='$dlprefiles' 81748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Directory that this library needs to be installed in: 81768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibdir='$install_libdir'" 81778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$installed" = no && test "$need_relink" = yes; then 81788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $ECHO >> $output "\ 81798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrelink_command=\"$relink_command\"" 81808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 81818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 81828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 81838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do a symbolic link so that the libtool archive can be found in 81858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # LD_LIBRARY_PATH before the program is installed. 81868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 81888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 81898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_SUCCESS 81908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 81918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ test "$mode" = link || test "$mode" = relink; } && 81938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mode_link ${1+"$@"} 81948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 81968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_uninstall arg... 81978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_uninstall () 81988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ 81998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels $opt_debug 82008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels RM="$nonopt" 82018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels files= 82028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmforce= 82038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit_status=0 82048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # This variable tells wrapper scripts just to set variables rather 82068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # than running their programs. 82078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels libtool_install_magic="$magic" 82088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for arg 82108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels do 82118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $arg in 82128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -f) RM="$RM $arg"; rmforce=yes ;; 82138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels -*) RM="$RM $arg" ;; 82148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) files="$files $arg" ;; 82158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 82168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 82178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -z "$RM" && \ 82198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify an RM program" 82208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmdirs= 82228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels origobjdir="$objdir" 82248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for file in $files; do 82258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_dirname "$file" "" "." 82268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels dir="$func_dirname_result" 82278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$dir" = X.; then 82288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objdir="$origobjdir" 82298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 82308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objdir="$dir/$origobjdir" 82318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_basename "$file" 82338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels name="$func_basename_result" 82348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$mode" = uninstall && objdir="$dir" 82358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Remember objdir for removal later, being careful to avoid duplicates 82378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = clean; then 82388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $rmdirs " in 82398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $objdir "*) ;; 82408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) rmdirs="$rmdirs $objdir" ;; 82418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 82428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Don't error if the file doesn't exist and rm -f was used. 82458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if { test -L "$file"; } >/dev/null 2>&1 || 82468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels { test -h "$file"; } >/dev/null 2>&1 || 82478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -f "$file"; then 82488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels : 82498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test -d "$file"; then 82508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit_status=1 82518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 82528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels elif test "$rmforce" = yes; then 82538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels continue 82548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$file" 82578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $name in 82598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.la) 82608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Possibly a libtool archive, so verify it. 82618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_lalib_p "$file"; then 82628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source $dir/$name 82638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Delete the libtool libraries and symlinks. 82658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for n in $library_names; do 82668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $objdir/$n" 82678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 82688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 82698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case "$mode" in 82718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels clean) 82728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case " $library_names " in 82738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # " " in the beginning catches empty $dlname 82748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *" $dlname "*) ;; 82758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) rmfiles="$rmfiles $objdir/$dlname" ;; 82768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 82778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 82788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 82798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels uninstall) 82808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$library_names"; then 82818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the postuninstall commands. 82828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$old_library"; then 82868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do each command in the old_postuninstall commands. 82878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # FIXME: should reinstall the best remaining shared library. 82908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 82918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 82928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 82938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 82948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.lo) 82968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Possibly a libtool object, so verify it. 82978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_lalib_p "$file"; then 82988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 82998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Read the .lo file 83008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source $dir/$name 83018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add PIC object to the list of files to remove. 83038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$pic_object" && 83048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$pic_object" != none; then 83058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $dir/$pic_object" 83068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Add non-PIC object to the list of files to remove. 83098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -n "$non_pic_object" && 83108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels test "$non_pic_object" != none; then 83118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $dir/$non_pic_object" 83128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 83158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *) 83178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$mode" = clean ; then 83188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels noexename=$name 83198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels case $file in 83208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels *.exe) 83218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$file" 83228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels file=$func_stripname_result 83238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_stripname '' '.exe' "$name" 83248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels noexename=$func_stripname_result 83258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # $file with .exe has already been added to rmfiles, 83268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # add $file without .exe 83278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $file" 83288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 83298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 83308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Do a test to see if this is a libtool program. 83318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_p "$file"; then 83328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if func_ltwrapper_executable_p "$file"; then 83338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_ltwrapper_scriptname "$file" 83348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 83358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source $func_ltwrapper_scriptname_result 83368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels else 83388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels relink_command= 83398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_source $dir/$noexename 83408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # note $name still contains .exe if it was in $file originally 83438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # as does the version of $file that was added into $rmfiles 83448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 83458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "$fast_install" = yes && test -n "$relink_command"; then 83468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $objdir/lt-$name" 83478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test "X$noexename" != "X$name" ; then 83498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels rmfiles="$rmfiles $objdir/lt-${noexename}.c" 83508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ;; 83548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels esac 83558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "$RM $rmfiles" 'exit_status=1' 83568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 83578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels objdir="$origobjdir" 83588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels # Try to remove the ${objdir}s in the directories where we deleted files 83608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for dir in $rmdirs; do 83618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels if test -d "$dir"; then 83628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_show_eval "rmdir $dir >/dev/null 2>&1" 83638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels fi 83648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels done 83658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $exit_status 83678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 83688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ test "$mode" = uninstall || test "$mode" = clean; } && 83708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_mode_uninstall ${1+"$@"} 83718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest -z "$mode" && { 83738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels help="$generic_help" 83748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "you must specify a MODE" 83758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 83768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest -z "$exec_cmd" && \ 83788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels func_fatal_help "invalid operation mode \`$mode'" 83798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n "$exec_cmd"; then 83818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels eval exec "$exec_cmd" 83828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels exit $EXIT_FAILURE 83838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi 83848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit $exit_status 83868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The TAGs below are defined such that we never get into a situation 83898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in which we disable both kinds of libraries. Given conflicting 83908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# choices, we go for a static library, that is the most portable, 83918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# since we can't tell whether shared libraries were disabled because 83928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the user asked for that or because the platform doesn't support 83938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# them. This is particularly important on AIX, because we don't 83948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# support having both static and shared libraries enabled at the same 83958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# time on that platform, so we default to a shared-only configuration. 83968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If a disable-shared tag is given, we'll fallback to a static-only 83978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# configuration. But we'll never go from static-only to shared-only. 83988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 83998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 84008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_libtool_libs=no 84018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_old_libs=yes 84028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-shared 84038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 84048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-static 84058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 84068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-static 84078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 84088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Local Variables: 84098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# mode:shell-script 84108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# sh-indentation:2 84118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# End: 84128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# vi:sw=2 84138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 8414