15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated from ltmain.m4sh. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ltmain.sh (GNU libtool) 2.2.6b 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This is free software; see the source for copying conditions. There is NO 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# GNU Libtool is free software; you can redistribute it and/or modify 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it under the terms of the GNU General Public License as published by 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the Free Software Foundation; either version 2 of the License, or 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# (at your option) any later version. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a special exception to the GNU General Public License, 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if you distribute this file as part of a program or library that 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is built using GNU Libtool, you may include this file under the 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# same distribution terms that you use for the rest of that program. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# GNU Libtool is distributed in the hope that it will be useful, but 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# WITHOUT ANY WARRANTY; without even the implied warranty of 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# General Public License for more details. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# You should have received a copy of the GNU General Public License 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# along with GNU Libtool; see the file COPYING. If not, a copy 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# can be downloaded from http://www.gnu.org/licenses/gpl.html, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# or obtained by writing to the Free Software Foundation, Inc., 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Usage: $progname [OPTION]... [MODE-ARG]... 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Provide generalized library-building support services. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --config show all configuration variables 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --debug enable verbose shell tracing 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -n, --dry-run display commands without modifying any files 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --features display basic configuration information and exit 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --mode=MODE use operation mode MODE 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --preserve-dup-deps don't remove duplicate dependency libraries 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --quiet, --silent don't print informational messages 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --tag=TAG use configuration variables from tag TAG 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -v, --verbose print informational messages (default) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# --version print version information 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -h, --help print short or long help message 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MODE must be one of the following: 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# clean remove files from the build directory 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# compile compile a source file into a libtool object 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# execute automatically set library path, then run a program 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# finish complete the installation of libtool libraries 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# install install libraries or executables 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# link create a library or an executable 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# uninstall remove libraries from an installed directory 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MODE-ARGS vary depending on the MODE. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# When reporting a bug, please describe a test case to reproduce it and 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include the following information: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# host-triplet: $host 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# shell: $SHELL 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# compiler: $LTCC 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# compiler flags: $LTCFLAGS 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# linker: $LD (gnu? $with_gnu_ld) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# automake: $automake_version 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# autoconf: $autoconf_version 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Report bugs to <bug-libtool@gnu.org>. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PROGRAM=ltmain.sh 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PACKAGE=libtool 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)VERSION="2.2.6b Debian-2.2.6b-2ubuntu1" 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TIMESTAMP="" 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package_revision=1.3017 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) emulate sh 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULLCMD=: 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is contrary to our usage. Disable this feature. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alias -g '${1+"$@"}'='"$@"' 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setopt NO_GLOB_SUBST 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# NLS nuisances: We save the old values to restore during execute mode. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only set LANG and LC_ALL to C if already set. 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# These must not be set unconditionally because not all systems understand 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# e.g. LANG=C (notably SCO). 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_user_locale= 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_safe_locale= 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)do 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "if test \"\${$lt_var+set}\" = set; then 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_$lt_var=\$$lt_var 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $lt_var=C 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export $lt_var 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)done 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_unset CDPATH 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${CP="cp -f"} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${ECHO="echo"} 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${EGREP="/bin/grep -E"} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${FGREP="/bin/grep -F"} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${GREP="/bin/grep"} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${LN_S="ln -s"} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MAKE="make"} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MKDIR="mkdir"} 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MV="mv -f"} 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${RM="rm -f"} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${SED="/bin/sed"} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${Xsed="$SED -e 1s/^X//"} 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables: 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_SUCCESS=0 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_FAILURE=1 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit_status=$EXIT_SUCCESS 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure IFS has a sensible default 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_nl=' 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)' 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IFS=" $lt_nl" 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dirname="s,/[^/]*$,," 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)basename="s,^.*/,," 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_dirname_and_basename file append nondir_replacement 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# perform func_basename and func_dirname in a single function 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# call: 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# dirname: Compute the dirname of FILE. If nonempty, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# add APPEND to the result, otherwise set result 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# to NONDIR_REPLACEMENT. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# value returned in "$func_dirname_result" 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# basename: Compute filename of FILE. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# value retuned in "$func_basename_result" 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Implementation must be kept synchronized with func_dirname 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# and func_basename. For efficiency, we do not delegate to 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# those functions but instead duplicate the functionality here. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_dirname_and_basename () 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$func_dirname_result" = "X${1}"; then 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_result="${3}" 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_result="$func_dirname_result${2}" 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated shell functions inserted here. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is ksh but when the shell is invoked as "sh" and the current value of 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the _XPG environment variable is not equal to 1 (one), the special 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# positional parameter $0, within a function call, is the name of the 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# function. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)progpath="$0" 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of this program: 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the unlikely event $progname began with a '-', it would play havoc with 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_echo (imagine progname=-n), so we prepend ./ in that case: 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_dirname_and_basename "$progpath" 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)progname=$func_basename_result 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)case $progname in 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) progname=./$progname ;; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)esac 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure we have an absolute path for reexecution: 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)case $progpath in 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]*|[A-Za-z]:\\*) ;; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\/]*) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=$func_dirname_result 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=`cd "$progdir" && pwd` 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progpath="$progdir/$progname" 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_IFS="$IFS" 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=: 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for progdir in $PATH; do 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_IFS" 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -x "$progdir/$progname" && break 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_IFS" 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$progdir" || progdir=`pwd` 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progpath="$progdir/$progname" 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)esac 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting. It backslashifies 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings. 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed="${SED}"' -e 1s/^X//' 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Same as above, but do not quote variable references. 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double_quote_subst='s/\(["`\\]\)/\\\1/g' 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Re-`\' parameter expansions in output of double_quote_subst that were 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in input to double_quote_subst, that '$' was protected from expansion. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Since each input `\' is now two `\'s, look for any number of runs of 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs='\\' 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs2='\\\\' 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs4='\\\\\\\\' 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dollar='\$' 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_double_backslash="\ 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/$bs4/&\\ 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/g 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^$bs2$dollar/$bs&/ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\n//g" 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Standard options: 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_help=false 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_quiet=false 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_verbose=false 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_warning=: 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_echo arg... 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message, along with the current mode 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# name if it has been set yet. 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_echo () 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$progname${mode+: }$mode: $*" 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_verbose arg... 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message in verbose mode only. 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_verbose () 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_verbose && func_echo ${1+"$@"} 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A bug in bash halts the script if the last line of a function 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # fails when set -e is in force, so we need another command to 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # work around that: 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_error arg... 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error. 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_error () 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_warning arg... 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed warning message to standard error. 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_warning () 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # bash bug again: 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_error arg... 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, and exit. 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_error () 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error ${1+"$@"} 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_help arg... 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a help hint, and exit. 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_help () 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error ${1+"$@"} 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "$help" 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)help="Try \`$progname --help' for more information." ## default 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_grep expression filename 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Check whether EXPRESSION matches any line of FILENAME, without output. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_grep () 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP "$1" "$2" >/dev/null 2>&1 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mkdir_p directory-path 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure the entire path to DIRECTORY-PATH is available. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mkdir_p () 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_directory_path="$1" 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dir_list= 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Protect directory names starting with `-' 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_directory_path in 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) my_directory_path="./$my_directory_path" ;; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # While some portion of DIR does not yet exist... 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test ! -d "$my_directory_path"; do 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ...make a list in topmost first order. Use a colon delimited 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # list incase some portion of path contains whitespace. 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dir_list="$my_directory_path:$my_dir_list" 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the last portion added has no slash in it, the list is done 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_directory_path in */*) ;; *) break ;; esac 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ...otherwise throw away the child directory and loop 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_mkdir_p_IFS="$IFS"; IFS=':' 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for my_dir in $my_dir_list; do 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_mkdir_p_IFS" 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # mkdir can fail with a `File exist' error if two processes 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # try to create one of the directories concurrently. Don't 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # stop in that case! 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MKDIR "$my_dir" 2>/dev/null || : 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_mkdir_p_IFS" 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Bail out if we (or some other process) failed to create a directory. 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -d "$my_directory_path" || \ 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "Failed to create \`$1'" 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mktempdir [string] 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make a temporary directory that won't clash with other running 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libtool processes, and avoids race conditions if possible. If 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# given, STRING is the basename for that directory. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mktempdir () 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_template="${TMPDIR-/tmp}/${1-$progname}" 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$opt_dry_run" = ":"; then 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Return a directory name, but don't create it in dry-run mode 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_tmpdir="${my_template}-$$" 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If mktemp works, use that first and foremost 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -d "$my_tmpdir"; then 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Failing that, at least try and use $RANDOM to avoid a race 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_tmpdir="${my_template}-${RANDOM-0}$$" 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_mktempdir_umask=`umask` 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) umask 0077 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MKDIR "$my_tmpdir" 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) umask $save_mktempdir_umask 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If we're not in dry-run mode, bomb out on failure 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -d "$my_tmpdir" || \ 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X$my_tmpdir" | $Xsed 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_quote_for_eval arg 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Aesthetically quote ARG to be evaled later. 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is double-quoted, suitable for a subsequent eval, whereas 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# which are still active within double quotes backslashified. 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_quote_for_eval () 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\`\"\$]*) 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval_unquoted_result="$1" ;; 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $func_quote_for_eval_unquoted_result in 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Double-quote args containing shell metacharacters to delay 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # word splitting, command substitution and and variable 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # expansion for a subsequent eval. 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Many Bourne shells cannot handle close brackets correctly 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # in scan sets, so we specify it separately. 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_quote_for_expand arg 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Aesthetically quote ARG to be evaled later; same as above, 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but do not quote variable references. 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_quote_for_expand () 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\`\"]*) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_arg=`$ECHO "X$1" | $Xsed \ 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_arg="$1" ;; 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_arg in 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Double-quote args containing shell metacharacters to delay 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # word splitting and command substitution for a subsequent eval. 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Many Bourne shells cannot handle close brackets correctly 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # in scan sets, so we specify it separately. 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_arg="\"$my_arg\"" 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand_result="$my_arg" 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_show_eval cmd [fail_exp] 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is given, then evaluate it. 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_show_eval () 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_cmd="$1" 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_fail_exp="${2-:}" 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ${opt_silent-false} || { 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$my_cmd" 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ${opt_dry_run-false}; then :; else 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$my_cmd" 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_status=$? 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$my_status" -eq 0; then :; else 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "(exit $my_status); $my_fail_exp" 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_show_eval_locale cmd [fail_exp] 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is given, then evaluate it. Use the saved locale for evaluation. 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_show_eval_locale () 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_cmd="$1" 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_fail_exp="${2-:}" 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ${opt_silent-false} || { 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$my_cmd" 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ${opt_dry_run-false}; then :; else 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$lt_user_locale 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $my_cmd" 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_status=$? 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$lt_safe_locale" 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$my_status" -eq 0; then :; else 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "(exit $my_status); $my_fail_exp" 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_version 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo version message to standard output and exit. 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_version () 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# // 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# *$// 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }' < "$progpath" 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_usage 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo short help message to standard output and exit. 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_usage () 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n '/^# Usage:/,/# -h/ { 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# // 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# *$// 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\$progname/'$progname'/ 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }' < "$progpath" 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "run \`$progname --help | more' for full usage" 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_help 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo long help message to standard output and exit. 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_help () 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n '/^# Usage:/,/# Report bugs to/ { 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# // 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/^# *$// 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$progname*'$progname'* 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$host*'"$host"'* 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$SHELL*'"$SHELL"'* 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$LTCC*'"$LTCC"'* 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$LTCFLAGS*'"$LTCFLAGS"'* 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s*\$LD*'"$LD"'* 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }' < "$progpath" 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_missing_arg argname 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error and set global 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# exit_cmd. 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_missing_arg () 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "missing argument for $1" 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_cmd=exit 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit_cmd=: 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Check that we have a working $ECHO. 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--no-reexec; then 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Discard the --no-reexec flag, and continue. 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)elif test "X$1" = X--fallback-echo; then 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Avoid inline document here, it may be left over 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Yippee, $ECHO works! 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restart under the correct shell, and then maybe $ECHO will work. 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--fallback-echo; then 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # used as fallback echo 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$* 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic="%%%MAGIC variable%%%" 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic_exe="%%%MAGIC EXE variable%%%" 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables. 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $mode is unset 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)nonopt= 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)execute_dlfiles= 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)preserve_args= 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lo2o="s/\\.lo\$/.${objext}/" 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)o2lo="s/\\.${objext}\$/.lo/" 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_archives= 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_serial=0 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_duplicate_deps=false 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_silent=false 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_debug=: 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If this variable is set in any of the actions, the command in it 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will be execed at the end. This prevents here-documents from being 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# left over by shells. 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exec_cmd= 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_configuration arg... 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a configuration failure hint, and exit. 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_configuration () 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error ${1+"$@"} 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "See the $PACKAGE documentation for more information." 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "Fatal configuration error." 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_config 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the configuration for all the tags in this script. 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_config () 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_begincf='^# ### BEGIN LIBTOOL' 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_endcf='^# ### END LIBTOOL' 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Default configuration. 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now print the configurations for the tags. 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tagname in $taglist; do 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_features 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the features supported by this script. 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_features () 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "host: $host" 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "enable shared libraries" 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "disable shared libraries" 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "enable static libraries" 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "disable static libraries" 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_enable_tag tagname 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Verify that TAGNAME is valid, and either flag an error and exit, or 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable here. 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_enable_tag () 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Global variable: 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tagname="$1" 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sed_extractcf="/$re_begincf/,/$re_endcf/p" 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Validate tagname. 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $tagname in 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[!-_A-Za-z0-9,/]*) 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "invalid tag name: $tagname" 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't test for the "default" C tag, as we know it's 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # there but not specially marked. 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $tagname in 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC) ;; 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) taglist="$taglist $tagname" 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Evaluate the configuration. Be careful to quote the path 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and the sed script, to avoid splitting on whitespace, but 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # also don't use non-portable quotes within backquotes within 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # quotes we have to do it in 2 steps: 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$extractedcf" 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "ignoring unknown tag $tagname" 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Parse options once, thoroughly. This comes as soon as possible in 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the script to make things like `libtool --version' happen quickly. 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Shorthand for --mode=foo, only valid as the first argument 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean|clea|cle|cl) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode clean ${1+"$@"}; shift 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile|compil|compi|comp|com|co|c) 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode compile ${1+"$@"}; shift 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute|execut|execu|exec|exe|ex|e) 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode execute ${1+"$@"}; shift 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish|finis|fini|fin|fi|f) 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode finish ${1+"$@"}; shift 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install|instal|insta|inst|ins|in|i) 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode install ${1+"$@"}; shift 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link|lin|li|l) 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode link ${1+"$@"}; shift 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode uninstall ${1+"$@"}; shift 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse non-mode specific arguments: 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$#" -gt 0; do 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt="$1" 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $opt in 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --config) func_config ;; 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --debug) preserve_args="$preserve_args $opt" 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "enabling shell trace mode" 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_debug='set -x' 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute_dlfiles="$execute_dlfiles $1" 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --dry-run | -n) opt_dry_run=: ;; 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --features) func_features ;; 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --finish) mode="finish" ;; 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Valid mode arguments: 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) ;; 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile) ;; 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute) ;; 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish) ;; 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install) ;; 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) ;; 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink) ;; 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) ;; 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Catch anything else as an error 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) func_error "invalid argument for $opt" 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_cmd=exit 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mode="$1" 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --preserve-dup-deps) 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_deps=: ;; 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --quiet|--silent) preserve_args="$preserve_args $opt" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_silent=: 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --verbose| -v) preserve_args="$preserve_args $opt" 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_silent=false 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preserve_args="$preserve_args $opt $1" 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_enable_tag "$1" # tagname is set here 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Separate optargs to long options: 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen=*|--mode=*|--tag=*) 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_opt_split "$opt" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -\?|-h) func_usage ;; 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --help) opt_help=: ;; 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --version) func_version ;; 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) func_fatal_help "unrecognized option \`$opt'" ;; 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) nonopt="$opt" 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *pw32* | *cegcc*) 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # don't eliminate duplications in $postdeps and $predeps 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_compiler_generated_deps=: 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Having warned about all mis-specified options, bail out if 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # anything was wrong. 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $exit_cmd $EXIT_FAILURE 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_check_version_match 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Ensure that we are using m4 macros, and libtool script from the same 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# release of libtool. 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_check_version_match () 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$package_revision" != "$macro_revision"; then 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$VERSION" != "$macro_version"; then 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$macro_version"; then 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >&2 <<_LT_EOF 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from an older release. 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again. 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >&2 <<_LT_EOF 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again. 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >&2 <<_LT_EOF 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: of $PACKAGE $VERSION and run autoconf again. 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_MISMATCH 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ## 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## Main. ## 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ## 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || { 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Sanity checks first: 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_check_version_match 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "not configured to build any kind of library" 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Darwin sucks 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval std_shrext=\"$shrext_cmds\" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only execute mode is allowed to have -dlopen flags. 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$execute_dlfiles" && test "$mode" != execute; then 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "unrecognized option \`-dlopen'" 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$help" 1>&2 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Change the help message to a mode-specific one. 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generic_help="$help" 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) help="Try \`$progname --help --mode=$mode' for more information." 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_p file 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file. 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_p () 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$1" && 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 4q "$1" 2>/dev/null \ 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_unsafe_p file 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file. 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function implements the same check as func_lalib_p without 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# resorting to external programs. To this end, it redirects stdin and 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# closes it afterwards, without saving the original file descriptor. 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a safety measure, use it only where a negative result would be 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# fatal anyway. Works if `file' does not exist. 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_unsafe_p () 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lalib_p=no 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lalib_p_l in 1 2 3 4 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) read lalib_p_line 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$lalib_p_line" in 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec 0<&5 5<&- 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$lalib_p" = yes 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_script_p file 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_script_p () 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_p "$1" 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_executable_p file 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper executable 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_executable_p () 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_exec_suffix= 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) ;; 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) func_ltwrapper_exec_suffix=.exe ;; 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_scriptname file 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Assumes file is an ltwrapper_executable 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# uses $file to determine the appropriate filename for a 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# temporary ltwrapper_script. 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_scriptname () 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname_result="" 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$1"; then 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$1" "" "." 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$func_basename_result" 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_p file 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script or wrapper executable 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_p () 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_execute_cmds commands fail_cmd 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Execute tilde-delimited COMMANDS. 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If FAIL_CMD is given, eval that upon failure. 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FAIL_CMD may read-access the current command in variable CMD! 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_execute_cmds () 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs=$IFS; IFS='~' 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for cmd in $1; do 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$save_ifs 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmd=\"$cmd\" 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$cmd" "${2-:}" 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$save_ifs 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_source file 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Source FILE, adding directory component if necessary. 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Note that it is not necessary on cygwin/mingw to append a dot to 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior happens only for exec(3), not for open(2)! Also, sourcing 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `FILE.' does not work on cygwin managed mounts. 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_source () 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */* | *\\*) . "$1" ;; 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) . "./$1" ;; 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_infer_tag arg 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Infer tagged configuration to use if any are available and 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if one wasn't chosen via the "--tag" command line option. 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only attempt this if the compiler in the base compile 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# command doesn't match the default compiler. 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# arg is usually of the form 'gcc ...' 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_infer_tag () 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$available_tags" && test -z "$tagname"; then 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted= 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $CC; do 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted="$CC_quoted $func_quote_for_eval_result" 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $@ in 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Blanks in the command may have been stripped by the calling shell, 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but not from the CC environment variable when configure was run. 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Blanks at the start of $base_compile will cause this to fail 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # if we don't check for them as well. 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for z in $available_tags; do 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Evaluate the configuration. 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted= 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $CC; do 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Double-quote args containing other shell metacharacters. 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted="$CC_quoted $func_quote_for_eval_result" 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$@ " in 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The compiler in the base compile command matches 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the one in the tagged configuration. 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Assume this is the tagged configuration we want. 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tagname=$z 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If $tagname still isn't set, then no tagged configuration 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # was found and let the user know that the "--tag" command 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # line option must be used. 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$tagname"; then 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "unable to infer tagged configuration" 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "specify a tag with \`--tag'" 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_verbose "using $tagname tagged configuration" 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_write_libtool_object output_name pic_name nonpic_name 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Create a libtool object file (analogous to a ".la" file), 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but don't create it if we're doing a dry run. 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_write_libtool_object () 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_libobj=${1} 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_lobj=\'${2}\' 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_lobj=none 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_oldobj=\'${3}\' 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_oldobj=none 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >${write_libobj}T <<EOF 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $write_libobj - a libtool object file 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file! 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library. 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the PIC object. 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pic_object=$write_lobj 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the non-PIC object 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)non_pic_object=$write_oldobj 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "${write_libobj}T" "${write_libobj}" 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_compile arg... 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_compile () 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the compilation command and the source file. 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile= 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_opt=yes 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_output= 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj= 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) later= 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pie_flag= 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg_mode in 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg ) 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # do not "continue". Instead, add this to base_compile 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$arg" 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target ) 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj="$arg" 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) normal ) 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Accept any command-line options. 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o) 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$libobj" && \ 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you cannot specify \`-o' more than once" 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=target 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -pie | -fpie | -fPIE) 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pie_flag="$pie_flag $arg" 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared | -static | -prefer-pic | -prefer-non-pic) 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) later="$later $arg" 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-suppress) 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_opt=no 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xcompiler) 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=arg # the next one goes into the "base_compile" arg list 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue # The current "srcfile" will either be retained or 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # replaced later. I would guess that would be a bug. 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wc,*) 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wc,' '' "$arg" 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg= 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $args; do 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$lastarg $func_quote_for_eval_result" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$lastarg" 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg=$func_stripname_result 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the arguments to base_compile. 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$base_compile $lastarg" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Accept the current argument as the source file. 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The previous "srcfile" becomes the current argument. 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$srcfile" 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcfile="$arg" 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $arg 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $arg_mode 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote the previous argument. 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$lastarg" 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$base_compile $func_quote_for_eval_result" 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for arg 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg_mode in 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg) 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you must specify an argument for -Xcompile" 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target) 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you must specify a target with \`-o'" 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the name of the library object. 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libobj" && { 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$srcfile" 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj="$func_basename_result" 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Recognize several different file suffixes. 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the user specifies -o file.o, it is replaced with file.lo 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libobj in 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.[cCFSifmso] | \ 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.ada | *.adb | *.ads | *.asm | \ 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_xform "$libobj" 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj=$func_xform_result 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libobj in 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot determine name of library object from \`$libobj'" 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_infer_tag $base_compile 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $later; do 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" != yes && \ 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "can not build a shared library" 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=no 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static) 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-pic) 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=yes 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-non-pic) 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=no 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$libobj" 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobj" != "X$func_quote_for_eval_result" \ 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && func_warning "libobj name \`$libobj' may not contain shell special characters." 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$obj" "/" "" 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objname="$func_basename_result" 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lobj=${xdir}$objdir/$objname 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$base_compile" && \ 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a compilation command" 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete any leftover library objects. 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$obj $lobj $libobj ${libobj}T" 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$lobj $libobj ${libobj}T" 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # On Cygwin there's no "real" PIC flag so we must build both object types 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cygwin* | mingw* | pw32* | os2* | cegcc*) 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=default 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # non-PIC code in shared libraries is not supported 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=default 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Calculate the filename of the output object if compiler does 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # not support -o with -c 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$compiler_c_o" = no; then 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lockfile="$output_obj.lock" 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_obj= 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_locks=no 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lockfile= 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Lock this critical section if it is needed 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We use this script file to make the link, it avoids creating a new file 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = yes; then 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "Waiting for $lockfile to be removed" 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sleep 2 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$need_locks" = warn; then 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lockfile"; then 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile exists and contains: 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$removelist $output_obj" 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$srcfile" > "$lockfile" 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$removelist $lockfile" 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$fix_srcfile_path"; then 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval srcfile=\"$fix_srcfile_path\" 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$srcfile" 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qsrcfile=$func_quote_for_eval_result 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only build a PIC object if we are building libtool libraries. 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Without this assignment, base_compile gets emptied. 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fbsd_hideous_sh_bug=$base_compile 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" != no; then 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile $pic_flag" 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't build PIC code 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile" 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$xdir$objdir" 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$output_obj"; then 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Place PIC objects in $objdir 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command -o $lobj" 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval_locale "$command" \ 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = warn && 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains: 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain: 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just move the object if needed, then go on to compile the next one 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "$output_obj" "$lobj"' \ 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow error messages only from the first compilation. 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$suppress_opt" = yes; then 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_output=' >/dev/null 2>&1' 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only build a position-dependent object if we build old libraries. 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" != yes; then 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't build PIC code 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile$pie_flag" 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile $pic_flag" 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$compiler_c_o" = yes; then 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command -o $obj" 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Suppress compiler output if we already did a PIC compilation. 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command$suppress_output" 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval_locale "$command" \ 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = warn && 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains: 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain: 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just move the object if needed 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "$output_obj" "$obj"' \ 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unlock the critical section if it was locked 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" != no; then 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist=$lockfile 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "$lockfile" 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || { 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = compile && func_mode_compile ${1+"$@"} 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_help () 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to display help for each of the modes. 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $mode in 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Generic help is extracted from the usage comments 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # at the start of this file. 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_help 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove files from the build directory. 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM. 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, object or program, all the files associated 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with it are deleted. Otherwise, only FILE itself is deleted using RM." 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile) 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Compile a source file into a libtool library object. 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options: 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-suppress do not suppress compiler output for multiple passes 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-pic try to building PIC objects only 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-non-pic try to building non-PIC objects only 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared do not build a \`.o' file suitable for static linking 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static only build a \`.o' file suitable for static linking 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COMPILE-COMMAND is a command to be used in creating a \`standard' object file 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from the given SOURCEFILE. 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The output file name is determined by removing the directory component from 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SOURCEFILE, then substituting the C source code suffix \`.c' with the 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library object suffix, \`.lo'." 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute) 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Automatically set library path, then run a program. 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options: 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen FILE add the directory containing FILE to the library path 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode sets the library path environment variable according to \`-dlopen' 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)flags. 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If any of the ARGS are libtool executable wrappers, then they are translated 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)into their corresponding uninstalled binary, and any of their required library 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)directories are added to the library path. 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Then, COMMAND is executed, with ARGS as arguments." 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish) 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Complete the installation of libtool libraries. 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Each LIBDIR is a directory that contains libtool libraries. 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The commands that this mode executes may require superuser privileges. Use 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the \`--dry-run' option if you just want to see what would be executed." 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install) 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Install executables or libraries. 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL-COMMAND is the installation command. The first component should be 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either the \`install' or \`cp' program. 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of INSTALL-COMMAND are treated specially: 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The rest of the components are interpreted as arguments to that command (only 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BSD-compatible install options are recognized)." 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Link object files or libraries together to form another library, or to 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)create an executable program. 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LINK-COMMAND is a command using the C compiler that you would use to create 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a program from several object files. 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of LINK-COMMAND are treated specially: 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static do not do any dynamic linking at all 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -avoid-version do not add a version suffix if possible 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols SYMFILE 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) try to export only the symbols listed in SYMFILE 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols-regex REGEX 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) try to export only the symbols matching REGEX 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -LLIBDIR search LIBDIR for required installed libraries 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -lNAME OUTPUT-FILE requires the installed library libNAME 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -module build a library that can dlopened 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-fast-install disable the fast-install mode 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-install link a not-installable executable 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-undefined declare that a library does not refer to external symbols 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -objectlist FILE Use a list of object files found in FILE to specify objects 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -precious-files-regex REGEX 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) don't remove output files matching REGEX 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -release RELEASE specify package release information 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -rpath LIBDIR the created library will eventually be installed in LIBDIR 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared only do dynamic linking of libtool libraries 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shrext SUFFIX override the standard shared library file extension 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static do not do any dynamic linking of uninstalled libtool libraries 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static-libtool-libs 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do not do any dynamic linking of libtool libraries 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-info CURRENT[:REVISION[:AGE]] 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specify library version info [each variable defaults to 0] 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -weak LIBNAME declare that the target provides the LIBNAME interface 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)All other options (arguments beginning with \`-') are ignored. 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Every other argument is treated as a filename. Files ending in \`.la' are 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)treated as uninstalled libtool libraries, other files are standard or library 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)object files. 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only library objects (\`.lo' files) may be specified, and \`-rpath' is 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)required, except when creating a convenience library. 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using \`ar' and \`ranlib', or on Windows using \`lib'. 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)is created, otherwise an executable program is created." 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove libraries from an installation directory. 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM. 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, all the files associated with it are deleted. 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Otherwise, only FILE itself is deleted using RM." 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "invalid operation mode \`$mode'" 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "Try \`$progname --help' for more information about other modes." 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now that we've collected a possible --mode arg, show help if necessary 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_help && func_mode_help 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_execute arg... 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_execute () 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The first argument is the command name. 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd="$nonopt" 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$cmd" && \ 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a COMMAND" 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Handle -dlopen flags immediately. 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $execute_dlfiles; do 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$file" \ 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$file' is not a file" 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir= 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$file" \ 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$lib' is not a valid libtool archive" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the libtool library. 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname= 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip this library if it cannot be dlopened. 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlname"; then 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Warn if it was a shared library. 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$library_names" && \ 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$file' was not linked with \`-export-dynamic'" 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$dir/$objdir/$dlname"; then 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$dir/$objdir" 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$dir/$dlname"; then 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just add the directory containing the .lo file. 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the absolute pathname. 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$absdir" && dir="$absdir" 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now add the directory to shlibpath_var. 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "test -z \"\$$shlibpath_var\""; then 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$shlibpath_var=\"\$dir\"" 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set shlibpath_var 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # rather than running their programs. 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_execute_magic="$magic" 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check if any of the arguments is a wrapper script. 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args= 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) ;; 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is really a libtool program. 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_script_p "$file"; then 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform arg to wrapped name. 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$progdir/$program" 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif func_ltwrapper_executable_p "$file"; then 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$func_ltwrapper_scriptname_result" 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform arg to wrapped name. 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$progdir/$program" 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Quote arguments (to preserve shell metacharacters). 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$file" 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args="$args $func_quote_for_eval_result" 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$opt_dry_run" = Xfalse; then 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Export the shlibpath_var. 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "export $shlibpath_var" 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore saved environment variables 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "if test \"\${save_$lt_var+set}\" = set; then 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $lt_var=\$save_$lt_var; export $lt_var 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $lt_unset $lt_var 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now prepare to actually exec the command. 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec_cmd="\$cmd$args" 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Display what would be done. 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "export $shlibpath_var" 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$cmd$args" 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = execute && func_mode_execute ${1+"$@"} 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_finish arg... 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_finish () 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdirs="$nonopt" 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) admincmds= 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdirs="$libdirs $dir" 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $libdirs; do 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_cmds"; then 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the finish commands. 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'"$cmd"'"' 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_eval"; then 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do the single finish_eval. 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"$finish_eval\" 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $cmds" 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Exit here if they wanted silent mode. 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent && exit $EXIT_SUCCESS 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X----------------------------------------------------------------------" | $Xsed 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "Libraries have been installed in:" 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $libdirs; do 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " $libdir" 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "If you ever happen to want to link against installed libraries" 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "flag during linking and do at least one of the following:" 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " during execution" 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$runpath_var"; then 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " during linking" 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec"; then 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir=LIBDIR 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$hardcode_libdir_flag_spec\" 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - use the \`$flag' linker flag" 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$admincmds"; then 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - have your system administrator run these commands:$admincmds" 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f /etc/ld.so.conf; then 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "See any operating system documentation about shared libraries for" 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) solaris2.[6789]|solaris2.1[0-9]) 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "pages." 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X----------------------------------------------------------------------" | $Xsed 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = finish && func_mode_finish ${1+"$@"} 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_install arg... 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_install () 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # There may be an optional sh(1) argument at the beginning of 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install_prog (especially on Windows NT). 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow the use of GNU shtool's install command. 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote it. 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$nonopt" 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$func_quote_for_eval_result " 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$1 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog= 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$nonopt 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The real first argument should be the name of the installation program. 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote it. 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$install_prog$func_quote_for_eval_result" 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to accept at least all the BSD install flags. 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest= 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files= 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opts= 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_type= 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isdir=no 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripme= 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dest"; then 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files="$files $dest" 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$arg 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -d) isdir=yes ;; 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -f) 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $install_prog " in 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\ /]cp\ *) ;; 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) prev=$arg ;; 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -g | -m | -o) 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=$arg 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -s) 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripme=" -s" 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the previous option needed an argument, then skip it. 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$prev"; then 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$arg 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote the argument. 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$install_prog $func_quote_for_eval_result" 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$install_prog" && \ 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an install program" 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$prev" && \ 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "the \`$prev' option requires an argument" 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$files"; then 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dest"; then 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "no file or destination specified" 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a destination" 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Strip any trailing slash from the destination. 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '/' "$dest" 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$func_stripname_result 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that the destination is a directory. 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -d "$dest" && isdir=yes 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$isdir" = yes; then 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir="$dest" 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destname= 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$dest" "" "." 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir="$func_dirname_result" 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destname="$func_basename_result" 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Not a directory, so check to see that there is only one file specified. 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $files; shift 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$#" -gt 1 && \ 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "\`$dest' is not a directory" 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $destdir in 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) ;; 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "\`$destdir' must be an absolute directory name" 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set variables rather 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than running their programs. 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_install_magic="$magic" 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticlibs= 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) future_libdirs= 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current_libdirs= 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each installation. 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do the static libraries later. 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticlibs="$staticlibs $file" 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$file" \ 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$file' is not a valid libtool archive" 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the libdir to current_libdirs if it is the destination. 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$destdir" = "X$libdir"; then 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$current_libdirs " in 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) current_libdirs="$current_libdirs $libdir" ;; 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Note the libdir as a future libdir. 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$future_libdirs " in 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) future_libdirs="$future_libdirs $libdir" ;; 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "/" "" 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$dir$objdir" 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$relink_command"; then 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Determine the prefix the user has applied to our future dir. 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't allow the user to place us outside of our expected 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # location b/c this prevents finding dependent libraries that 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are installed to the same prefix. 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # At present, this check doesn't affect windows .dll's that 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are installed into $libdir/../bin (currently, that works fine) 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but it's something to keep an eye on. 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$inst_prefix_dir" = "$destdir" && \ 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Stick the inst_prefix_dir data into the link command. 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "relinking \`$file'" 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$relink_command" \ 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See the names of the shared library. 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $library_names; shift 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1"; then 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) realname="$1" 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcname="$realname" 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$relink_command" && srcname="$realname"T 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the shared library and build the symlinks. 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'exit $?' 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tstripme="$stripme" 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cygwin* | mingw* | pw32* | cegcc*) 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $realname in 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.dll.a) 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tstripme="" 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$tstripme" && test -n "$striplib"; then 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$striplib $destdir/$realname" 'exit $?' 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$#" -gt 0; then 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the old symlinks, and create new ones. 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try `ln -sf' first, because the `ln' binary might depend on 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the symlink we replace! Solaris /bin/ln does not understand -f, 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so we also need to try rm && ln -s. 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for linkname 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkname" != "$realname" \ 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postinstall commands. 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib="$destdir/$realname" 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$postinstall_cmds" 'exit $?' 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the pseudo-library for information purposes. 20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instname="$dir/$name"i 20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Maybe install the static library, too. 20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install (i.e. copy) a libtool object. 20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Figure out destination file name, if it wasn't already specified. 20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$destname"; then 20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destname" 20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$func_basename_result" 20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destfile" 20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Deduce the name of the destination old-style object file. 21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $destfile in 21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$destfile" 21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticdest=$func_lo2o_result 21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$objext) 21085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticdest="$destfile" 21095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile= 21105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "cannot copy a libtool object to \`$destfile'" 21135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the libtool object if requested. 21175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$destfile" && \ 21185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $file $destfile" 'exit $?' 21195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the old object if enabled. 21215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 21225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Deduce the name of the old-style object file. 21235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$file" 21245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticobj=$func_lo2o_result 21255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 21265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 21285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Figure out destination file name, if it wasn't already specified. 21325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$destname"; then 21335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destname" 21345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 21355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 21365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$func_basename_result" 21375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destfile" 21385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the file is missing, and there is a .exe on the end, strip it 21415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # because it is most likely a libtool script we actually want to 21425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install 21435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripped_ext="" 21445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 21455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) 21465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$file"; then 21475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 21485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=$func_stripname_result 21495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripped_ext=".exe" 21505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is really a libtool program. 21555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 21565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw*) 21575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$file"; then 21585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 21595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$func_ltwrapper_scriptname_result 21605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 21615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 21625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$func_stripname_result 21635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$file 21675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_script_p "$wrapper"; then 21705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs= 21715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 21725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$wrapper" 21745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check the variables that should have been set. 21765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$generated_by_libtool_version" && \ 21775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize=yes 21805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $notinst_deplibs; do 21815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that each library is installed. 21825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir= 21835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lib"; then 21845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 21855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$libdir" && test ! -f "$libfile"; then 21885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$lib' has not been installed in \`$libdir'" 21895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize=no 21905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 21925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 21945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$wrapper" 21955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname= 21975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = no && test -n "$relink_command"; then 21985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 21995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$finalize" = yes; then 22005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmpdir=`func_mktempdir` 22015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file$stripped_ext" 22025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$func_basename_result" 22035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname="$tmpdir/$file" 22045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace the output file specification. 22055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent || { 22085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$relink_command" 22095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 22105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "$relink_command"; then : 22125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "error: relink \`$file' with the above command before installing it" 22145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || ${RM}r "$tmpdir" 22155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 22165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$outputname" 22185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot relink \`$file'" 22205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the binary that we compiled earlier. 22245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 22255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # remove .exe since cygwin /usr/bin/install will append another 22295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # one anyway 22305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $install_prog,$host in 22315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */usr/bin/install*,*cygwin*) 22325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file:$destfile in 22335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe:*.exe) 22345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # this is ok 22355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe:*) 22375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile=$destfile.exe 22385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *:*.exe) 22405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$destfile" 22415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile=$func_stripname_result 22425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || if test -n "$outputname"; then 22485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ${RM}r "$tmpdir" 22495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 22535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $staticlibs; do 22555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 22565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 22575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Set up the ranlib parameters. 22595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlib="$destdir/$name" 22605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$stripme" && test -n "$old_striplib"; then 22645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$old_striplib $oldlib" 'exit $?' 22655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postinstall commands. 22685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 22705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$future_libdirs" && \ 22725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "remember to run \`$progname --finish$future_libdirs'" 22735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$current_libdirs"; then 22755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Maybe just do a dry run. 22765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run && current_libdirs=" -n$current_libdirs" 22775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 22805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = install && func_mode_install ${1+"$@"} 22845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_generate_dlsyms outputname originator pic_p 22875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Extract symbols from dlprefiles and create ${outputname}S.o with 22885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a dlpreopen symbol table. 22895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_generate_dlsyms () 22905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 22915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 22925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_outputname="$1" 22935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_originator="$2" 22945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_pic_p="${3-no}" 22955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dlsyms= 22975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$NM" && test -n "$global_symbol_pipe"; then 23005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dlsyms="${my_outputname}S.c" 23015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 23025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "not configured to extract global symbols from dlpreopened files" 23035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$my_dlsyms"; then 23075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_dlsyms in 23085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") ;; 23095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.c) 23105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Discover the nlist of each of the dlfiles. 23115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nlist="$output_objdir/${my_outputname}.nm" 23125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse the name list into a source file. 23165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating $output_objdir/$my_dlsyms" 23175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 23235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern \"C\" { 23245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 23255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* External symbol declarations for the compiler. */\ 23275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 23285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$dlself" = yes; then 23305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating symbol list for \`$output'" 23315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add our own program objects to the symbol list. 23355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for progfile in $progfiles; do 23375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting global C symbols from \`$progfile'" 23385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 23405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$exclude_expsyms"; then 23425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols_regex"; then 23495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepare the list of exported symbols 23565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$export_symbols"; then 23575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$output_objdir/$outputname.exp" 23585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $export_symbols 23605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 23625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 23635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 23665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 23675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 23695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 23745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin | *mingw* | *cegcc* ) 23755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 23785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 23795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dlprefile in $dlprefiles; do 23845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting global C symbols from \`$dlprefile'" 23855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$dlprefile" 23865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 23875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$ECHO ": $name " >> "$nlist"' 23895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 23925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure we have at least an empty file. 23955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$nlist" || : > "$nlist" 23965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$exclude_expsyms"; then 23985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "$nlist"T "$nlist" 24005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try sorting and uniquifying the output. 24035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP -v "^: " < "$nlist" | 24045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if sort -k 3 </dev/null >/dev/null 2>&1; then 24055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sort -k 3 24065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sort +2 24085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi | 24095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uniq > "$nlist"S; then 24105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 24115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP -v "^: " < "$nlist" > "$nlist"S 24135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$nlist"S; then 24165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 24175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 24195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The mapping between symbol names and symbols. */ 24245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct { 24255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *name; 24265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *address; 24275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} lt_dlsymlist; 24285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 24295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 24305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 24315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* DATA imports from DLLs on WIN32 con't be const, because 24335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) runtime relocations are performed -- see ld's documentation 24345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) on pseudo-relocs. */" 24355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const= ;; 24365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *osf5*) 24375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo >> "$output_objdir/$my_dlsyms" "\ 24385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This system does not cope well with relocations in const data */" 24395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const= ;; 24405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const=const ;; 24425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern $lt_dlsym_const lt_dlsymlist 24465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[]; 24475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_dlsym_const lt_dlsymlist 24485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[] = 24495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){\ 24505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { \"$my_originator\", (void *) 0 }," 24515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $need_lib_prefix in 24535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no) 24545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {0, (void *) 0} 24625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 24635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This works around a problem in FreeBSD linker */ 24655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef FREEBSD_WORKAROUND 24665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const void *lt_preloaded_setup() { 24675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return lt_${my_prefix}_LTX_preloaded_symbols; 24685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 24705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 24725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif\ 24745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 24755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } # !$opt_dry_run 24765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable= 24785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_command " in 24795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -static "*) ;; 24805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 24825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiling the symbol table file with pic_flag works around 24835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # a FreeBSD bug that causes programs to crash when -lm is 24845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # linked before any other PIC object. But we must not use 24855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # pic_flag when linking with -static. The problem exists in 24865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-hpux*) 24905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag" ;; 24915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$my_pic_p" != Xno; then 24935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag" 24945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) symtab_cflags= 25005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $LTCFLAGS; do 25015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 25025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -pie | -fpie | -fPIE) ;; 25035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) symtab_cflags="$symtab_cflags $arg" ;; 25045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 25065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now compile the dynamic symbol file. 25085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 25095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Clean up the generated files. 25115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 25125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform the symbol file into the correct name. 25145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) symfileobj="$output_objdir/${my_outputname}S.$objext" 25155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 25165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 25175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$my_outputname.def"; then 25185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 25215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 25265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 25325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "unknown suffix for \`$my_dlsyms'" 25335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 25365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We keep going just in case the user didn't refer to 25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # really was required. 25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Nullify the symbol file. 25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_win32_libid arg 25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# return the library type of file 'arg' 25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Need a lot of goo to handle *both* DLLs and import libs 25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Has to be a shell function in order to 'eat' the argument 25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that is supplied when $file_magic_command is called. 25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_win32_libid () 25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="unknown" 25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_fileres=`file -L $1 2>/dev/null` 25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_fileres in 25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *ar\ archive\ import\ library*) # definitely import 25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 archive import" 25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *ar\ archive*) # could be an import, or static 25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_nmres=`eval $NM -f posix -A $1 | 25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n -e ' 25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1,100{ 25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) / I /{ 25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s,.*,import, 25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p 25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) q 25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }'` 25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_nmres in 25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) import*) win32_libid_type="x86 archive import";; 25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) win32_libid_type="x86 archive static";; 25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *DLL*) 25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 DLL" 25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *executable*) # but shell scripts are "executable" too... 25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_fileres in 25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *MS\ Windows\ PE\ Intel*) 25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 DLL" 25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$win32_libid_type" 25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_an_archive dir oldlib 25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_an_archive () 25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f_ex_an_ar_dir="$1"; shift 26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f_ex_an_ar_oldlib="$1" 26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_archives gentop oldlib ... 26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_archives () 26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_gentop="$1"; shift 26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldlibs=${1+"$@"} 26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldobjs="" 26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib="" 26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xabs="" 26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xdir="" 26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for my_xlib in $my_oldlibs; do 26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract the objects. 26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_xlib in 26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) my_xabs=`pwd`"/$my_xlib" ;; 26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$my_xlib" 26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib="$func_basename_result" 26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib_u=$my_xlib 26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while :; do 26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $extracted_archives " in 26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $my_xlib_u "*) 26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $extracted_serial + 1 26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extracted_serial=$func_arith_result 26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib_u=lt$extracted_serial-$my_xlib ;; 26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) break ;; 26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extracted_archives="$extracted_archives $my_xlib_u" 26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xdir="$my_gentop/$my_xlib_u" 26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$my_xdir" 26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-darwin*) 26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "Extracting $my_xabs" 26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not bother doing anything if just a dry run 26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_orig_dir=`pwd` 26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd $my_xdir || exit $? 26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_archive=$my_xabs 26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_curdir=`pwd` 26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_base_archive=`basename "$darwin_archive"` 26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$darwin_arches"; then 26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arch= 26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for darwin_arch in $darwin_arches ; do 26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "$darwin_curdir" 26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # $darwin_arches 26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_file= 26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_files= 26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for darwin_file in $darwin_filelist; do 26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $LIPO -create -output "$darwin_file" $darwin_files 26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # $darwin_filelist 26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM -rf unfat-$$ 26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "$darwin_orig_dir" 26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd $darwin_orig_dir 26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "$my_xdir" "$my_xabs" 26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $darwin_arches 26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } # !$opt_dry_run 26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "$my_xdir" "$my_xabs" 26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives_result="$my_oldobjs" 26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part1 [arg=no] 26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the first part of a libtool wrapper script on stdout. 26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with 26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below. 27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part1 () 27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1_arg1=no 27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1_arg1=$1 27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#! $SHELL 27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $output - temporary wrapper script for $objdir/$outputname 27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The $output program cannot be directly executed until all the libtool 27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libraries that it depends on are installed. 27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This wrapper script should never be moved out of the build directory. 27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If it is, it will not operate correctly. 27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting. It backslashifies 27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings. 27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed='${SED} -e 1s/^X//' 27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='$sed_quote_subst' 27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible 27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) emulate sh 27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULLCMD=: 27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is contrary to our usage. Disable this feature. 27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alias -g '\${1+\"\$@\"}'='\"\$@\"' 27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setopt NO_GLOB_SUBST 27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64 27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh 27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The HP-UX ksh and POSIX shell print the target directory to stdout 27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if CDPATH is set. 27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\" 27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This environment variable determines our operation mode. 27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test \"\$libtool_install_magic\" = \"$magic\"; then 27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install mode needs the following variables: 27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated_by_libtool_version='$macro_version' 27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs='$notinst_deplibs' 27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # When we are sourced in execute mode, \$file and \$ECHO are already set. 27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$libtool_execute_magic\" != \"$magic\"; then 27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ECHO=\"$qecho\" 27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\"\$0\" 27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure echo works. 27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"X\$1\" = X--no-reexec; then 27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Discard the --no-reexec flag, and continue. 27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Yippee, \$ECHO works! 27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restart under the correct shell, and then maybe \$ECHO will work. 27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi\ 27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find the directory that this script lives in. 27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test \"x\$thisdir\" = \"x\$file\" && thisdir=. 27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Follow symbolic links until we get to the real thisdir. 27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test -n \"\$file\"; do 27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there was a directory component, then change thisdir. 27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"x\$destdir\" != \"x\$file\"; then 27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \"\$destdir\" in 27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) thisdir=\"\$thisdir/\$destdir\" ;; 27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part1 27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part2 [arg=no] 27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the second part of a libtool wrapper script on stdout. 27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with 27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below. 27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part2 () 27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2_arg1=no 28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2_arg1=$1 28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Usually 'no', except on cygwin/mingw when embedded into 28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the cwrapper. 28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # special case for '.' 28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$thisdir\" = \".\"; then 28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thisdir=\`pwd\` 28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # remove .libs from thisdir 28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \"\$thisdir\" in 28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $objdir ) thisdir=. ;; 28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try to get the absolute directory name. 28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=\`cd \"\$thisdir\" && pwd\` 28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n \"\$absdir\" && thisdir=\"\$absdir\" 28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes; then 28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program=lt-'$outputname'$exeext 28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=\"\$thisdir/$objdir\" 28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f \"\$progdir/\$program\" || 28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\"\$\$-\$program\" 28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -d \"\$progdir\"; then 28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MKDIR \"\$progdir\" 28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # relink executable if necessary 28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n \"\$relink_command\"; then 28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \"\$relink_command_output\" >&2 28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { $RM \"\$progdir/\$program\"; 28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program='$outputname' 28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=\"\$thisdir/$objdir\" 28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f \"\$progdir/\$program\"; then" 28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Export our shlibpath_var if we have one. 28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add our own library path to $shlibpath_var 28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some systems cannot cope with colon-terminated $shlibpath_var 28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The second colon is a workaround for a bug in BeOS R4 sed 28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export $shlibpath_var 28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # fixup the dll searchpath if we need to. 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dllsearchpath"; then 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the dll search path components to the executable PATH 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PATH=$dllsearchpath:\$PATH 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$libtool_execute_magic\" != \"$magic\"; then 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Run the actual program with our arguments. 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Backslashes separate directories on plain windows 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-mingw | *-*-os2* | *-cegcc*) 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec \"\$progdir/\$program\" \${1+\"\$@\"} 29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The program doesn't exist. 29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi\ 29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part2 29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper [arg=no] 29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit a libtool wrapper script on stdout. 29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Don't directly open a file because we may want to 29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# incorporate the script contents within a cygwin/mingw 29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# wrapper executable. Must ONLY be called from within 29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link because it depends on a number of variables 29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# set therein. 29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable will take. If 'yes', then the emitted script 29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will assume that the directory in which it is stored is 29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the $objdir directory. This is a cygwin/mingw-specific 29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior. 29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper () 29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_arg1=no 29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_arg1=$1 29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # split this up so that func_emit_cwrapperexe_src 29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # can call each part independently. 29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_path arg 29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert paths to host format when used with build tools. 29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Intended for use with "native" mingw (where libtool itself 29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is running under the msys shell), or in the following cross- 29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# build environments: 29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build $host 29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mingw (msys) mingw [e.g. native] 29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# cygwin mingw 29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# *nix + wine mingw 29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# where wine is equipped with the `winepath' executable. 29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the native mingw case, the (msys) shell automatically 29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# converts paths for any non-msys applications it launches, 29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but that facility isn't available from inside the cwrapper. 29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Similar accommodations are necessary for $host mingw and 29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build cygwin. Calling this function does no harm for other 29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host/$build combinations not listed above. 29745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the path (on $build) that should be converted to 29765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation for $host. The result is stored 29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_path_result. 29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_path () 29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 29805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="$1" 29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) 29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $build in 29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) # actually, msys 29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # awkward: cmd appends spaces to result 29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* ) 29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`cygpath -w "$1"` 29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 29985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) 30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unfortunately, winepath does not exit with a non-zero 30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # error code, so we are forced to check the contents of 30025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # stdout. On the other hand, if the command is not 30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # found, the shell will set an exit code of 127 and print 30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # *an error message* to stdout. So we must check for both 30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # error code of zero AND non-empty stdout, which explains 30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the odd construction: 30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow warning below. 30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="" 30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_path_result" ; then 30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Could not determine host path corresponding to" 30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error " '$1'" 30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Continuing, but uninstalled executables may not work." 30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Fallback: 30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="$1" 30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_path 30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_pathlist arg 30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert pathlists to host format when used with build tools. 30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See func_to_host_path(), above. This function supports the 30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# following $build/$host combinations (but does no harm for 30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# combinations not listed here): 30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build $host 30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mingw (msys) mingw [e.g. native] 30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# cygwin mingw 30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# *nix + wine mingw 30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Path separators are also converted from $build format to 30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host format. If ARG begins or ends with a path separator 30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# character, it is preserved (but converted to $host format) 30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# on output. 30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is a pathlist (on $build) that should be converted to 30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation on $host. The result is stored 30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_pathlist_result. 30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_pathlist () 30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$1" 30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) 30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove leading and trailing path separator characters from 30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ARG. msys behavior is inconsistent here, cygpath turns them 30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # into '.;' and ';.', and winepath ignores them completely. 30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2="$1" 30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Once set for this call, this variable should not be 30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # reassigned. It is used in tha fallback case. 30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's|^:*||' -e 's|:*$||'` 30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $build in 30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) # Actually, msys. 30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Awkward: cmd appends spaces to result. 30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* ) 30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) 30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # unfortunately, winepath doesn't convert pathlists 30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="" 30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_oldIFS=$IFS 30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=: 30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$func_to_host_pathlist_oldIFS 30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$func_to_host_pathlist_f" ; then 30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path "$func_to_host_pathlist_f" 30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$func_to_host_path_result" ; then 30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_pathlist_result" ; then 30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$func_to_host_path_result" 30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=: 30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$func_to_host_pathlist_oldIFS 30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_pathlist_result" ; then 31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Could not determine the host path(s) corresponding to" 31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error " '$1'" 31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Continuing, but uninstalled executables may not work." 31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Fallback. This may break if $1 contains DOS-style drive 31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # specifications. The fix is not to complicate the expression 31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # below, but for the user to provide a working wine installation 31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # with winepath so that path translation in the cross-to-mingw 31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # case works properly. 31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_replace_pathsep_nix_to_dos="s|:|;|g" 31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_replace_pathsep_nix_to_dos"` 31125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now, add the leading and trailing path separators back 31145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$1" in 31155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$1" in 31195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_pathlist 31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_cwrapperexe_src 31295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# emit the source code for a wrapper executable on stdout 31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Must ONLY be called from within func_mode_link because 31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it depends on a number of variable set therein. 31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_cwrapperexe_src () 31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 31345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 31355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The $output program cannot be directly executed until all the libtool 31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libraries that it depends on are installed. 31415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) This wrapper executable should never be moved out of the build directory. 31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) If it is, it will not operate correctly. 31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Currently, it simply execs the wrapper *script* "$SHELL $output", 31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) but could eventually absorb all of the scripts functionality and 31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec $objdir/$outputname directly. 31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h> 31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h> 31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER 31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <direct.h> 31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <process.h> 31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h> 31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define setmode _setmode 31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <unistd.h> 31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdint.h> 31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __CYGWIN__ 31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h> 31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_SETENV 31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __STRICT_ANSI__ 31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *realpath (const char *, char *); 31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int putenv (char *); 31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int setenv (const char *, const char *, int); 31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <malloc.h> 31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h> 31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <assert.h> 31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h> 31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ctype.h> 31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h> 31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h> 31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h> 31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PATH_MAX) 31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX PATH_MAX 31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(MAXPATHLEN) 31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX MAXPATHLEN 31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX 1024 31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXOTH 31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXOTH 0 31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXGRP 31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXGRP 0 31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER 31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXUSR _S_IEXEC 31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define stat _stat 31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _INTPTR_T_DEFINED 31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define intptr_t int 32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR 32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR '/' 32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR ':' 32065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) defined (__OS2__) 32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_DOS_BASED_FILE_SYSTEM 32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb" 32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef DIR_SEPARATOR_2 32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR_2 '\\' 32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef PATH_SEPARATOR_2 32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR_2 ';' 32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR_2 32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* DIR_SEPARATOR_2 */ 32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) \ 32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* DIR_SEPARATOR_2 */ 32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PATH_SEPARATOR_2 32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* PATH_SEPARATOR_2 */ 32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PATH_SEPARATOR_2 */ 32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __CYGWIN__ 32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb" 32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef FOPEN_WB 32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "w" 32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _O_BINARY 32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define _O_BINARY 0 32425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XFREE(stale) do { \ 32465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (stale) { free ((void *) stale); stale = 0; } \ 32475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} while (0) 32485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef LTWRAPPER_DEBUGPRINTF 32505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined DEBUGWRAPPER 32515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ltwrapper_debugprintf (const char *fmt, ...) 32545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 32555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list args; 32565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start (args, fmt); 32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) vfprintf (stderr, fmt, args); 32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end (args); 32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 32615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) 32625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *program_name = NULL; 32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *xmalloc (size_t num); 32675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *xstrdup (const char *string); 32685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *base_name (const char *name); 32695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *find_executable (const char *wrapper); 32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *chase_symlinks (const char *pathspec); 32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int make_executable (const char *path); 32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int check_executable (const char *path); 32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *strendzap (char *str, const char *pat); 32745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_fatal (const char *message, ...); 32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_setenv (const char *name, const char *value); 32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *lt_extend_str (const char *orig_value, const char *add, int to_end); 32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_set (const char *arg); 32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_prepend (const char *arg); 32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_append (const char *arg); 32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int lt_split_name_value (const char *arg, char** name, char** value); 32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_exe_path (const char *name, const char *value); 32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_lib_path (const char *name, const char *value); 32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part1 = 32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1 yes | 32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's/\([\\"]\)/\\\1/g' \ 32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e 's/^/ "/' -e 's/$/\\n"/' 32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo ";" 32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part2 = 32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2 yes | 32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's/\([\\"]\)/\\\1/g' \ 32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e 's/^/ "/' -e 's/$/\\n"/' 32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo ";" 32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * MAGIC_EXE = "$magic_exe"; 33025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VARNAME = "$shlibpath_var"; 33035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist "$temp_rpath" 33075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE = ""; 33135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dllsearchpath"; then 33175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist "$dllsearchpath:" 33185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "PATH"; 33205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = ""; 33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE = ""; 33265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes; then 33305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX "--lt-" 33435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 33635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)main (int argc, char *argv[]) 33645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 33655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char **newargz; 33665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int newargc; 33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *tmp_pathspec; 33685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *actual_cwrapper_path; 33695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *actual_cwrapper_name; 33705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *target_name; 33715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *lt_argv_zero; 33725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) intptr_t rval = 127; 33735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 33755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program_name = (char *) xstrdup (base_name (argv[0])); 33775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* very simple arg parsing; don't want to rely on getopt */ 33815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc; i++) 33825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 33835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strcmp (argv[i], dumpscript_opt) == 0) 33845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 33855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$host" in 33875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* | *cygwin* ) 33885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # make stdout use "unix" line endings 33895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo " setmode(1,_O_BINARY);" 33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 33915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 33925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printf ("%s", script_text_part1); 33955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printf ("%s", script_text_part2); 33965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 33975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 33985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 33995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz = XMALLOC (char *, argc + 1); 34015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = find_executable (argv[0]); 34025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tmp_pathspec == NULL) 34035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Couldn't find %s", argv[0]); 34045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec)); 34065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_path)); 34105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 34115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (actual_cwrapper_path, actual_cwrapper_name); 34145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* wrapper name transforms */ 34165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (actual_cwrapper_name, ".exe"); 34175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_name); 34195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_name = tmp_pathspec; 34205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = 0; 34215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* target_name transforms -- use actual target program name; might have lt- prefix */ 34235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (target_name, ".exe"); 34255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (target_name); 34275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name = tmp_pathspec; 34285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = 0; 34295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name)); 34325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 34355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[0] = 34365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, (strlen (actual_cwrapper_path) + 34375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (newargz[0], actual_cwrapper_path); 34395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], "$objdir"); 34405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], "/"); 34415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* stop here, and copy so we don't have to do this twice */ 34455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = xstrdup (newargz[0]); 34465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], actual_cwrapper_name); 34495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* DO want the lt- prefix here if it exists, so use target_name */ 34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = NULL; 34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mingw*) 34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char* p; 34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p = strchr (newargz[0], '\\')) != NULL) 34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '/'; 34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '/'; 34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (target_name); 34765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_path); 34775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_name); 34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 34835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargc=0; 34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc; i++) 34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_set_opt_len] == '=') 34905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_set_opt_len + 1; 34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_set (p); 34935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_set (argv[++i]); /* don't copy */ 34975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_set_opt); 35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_prepend_opt_len] == '=') 35055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_prepend_opt_len + 1; 35075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_prepend (p); 35085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 35145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_prepend_opt); 35155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_append_opt_len] == '=') 35205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_append_opt_len + 1; 35225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_append (p); 35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_append (argv[++i]); /* don't copy */ 35275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_append_opt); 35305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) namespace, but it is not one of the ones we know about and 35365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) have already dealt with, above (inluding dump-script), then 35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) report an error. Otherwise, targets might begin to believe 35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) namespace. The first time any user complains about this, we'll 35405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) or a configure.ac-settable value. 35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 35435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Unrecognized option in %s namespace: '%s'", 35445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ltwrapper_option_prefix, argv[i]); 35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* otherwise ... */ 35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[++newargc] = xstrdup (argv[i]); 35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[++newargc] = NULL; 35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0; i < newargc; i++) 35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mingw*) 35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* execv doesn't actually work on mingw as expected on unix */ 35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rval == -1) 35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* failed to start process */ 35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 127; 35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; 35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execv (lt_argv_zero, newargz); 35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; /* =127, but avoids unused variable warning */ 35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void * 35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xmalloc (size_t num) 35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *p = (void *) malloc (num); 35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!p) 35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Memory exhausted"); 35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return p; 35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xstrdup (const char *string) 35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string) : NULL; 35995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * 36025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base_name (const char *name) 36035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *base; 36055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Skip over the disk name in MSDOS pathnames. */ 36085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name += 2; 36105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 36115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (base = name; *name; name++) 36135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_DIR_SEPARATOR (*name)) 36145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base = name + 1; 36155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return base; 36165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)check_executable (const char *path) 36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat st; 36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path ? (*path ? path : "EMPTY!") : "NULL!")); 36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!path) || (!*path)) 36265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((stat (path, &st) >= 0) 36295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 36315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make_executable (const char *path) 36375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rval = 0; 36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat st; 36405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path ? (*path ? path : "EMPTY!") : "NULL!")); 36435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!path) || (!*path)) 36445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (stat (path, &st) >= 0) 36475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; 36515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Searches for the full path of the wrapper. Returns 36545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newly allocated full path name if found, NULL otherwise 36555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Does not chase symlinks, even on platforms that support them. 36565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 36575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 36585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)find_executable (const char *wrapper) 36595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int has_slash = 0; 36615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p; 36625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p_next; 36635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* static buffer for getcwd */ 36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char tmp[LT_PATHMAX + 1]; 36655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int tmp_len; 36665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *concat_name; 36675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 36705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((wrapper == NULL) || (*wrapper == '\0')) 36725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 36735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Absolute path? */ 36755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = xstrdup (wrapper); 36795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 36805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 36815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 36825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 36845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 36865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_DIR_SEPARATOR (wrapper[0])) 36875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = xstrdup (wrapper); 36895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 36905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 36915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 36925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 36965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (p = wrapper; *p; p++) 36985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (*p == '/') 36995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_slash = 1; 37015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!has_slash) 37045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* no slashes; search PATH */ 37065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *path = getenv ("PATH"); 37075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (path != NULL) 37085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (p = path; *p; p = p_next) 37105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *q; 37125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t p_len; 37135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (q = p; *q; q++) 37145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_PATH_SEPARATOR (*q)) 37155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p_len = q - p; 37175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p_next = (*q == '\0' ? q : q + 1); 37185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (p_len == 0) 37195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* empty path: current directory */ 37215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (getcwd (tmp, LT_PATHMAX) == NULL) 37225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("getcwd failed"); 37235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_len = strlen (tmp); 37245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = 37255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, tmp, tmp_len); 37275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[tmp_len] = '/'; 37285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + tmp_len + 1, wrapper); 37295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 37315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = 37335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, p, p_len); 37355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[p_len] = '/'; 37365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + p_len + 1, wrapper); 37375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 37395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 37405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 37415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* not found in PATH; assume curdir */ 37445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Relative path | not found in path: prepend cwd */ 37465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (getcwd (tmp, LT_PATHMAX) == NULL) 37475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("getcwd failed"); 37485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_len = strlen (tmp); 37495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, tmp, tmp_len); 37515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[tmp_len] = '/'; 37525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + tmp_len + 1, wrapper); 37535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 37555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 37565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 37575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 37585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 37595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 37615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chase_symlinks (const char *pathspec) 37625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 37635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_ISLNK 37645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (pathspec); 37655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 37665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char buf[LT_PATHMAX]; 37675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat s; 37685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *tmp_pathspec = xstrdup (pathspec); 37695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *p; 37705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int has_symlinks = 0; 37715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (strlen (tmp_pathspec) && !has_symlinks) 37725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec)); 37755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lstat (tmp_pathspec, &s) == 0) 37765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (S_ISLNK (s.st_mode) != 0) 37785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_symlinks = 1; 37805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* search backwards for last DIR_SEPARATOR */ 37845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p--; 37875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* no more DIR_SEPARATORS left */ 37905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '\0'; 37935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 37955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *errstr = strerror (errno); 37975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 38015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!has_symlinks) 38035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (pathspec); 38055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = realpath (pathspec, buf); 38085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tmp_pathspec == 0) 38095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Could not follow symlinks for %s", pathspec); 38115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (tmp_pathspec); 38135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 38145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 38175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strendzap (char *str, const char *pat) 38185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t len, patlen; 38205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert (str != NULL); 38225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert (pat != NULL); 38235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len = strlen (str); 38255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patlen = strlen (pat); 38265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (patlen <= len) 38285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) str += len - patlen; 38305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strcmp (str, pat) == 0) 38315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *str = '\0'; 38325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return str; 38345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 38375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_error_core (int exit_status, const char *mode, 38385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *message, va_list ap) 38395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf (stderr, "%s: %s: ", program_name, mode); 38415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf (stderr, message, ap); 38425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf (stderr, ".\n"); 38435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (exit_status >= 0) 38455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit (exit_status); 38465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 38495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_fatal (const char *message, ...) 38505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list ap; 38525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start (ap, message); 38535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end (ap); 38555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 38585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_setenv (const char *name, const char *value) 38595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 38625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 38635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SETENV 38655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* always make a copy, for consistency with !HAVE_SETENV */ 38665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *str = xstrdup (value); 38675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setenv (name, str, 1); 38685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 38695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len = strlen (name) + 1 + strlen (value) + 1; 38705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *str = XMALLOC (char, len); 38715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sprintf (str, "%s=%s", name, value); 38725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (putenv (str) != EXIT_SUCCESS) 38735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (str); 38755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 38775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 38815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_extend_str (const char *orig_value, const char *add, int to_end) 38825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value; 38845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (orig_value && *orig_value) 38855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int orig_value_len = strlen (orig_value); 38875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int add_len = strlen (add); 38885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = XMALLOC (char, add_len + orig_value_len + 1); 38895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (to_end) 38905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value, orig_value); 38925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value + orig_value_len, add); 38935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 38955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value, add); 38975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value + add_len, orig_value); 38985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 39015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = xstrdup (add); 39035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new_value; 39055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 39085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_split_name_value (const char *arg, char** name, char** value) 39095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p; 39115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len; 39125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!arg || !*arg) 39135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 39145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p = strchr (arg, (int)'='); 39165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!p) 39185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 39195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *value = xstrdup (++p); 39215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len = strlen (arg) - strlen (*value); 39235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *name = XMALLOC (char, len); 39245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strncpy (*name, arg, len-1); 39255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*name)[len - 1] = '\0'; 39265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 39285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_set (const char *arg) 39325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, value); 39445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_prepend (const char *arg) 39505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = NULL; 39545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = lt_extend_str (getenv (name), value, 0); 39635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 39645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 39655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_append (const char *arg) 39715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = NULL; 39755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = lt_extend_str (getenv (name), value, 1); 39845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 39855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 39865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_exe_path (const char *name, const char *value) 39925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 39955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 39965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (name && *name && value && *value) 39985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = lt_extend_str (getenv (name), value, 0); 40005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* some systems can't cope with a ':'-terminated path #' */ 40015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len = strlen (new_value); 40025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 40045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value[len-1] = '\0'; 40055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 40075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 40085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 40125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_lib_path (const char *name, const char *value) 40135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 40145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 40165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 40175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (name && *name && value && *value) 40195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 40205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = lt_extend_str (getenv (name), value, 0); 40215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 40225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 40235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 40285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_cwrapperexe_src 40305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link arg... 40325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_link () 40335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 40345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 40355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 40365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # It is impossible to link a dll without this setting, and 40385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we shouldn't force the makefile maintainer to figure out 40395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # which system we are compiling for in order to pass an extra 40405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # flag for every libtool invocation. 40415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # allow_undefined=no 40425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: Unfortunately, there are problems with the above when trying 40445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to make a dll which has undefined symbols, in which case not 40455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # even a static library is built. For now, we need to specify 40465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -no-undefined on the libtool link line when we can be certain 40475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that all symbols are satisfied, otherwise we get a static library. 40485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=yes 40495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 40505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 40515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=yes 40525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 40535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 40545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_args=$nonopt 40555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$nonopt $@" 40565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=$nonopt 40575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=$nonopt 40585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_rpath= 40605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_rpath= 40615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_shlibpath= 40625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_shlibpath= 40635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) convenience= 40645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_convenience= 40655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 40665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_deplibs= 40675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags= 40685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags= 40695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dllsearchpath= 40705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path=`pwd` 40715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir= 40725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_inherited_linker_flags= 40735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoid_version=no 40755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles= 40765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles= 40775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=no 40785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=no 40795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols= 40805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols_regex= 40815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated= 40825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs= 40835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ltlibs= 40845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) module=no 40855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no_install=no 40865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs= 40875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_objects= 40885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_files_regex= 40895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=no 40905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preload=no 40915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 40925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prevarg= 40935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release= 40945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 40955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xrpath= 40965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) perm_rpath= 40975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_rpath= 40985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thread_safe=no 40995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo= 41005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo_number=no 41015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_libs= 41025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) single_module="${wl}-single_module" 41035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_infer_tag $base_compile 41045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to know -static, to get the right output filenames. 41065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 41075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 41085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 41105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" != yes && \ 41115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "can not build a shared library" 41125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=no 41135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 41145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static | -static | -static-libtool-libs) 41165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static) 41185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "complete static linking is impossible in this configuration" 41205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$link_static_flag"; then 41225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=yes 41255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static) 41275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_flag" && test -n "$link_static_flag"; then 41285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=built 41315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static-libtool-libs) 41335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_flag" && test -n "$link_static_flag"; then 41345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=yes 41375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 41405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 41415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 41425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 41455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See if our shared archives depend on static archives. 41475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_archive_from_new_cmds" && build_old_libs=yes 41485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Go through the arguments, transforming them on the way. 41505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$#" -gt 0; do 41515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$1" 41525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 41535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 41545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qarg=$func_quote_for_eval_unquoted_result 41555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libtool_args " $func_quote_for_eval_result" 41565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the previous option needs an argument, assign it. 41585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$prev"; then 41595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $prev in 41605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output) 41615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " @OUTPUT@" 41625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " @OUTPUT@" 41635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $prev in 41675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles|dlprefiles) 41685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$preload" = no; then 41695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the symbol object into the linking commands. 41705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " @SYMFILE@" 41715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " @SYMFILE@" 41725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preload=yes 41735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la | *.lo) ;; # We handle these cases below. 41765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) force) 41775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$dlself" = no; then 41785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=needless 41795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 41805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 41825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 41835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self) 41855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 41865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=yes 41875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=yes 41895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 41905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=needless 41915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 41925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 41945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 41955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 41975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 41985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $arg" 41995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 42005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $arg" 42015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expsyms) 42085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$arg" 42095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$arg" \ 42105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_error "symbol file \`$arg' does not exist" 42115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expsyms_regex) 42155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols_regex="$arg" 42165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) framework) 42205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 42215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 42225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$deplibs " in 42235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $qarg.ltframework "*) ;; 42245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix) 42335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir="$arg" 42345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objectlist) 42385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$arg"; then 42395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_arg=$arg 42405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) moreargs= 42415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for fil in `cat "$save_arg"` 42425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 42435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# moreargs="$moreargs $fil" 42445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$fil 42455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled object. 42465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool object. 42485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_unsafe_p "$arg"; then 42495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object= 42505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object= 42515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 42535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$arg" 42545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || 42565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$non_pic_object" || 42575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" = none && 42585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" = none; then 42595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of object for \`$arg'" 42605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 42635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 42645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 42655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_object" != none; then 42675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 42685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object="$xdir$pic_object" 42695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 42715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $pic_object" 42735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 42765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If libtool objects are unsupported, then we need to preload. 42775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 42785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # CHECK ME: I think I busted this. -Ossama 42825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 42835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preload the old-style object. 42845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $pic_object" 42855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A PIC object. 42895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 42905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$pic_object" 42915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Non-PIC object. 42945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$non_pic_object" != none; then 42955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 42965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$xdir$non_pic_object" 42975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard non-PIC object 42995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || test "$pic_object" = none ; then 43015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$non_pic_object" 43025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the PIC object exists, use it instead. 43055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $xdir was prepended to $pic_object above. 43065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$pic_object" 43075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only an error if not doing a dry-run. 43115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_dry_run; then 43125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 43135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 43145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 43155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 43165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$arg" 43175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object=$xdir$objdir/$func_lo2o_result 43185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object=$xdir$func_lo2o_result 43195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 43205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$arg' is not a valid libtool object" 43235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 43265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "link input file \`$arg' does not exist" 43285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$save_arg 43305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_regex) 43345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_files_regex="$arg" 43355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release) 43395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release="-$arg" 43405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath | xrpath) 43445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 43455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 43465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 43475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 43485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only absolute run-paths are allowed" 43495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = rpath; then 43525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$rpath " in 43535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 43545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rpath="$rpath $arg" ;; 43555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 43585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 43595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $arg" ;; 43605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shrext) 43665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shrext_cmds="$arg" 43675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak) 43715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_libs="$weak_libs $arg" 43725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xcclinker) 43765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $qarg" 43775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $qarg" 43785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $qarg" 43805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $qarg" 43815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xcompiler) 43845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $qarg" 43855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $qarg" 43875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $qarg" 43885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xlinker) 43915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $qarg" 43925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $wl$qarg" 43935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $wl$qarg" 43955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $wl$qarg" 43965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 43995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$prev=\"\$arg\"" 44005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 44015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 44045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # test -n "$prev" 44055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prevarg="$arg" 44075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 44095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static) 44105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$link_static_flag"; then 44115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See comment for -static flag below, for more details. 44125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $link_static_flag" 44135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $link_static_flag" 44145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -allow-undefined) 44195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: remove this flag sometime in the future. 44205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -avoid-version) 44245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoid_version=yes 44255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen) 44295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlfiles 44305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlpreopen) 44345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 44355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-dynamic) 44395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 44405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols | -export-symbols-regex) 44445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "more than one -exported-symbols argument is not allowed" 44465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$arg" = "X-export-symbols"; then 44485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=expsyms 44495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 44505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=expsyms_regex 44515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -framework) 44565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=framework 44575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -inst-prefix-dir) 44615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=inst_prefix 44625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so, if we see these flags be careful not to treat them like -L 44675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L[A-Z][A-Z]*:*) 44685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $with_gcc/$host in 44695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no/*-*-irix* | /*-*-irix*) 44705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 44715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 44725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 44745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 44785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$arg" 44795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 44805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dir"; then 44815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$#" -gt 0; then 44825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "require no space between \`-L' and \`$1'" 44835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 44845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "need path for \`-L' option" 44855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 44885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 44895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 44905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 44915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 44925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$absdir" && \ 44935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot determine absolute directory name of \`$dir'" 44945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$absdir" 44955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 44975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$deplibs " in 44985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$dir "*) ;; 44995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 45005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs -L$dir" 45015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path="$lib_search_path $dir" 45025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 45085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$dir:"*) ;; 45095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$dir;; 45105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$dir";; 45115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 45135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$testbindir:"*) ;; 45145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$testbindir;; 45155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$testbindir";; 45165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 45235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # These systems don't actually have a C or math library (as such) 45275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-os2*) 45305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # These systems don't actually have a C library (as such) 45315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not include libc due to us having libc/libc_r. 45355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-rhapsody* | *-*-darwin1.[012]) 45385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Rhapsody C and math libraries are in the System framework 45395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs System.ltframework" 45405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sco3.2v5* | *-*-sco5v6*) 45435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Causes problems with __ctype 45445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Compiler inserts libc in the correct place for threads to work 45485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "X$arg" = "X-lc_r"; then 45525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not include libc_r directly, use -pthread flag. 45555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 45595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 45605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -module) 45645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) module=yes 45655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # classes, name mangling, and exception handling. 45705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Darwin uses the -arch flag to determine output architecture. 45715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -model|-arch|-isysroot) 45725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 45735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 45745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 45755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcompiler 45765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 45815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 45825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 45835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 45845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 45855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -multi_module) 45915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) single_module="${wl}-multi_module" 45925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-fast-install) 45965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fast_install=no 45975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-install) 46015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 46025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The PATH hackery in wrapper scripts is required on Windows 46045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and Darwin in order for the loader to find any dlls it needs. 46055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-no-install' is ignored for $host" 46065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "assuming \`-no-fast-install' instead" 46075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fast_install=no 46085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) no_install=yes ;; 46105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-undefined) 46155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=no 46165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -objectlist) 46205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=objectlist 46215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o) prev=output ;; 46255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -precious-files-regex) 46275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=precious_regex 46285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -release) 46325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=release 46335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -rpath) 46375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=rpath 46385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R) 46425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xrpath 46435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) 46475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-R' '' "$arg" 46485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 46495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 46505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 46515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 46525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 46535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only absolute run-paths are allowed" 46545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 46575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 46585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $dir" ;; 46595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 46645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The effects of -shared are defined in a previous loop. 46655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shrext) 46695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=shrext 46705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static | -static-libtool-libs) 46745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The effects of -static are defined in a previous loop. 46755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We used to do the same as -all-static on platforms that 46765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # didn't have a PIC flag, but the assumption that the effects 46775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # would be equivalent was wrong. It would break on at least 46785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Digital Unix and AIX. 46795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -thread-safe) 46835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thread_safe=yes 46845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-info) 46885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=vinfo 46895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-number) 46935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=vinfo 46945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo_number=yes 46955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -weak) 46995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=weak 47005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wc,*) 47045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wc,' '' "$arg" 47055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 47065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg= 47075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 47085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for flag in $args; do 47095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$flag" 47115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$arg $wl$func_quote_for_eval_result" 47125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $func_quote_for_eval_result" 47135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 47145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$arg" 47165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$func_stripname_result 47175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wl,*) 47205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wl,' '' "$arg" 47215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 47225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg= 47235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 47245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for flag in $args; do 47255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$flag" 47275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$arg $wl$func_quote_for_eval_result" 47285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $func_quote_for_eval_result" 47305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 47315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$arg" 47335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$func_stripname_result 47345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xcompiler) 47375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcompiler 47385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xlinker) 47425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xlinker 47435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -XCClinker) 47475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcclinker 47485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -msg_* for osf cc 47525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -msg_*) 47535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -r[0-9][0-9]* specifies the processor on the SGI compiler 47595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # +DA*, +DD* enable 64-bit mode on the HP compiler 47615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -q* pass through compiler args for the IBM compiler 47625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -m*, -t[45]*, -txscale* pass through architecture-specific 47635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiler args for GCC 47645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -F/path gives path to uninstalled frameworks, gcc on darwin 47655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # @file GCC response files 47675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 47725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 47735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 47745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some other compiler flag. 47785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -* | +*) 47795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$objext) 47845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard object. 47855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs="$objs $arg" 47865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 47895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled object. 47905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool object. 47925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_unsafe_p "$arg"; then 47935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object= 47945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object= 47955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 47975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$arg" 47985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || 48005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$non_pic_object" || 48015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" = none && 48025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" = none; then 48035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of object for \`$arg'" 48045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 48075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 48085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 48095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_object" != none; then 48115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 48125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object="$xdir$pic_object" 48135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 48155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $pic_object" 48175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 48195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If libtool objects are unsupported, then we need to preload. 48215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 48225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # CHECK ME: I think I busted this. -Ossama 48265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 48275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preload the old-style object. 48285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $pic_object" 48295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A PIC object. 48335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 48345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$pic_object" 48355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Non-PIC object. 48385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$non_pic_object" != none; then 48395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 48405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$xdir$non_pic_object" 48415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard non-PIC object 48435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || test "$pic_object" = none ; then 48455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$non_pic_object" 48465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the PIC object exists, use it instead. 48495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $xdir was prepended to $pic_object above. 48505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$pic_object" 48515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only an error if not doing a dry-run. 48555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_dry_run; then 48565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 48575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 48585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 48595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$arg" 48615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object=$xdir$objdir/$func_lo2o_result 48625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object=$xdir$func_lo2o_result 48635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 48645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$arg' is not a valid libtool object" 48675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 48705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 48725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # An archive. 48735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 48745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_deplibs="$old_deplibs $arg" 48755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 48765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 48775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 48795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled library. 48805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 48825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlopen. 48835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $arg" 48845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$prev" = dlprefiles; then 48865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The library was specified with -dlpreopen. 48875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $arg" 48885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 48915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 48935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 48945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some other compiler argument. 48965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 48975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unknown arguments in both finalize_command and compile_command need 48985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to be aesthetically quoted because they are evaled later. 48995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 49005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 49015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # arg 49035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now actually substitute the argument into the commands. 49055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$arg"; then 49065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 49075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 49085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # argument parsing loop 49105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$prev" && \ 49125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "the \`$prevarg' option requires an argument" 49135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval arg=\"$export_dynamic_flag_spec\" 49165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 49175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 49185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs= 49215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # calculate the name of the file, without its directory 49225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$output" 49235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname="$func_basename_result" 49245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs_save="$libobjs" 49255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 49275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # get the directories listed in $shlibpath_var 49285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 49305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shlib_search_path= 49315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$output" "/" "" 49365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_objdir="$func_dirname_result$objdir" 49375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create the object directory. 49385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$output_objdir" 49395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Determine the type of output 49415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $output in 49425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") 49435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an output file" 49445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) linkmode=oldlib ;; 49465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo | *.$objext) linkmode=obj ;; 49475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) linkmode=lib ;; 49485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) linkmode=prog ;; # Anything else should be a program. 49495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specialdeplibs= 49525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs= 49545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find all interdependent deplibs by searching for libraries 49555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that are linked more than once (e.g. -la -lb -la) 49565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $deplibs; do 49575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 49585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$libs " in 49595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$libs $deplib" 49635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 49645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 49665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$predeps $libs $compiler_lib_search_path $postdeps" 49675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Compute libraries that are listed more than once in $predeps 49695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $postdeps and mark them as special (i.e., whose duplicates are 49705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # not to be eliminated). 49715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps= 49725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_compiler_generated_deps; then 49735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for pre_post_dep in $predeps $postdeps; do 49745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$pre_post_deps " in 49755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps="$pre_post_deps $pre_post_dep" 49785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 49795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps= 49815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 49845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs= 49855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path= 49865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=no # whether we're linking any uninstalled libtool libraries 49875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs= # not-installed libtool libraries 49885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path= # paths that contain not-installed libtool libraries 49895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 49915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 49925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passes="conv dlpreopen link" 49935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $dlfiles $dlprefiles; do 49945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 49955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) ;; 49965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 49975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 50035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs= 50045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs= 50055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alldeplibs=no 50065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 50075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 50085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passes="conv scan dlopen dlpreopen link" 50095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) passes="conv" 50115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for pass in $passes; do 50155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The preopen pass in lib mode reverses $deplibs; put it back here 50165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so that -L comes before libs that need it for instance... 50175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link"; then 50185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## FIXME: Find the place where the list is rebuilt in the wrong 50195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## order, and fix it there properly 50205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs= 50215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $deplibs; do 50225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs="$deplib $tmp_deplibs" 50235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$tmp_deplibs" 50255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link" || 50285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode,$pass" = "prog,scan"; then 50295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$deplibs" 50305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 50315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 50335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $pass in 50345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen) libs="$dlfiles" ;; 50355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreopen) libs="$dlprefiles" ;; 50365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) 50375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$deplibs %DEPLIBS%" 50385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 50395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,dlpreopen"; then 50435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect and forward deplibs of preopened libtool libs 50445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 50455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Ignore non-libtool-libs 50465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs= 50475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 50485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) func_source "$lib" ;; 50495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect preopened libtool deplibs, except any this library 50525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # has declared as weak libs 50535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 50545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $weak_libs " in 50565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib_base "*) ;; 50575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$deplibs $deplib" ;; 50585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$dlprefiles" 50625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlopen; then 50645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect dlpreopened libraries 50655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_deplibs="$deplibs" 50665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 50675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $libs; do 50705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib= 50715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 50725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 50735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 50755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 50765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 50775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 50785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $deplib" 50795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib ; then 50805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 50815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 50825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 50875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 50895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" != lib && test "$linkmode" != prog; then 50905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-l' is ignored for archives/objects" 50915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 50925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-l' '' "$deplib" 50945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 50955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 50965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 50985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for searchdir in $searchdirs; do 51015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for search_ext in .la $std_shrext .so .a; do 51025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Search the libtool library 51035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib="$searchdir/lib${name}${search_ext}" 51045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lib"; then 51055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$search_ext" = ".la"; then 51065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=yes 51075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 51095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 2 51115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$found" != yes; then 51155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # deplib doesn't seem to be a libtool library 51165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else # deplib is a libtool library 51255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to do some special things here, and not later. 51275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 51295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) 51305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$lib"; then 51315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 51325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 51335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 51345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for l in $old_library $library_names; do 51355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ll="$l" 51365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$ll" = "X$old_library" ; then # only static version available 51385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 51395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$lib" "" "." 51405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ladir="$func_dirname_result" 51415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib=$ladir/$old_library 51425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) ;; 51545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 51555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # -l 51585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.ltframework) 51595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib ; then 51655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 51665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 51675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 51695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 51745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 51755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 51765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pass" = conv && continue 51785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 51795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$deplib" 51805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 51815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 51835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 51845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = scan; then 51885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$deplib" 51945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 51955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 51975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-L' is ignored for archives/objects" 51985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # linkmode 52005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # -L 52025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) 52035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = link; then 52045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-R' '' "$deplib" 52055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 52065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure the xrpath contains only unique directories. 52075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 52085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 52095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $dir" ;; 52105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) lib="$deplib" ;; 52165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 52175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 52185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 52225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 52235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Linking convenience modules into shared libraries is allowed, 52245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but linking other static libraries is non-portable. 52255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $dlpreconveniencelibs " in 52265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 52275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 52285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=no 52295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplibs_check_method in 52305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern*) 52315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplibs_check_method; shift 52325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) | $EGREP "$match_pattern_regex" > /dev/null; then 52355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=yes 52365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pass_all) 52395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=yes 52405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$valid_a_lib" != yes; then 52435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 52445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 52465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 52475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have" 52485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** that it is just a static archive that I should not use here." 52505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 52525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the" 52535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** static library $deplib is not portable!" 52545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 52615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != link; then 52625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 52655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 52665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # linkmode 52705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # *.$libext 52715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo | *.$objext) 52725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 52735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" = prog; then 52755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there is no dlopen support or we're linking statically, 52775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we need to preload. 52785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $deplib" 52795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 52805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 52815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $deplib" 52835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) %DEPLIBS%) 52885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alldeplibs=yes 52895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $deplib 52925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$found" = yes || test -f "$lib"; then : 52945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 52995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$lib" \ 53005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_error "\`$lib' is not a valid libtool archive" 53015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$lib" "" "." 53035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ladir="$func_dirname_result" 53045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname= 53065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen= 53075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreopen= 53085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir= 53095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 53105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 53115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inherited_linker_flags= 53125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the library was installed with an old release of libtool, 53135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # it will not redefine variables installed, or shouldnotlink 53145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installed=yes 53155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shouldnotlink=no 53165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoidtemprpath= 53175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .la file 53205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 53215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Convert "-framework foo" to "foo.ltframework" 53235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inherited_linker_flags"; then 53245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_inherited_linker_flags " in 53275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $tmp_inherited_linker_flag "*) ;; 53285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 53305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link" || 53345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode,$pass" = "prog,scan" || 53355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 53415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only check for convenience libraries 53425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" 53435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 53445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$old_library"; then 53455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of link library for \`$lib'" 53465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # It is a libtool convenience library, so add in its objects. 53485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) convenience="$convenience $ladir/$objdir/$old_library" 53495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_convenience="$old_convenience $ladir/$objdir/$old_library" 53505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 53515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 53525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 53535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 53545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 53555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 53575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 53595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" != prog && test "$linkmode" != lib; then 53615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a convenience library" 53625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 53645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = conv 53655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the name of the library we link against. 53685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib= 53695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for l in $old_library $library_names; do 53705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib="$l" 53715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$linklib"; then 53735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of link library for \`$lib'" 53745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlopen. 53775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlopen; then 53785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 53795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlname" || 53825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$dlopen_support" != yes || 53835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" = no; then 53845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there is no dlname, no dlopen support or we're linking 53855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # statically, we need to preload. We also need to preload any 53865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # dependent libraries so libltdl's deplib preloader doesn't 53875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # bomb out in the load deplibs phase. 53885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $lib $dependency_libs" 53895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 53905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $lib" 53915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 53935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = dlopen 53945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 53965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $ladir in 53975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 53995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) abs_ladir=`cd "$ladir" && pwd` 54005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$abs_ladir"; then 54015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot determine absolute directory name of \`$ladir'" 54025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "passing it literally to the linker, although it might fail" 54035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) abs_ladir="$ladir" 54045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 54065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 54075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 54085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) laname="$func_basename_result" 54095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find the relevant object directory and library name. 54115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$installed" = Xyes; then 54125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "library \`$lib' was moved." 54145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir" 54155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir" 54165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir="$abs_ladir" 54175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$libdir" 54195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$libdir" 54205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir" 54255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir" 54265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove this search path later 54275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path="$notinst_path $abs_ladir" 54285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir/$objdir" 54305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir/$objdir" 54315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove this search path later 54325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path="$notinst_path $abs_ladir" 54335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $installed = yes 54355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.la' "$laname" 54365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 54375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlpreopen. 54395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen; then 54405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir" && test "$linkmode" = prog; then 54415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prefer using a static library (so that no silly _DYNAMIC symbols 54445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are required to link). 54455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_library"; then 54465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$old_library" 54475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Keep a list of preopened convenience libraries to check 54485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that they are being used correctly in the link pass. 54495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 54505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Otherwise, use the dlname, so that lt_dlopen finds it. 54525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$dlname"; then 54535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$dlname" 54545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$linklib" 54565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = dlpreopen 54585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 54605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link the convenience library 54615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 54625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$dir/$old_library $deplibs" 54635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode,$pass" = "prog,link"; then 54645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$dir/$old_library $compile_deplibs" 54655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$dir/$old_library $finalize_deplibs" 54665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" # used for prog,scan pass 54685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 54705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog && test "$pass" != link; then 54745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $ladir" 54755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" 54765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linkalldeplibs=no 54785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$link_all_deplibs" != no || test -z "$library_names" || 54795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" = no; then 54805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linkalldeplibs=yes 54815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 54845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 54855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 54865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) func_stripname '-L' '' "$deplib" 54875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 54885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 54895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 54905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Need to link against all dependency_libs? 54915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkalldeplibs" = yes; then 54925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 54935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Need to hardcode shared library paths 54955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # or/and link against static libraries 54965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 54975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 54995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 55005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 55015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 55045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for deplib 55055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 55065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $linkmode = prog... 55075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 55095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names" && 55105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { { test "$prefer_static_libs" = no || 55115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$prefer_static_libs,$installed" = "built,yes"; } || 55125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$old_library"; }; then 55135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to hardcode the library path 55145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure the rpath contains only unique directories. 55165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$temp_rpath:" in 55175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *"$absdir:"*) ;; 55185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) temp_rpath="$temp_rpath$absdir:" ;; 55195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Hardcode the library path. 55235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip directories that are in the system default run-time 55245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # search path. 55255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 55265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 55275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_rpath " in 55295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 55305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_rpath="$compile_rpath $absdir" 55315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 55355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 55365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 55385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 55395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" 55405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $linkmode,$pass = prog,link... 55445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$alldeplibs" = yes && 55465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$deplibs_check_method" = pass_all || 55475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$build_libtool_libs" = yes && 55485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$library_names"; }; }; then 55495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We only need to search for static libraries 55505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 55515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_static=no # Whether the deplib will be linked statically 55555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) use_static_libs=$prefer_static_libs 55565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$use_static_libs" = built && test "$installed" = yes; then 55575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) use_static_libs=no 55585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names" && 55605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$use_static_libs" = no || test -z "$old_library"; }; then 55615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 55625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc*) 55635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # No point in relinking DLLs because paths are not encoded 55645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs="$notinst_deplibs $lib" 55655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=no 55665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = no; then 55695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs="$notinst_deplibs $lib" 55705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=yes 55715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This is a shared library 55755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Warn about portability, can't link against -module's on some 55775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # systems (darwin). Don't bleat about dlopened modules though! 55785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopenmodule="" 55795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dlpremoduletest in $dlprefiles; do 55805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dlpremoduletest" = "X$lib"; then 55815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopenmodule="$dlpremoduletest" 55825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 55835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 55855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 55875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 55885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the executable $output against the loadable module" 55895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 55905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** $linklib is not portable!" 55935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib && 55955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_into_libs" = yes; then 55965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Hardcode the library path. 55975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip directories that are in the system default run-time 55985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # search path. 55995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 56005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 56015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 56025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_rpath " in 56035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 56045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_rpath="$compile_rpath $absdir" 56055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 56095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 56105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 56115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 56125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 56135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" 56145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_archive_from_expsyms_cmds"; then 56205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # figure out the soname 56215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $library_names 56225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 56235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) realname="$1" 56245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 56255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 56265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # use dlname if we got it. it's perfectly good, no? 56275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlname"; then 56285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$dlname" 56295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$soname_spec"; then 56305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # bleh windows 56315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 56325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | mingw* | *cegcc*) 56335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 56345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=$func_arith_result 56355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="-$major" 56365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval soname=\"$soname_spec\" 56395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$realname" 56415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make a new name for the extract_expsyms_cmds to use 56445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soroot="$soname" 56455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$soroot" 56465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$func_basename_result" 56475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.dll' "$soname" 56485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib=libimp-$func_stripname_result.a 56495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the library has no export list, then create one now 56515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$soname-def"; then : 56525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting exported symbol list from \`$soname'" 56545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create $newlib 56585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$newlib"; then :; else 56595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating import library for \`$soname'" 56605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # make sure the library variables are pointing to the new library 56635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$output_objdir 56645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib=$newlib 56655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # test -n "$old_archive_from_expsyms_cmds" 56665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$mode" != relink; then 56685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath= 56695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir= 56705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add= 56715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=yes 56725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $hardcode_action in 56735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) immediate | unsupported) 56745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = no; then 56755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$linklib" 56765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 56775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-unixware7*) add_dir="-L$dir" ;; 56815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin* ) 56825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # if the lib is a (non-dlopened) module then we can not 56835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # link against it, someone is ignoring the earlier warnings 56845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if /usr/bin/file -L $add 2> /dev/null | 56855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP ": [^:]* bundle" >/dev/null ; then 56865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dlopenmodule" != "X$lib"; then 56875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$old_library" ; then 56895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 56905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** And there doesn't seem to be a static archive available" 56915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** The link will probably fail, sorry" 56925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$old_library" 56945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$old_library"; then 56965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$old_library" 56975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = no; then 57015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 57025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sunos*) add_shlibpath="$dir" ;; 57035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$dir" 57055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = no; then 57075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath="$dir" 57085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=no 57115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink) 57145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = yes && 57155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_direct_absolute" = no; then 57165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$linklib" 57175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = yes; then 57185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$dir" 57195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try looking first in the location we're being installed to. 57205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 57215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 57225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]*) 57235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="$add_dir -L$inst_prefix_dir$libdir" 57245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = yes; then 57295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath="$dir" 57305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=no 57335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) lib_linked=no ;; 57365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$lib_linked" != yes; then 57395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "unsupported hardcode properties" 57405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$add_shlibpath"; then 57435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$compile_shlibpath: in 57445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$add_shlibpath:"*) ;; 57455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 57495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && compile_deplibs="$add $compile_deplibs" 57515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && deplibs="$add_dir $deplibs" 57535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && deplibs="$add $deplibs" 57545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" != yes && 57555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_minus_L" != yes && 57565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_shlibpath_var" = yes; then 57575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$finalize_shlibpath: in 57585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$libdir:"*) ;; 57595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$mode" = relink; then 57665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath= 57675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir= 57685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add= 57695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Finalize command for both is simple: just hardcode it. 57705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = yes && 57715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_direct_absolute" = no; then 57725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$libdir/$linklib" 57735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = yes; then 57745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$libdir" 57755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = yes; then 57775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$finalize_shlibpath: in 57785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$libdir:"*) ;; 57795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_automatic" = yes; then 57835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir" && 57845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$inst_prefix_dir$libdir/$linklib" ; then 57855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$inst_prefix_dir$libdir/$linklib" 57865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$libdir/$linklib" 57885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We cannot seem to hardcode it, guess we'll fake it. 57915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$libdir" 57925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try looking first in the location we're being installed to. 57935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 57945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 57955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]*) 57965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="$add_dir -L$inst_prefix_dir$libdir" 57975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 58015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 58045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && deplibs="$add_dir $deplibs" 58085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && deplibs="$add $deplibs" 58095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" = prog; then 58125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Here we assume that one of hardcode_direct or hardcode_minus_L 58135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is not unsupported. This is valid on all known static and 58145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # shared platforms. 58155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" != unsupported; then 58165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && linklib="$old_library" 58175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$dir/$linklib $compile_deplibs" 58185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$dir/$linklib $finalize_deplibs" 58195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="-l$name -L$dir $compile_deplibs" 58215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$build_libtool_libs" = yes; then 58245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Not a shared library 58255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$deplibs_check_method" != pass_all; then 58265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We're trying link a shared library against a static one 58275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but the system doesn't support it. 58285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just print a warning and add the library to dependency_libs so 58305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that the program can be linked against the static library. 58315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 58325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: This system can not link to static lib archive $lib." 58335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 58345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 58355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have." 58365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes; then 58375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** But as you try to build a module library, libtool will still create " 58385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** a static module, that should work as long as the dlopening application" 58395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$global_symbol_pipe"; then 58415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 58425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** However, this would only work if libtool was able to extract symbol" 58435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** not find such a program. So, this module is probably useless." 58455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = no; then 58485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=module 58495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 58505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 58525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$dir/$old_library $deplibs" 58565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_static=yes 58575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # link shared/static library? 58595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 58615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dependency_libs" && 58625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$hardcode_into_libs" != yes || 58635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_old_libs" = yes || 58645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$link_static" = yes; }; then 58655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract -R from dependency_libs 58665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_deplibs= 58675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $dependency_libs; do 58685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 58695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) func_stripname '-R' '' "$libdir" 58705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_xrpath=$func_stripname_result 58715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $xrpath " in 58725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $temp_xrpath "*) ;; 58735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $temp_xrpath";; 58745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac;; 58755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) temp_deplibs="$temp_deplibs $libdir";; 58765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 58775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 58785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$temp_deplibs" 58795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $absdir" 58825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link against this library 58835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ... and its dependency_libs 58855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 58865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 58875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 58885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 58895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 58905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 58925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 58945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 58955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$link_all_deplibs" != no; then 58975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the search paths of all dependency libraries 58985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 58995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path= 59005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 59015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) path="$deplib" ;; 59025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 59035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$deplib" "" "." 59045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 59055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 59065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 59075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 59095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 59105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$absdir"; then 59115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot determine absolute directory name of \`$dir'" 59125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$dir" 59135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "^installed=no" $deplib > /dev/null; then 59175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 59185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 59195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl= 59205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$deplibrary_names" ; then 59225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tmp in $deplibrary_names ; do 59235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl=$tmp 59245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$absdir/$objdir/$depdepl" ; then 59265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl="$absdir/$objdir/$depdepl" 59275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$darwin_install_name"; then 59295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path= 59345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 59385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path="-L$absdir/$objdir" 59395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 59445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$deplib' is not a valid libtool archive" 59455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$absdir" != "$libdir" && \ 59465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$deplib' seems to be moved" 59475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path="-L$absdir" 59495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs " in 59535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $path "*) ;; 59545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$path $deplibs" ;; 59555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # link_all_deplibs != no 59585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # linkmode = lib 59595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for deplib in $libs 59605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = link; then 59615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = "prog"; then 59625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$newdependency_libs" 59695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen; then 59705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link the dlpreopened libraries before other libraries 59715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $save_deplibs; do 59725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 59735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != dlopen; then 59765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != conv; then 59775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure lib_search_path contains only unique directories. 59785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path= 59795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $newlib_search_path; do 59805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$lib_search_path " in 59815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 59825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) lib_search_path="$lib_search_path $dir" ;; 59835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path= 59865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" != "prog,link"; then 59895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vars="deplibs" 59905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vars="compile_deplibs finalize_deplibs" 59925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for var in $vars dependency_libs; do 59945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add libraries to $var in reverse order 59955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval tmp_libs=\"\$$var\" 59965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs= 59975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $tmp_libs; do 59985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: Pedantically, this is the right thing to do, so 59995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that some nasty dependency loop isn't accidentally 60005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # broken: 60015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #new_libs="$deplib $new_libs" 60025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Pragmatically, this seems to cause very few problems in 60035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # practice: 60045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 60055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) new_libs="$deplib $new_libs" ;; 60065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) ;; 60075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 60085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # And here is the reason: when a library appears more 60095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than once as an explicit dependence of a library, or 60105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is implicitly linked in more than once by the 60115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiler, it is considered special, and multiple 60125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # occurrences thereof are not removed. Compare this 60135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # with having the same library being listed as a 60145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # dependency of multiple other libraries: in this case, 60155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we know (pedantically, we assume) the library does not 60165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # need to be listed more than once, so we keep only the 60175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # last copy. This is not always right, but it is rare 60185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # enough that we require users that really mean to play 60195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # such unportable linking tricks to link the library 60205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # using -Wl,-lname, so that libtool does not consider it 60215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # for duplicate removal. 60225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $specialdeplibs " in 60235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) new_libs="$deplib $new_libs" ;; 60245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 60255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 60265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 60275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$deplib $new_libs" ;; 60285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 60355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $new_libs; do 60365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 60375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 60385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $tmp_libs " in 60395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 60405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) tmp_libs="$tmp_libs $deplib" ;; 60415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) tmp_libs="$tmp_libs $deplib" ;; 60445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval $var=\"$tmp_libs\" 60475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for var 60485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Last step: remove runtime libs from dependency_libs 60505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # (they stay in deplibs) 60515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 60525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $dependency_libs ; do 60535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps $compiler_lib_search_path " in 60545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $i "*) 60555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i="" 60565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$i" ; then 60595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $i" 60605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs=$tmp_libs 60635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for pass 60645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 60655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 60665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$linkmode" = lib; then 60685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 60695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 60725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlib) 60735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen' is ignored for archives" 60755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs" in 60785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *\ -l* | *\ -L*) 60795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-l' and \`-L' are ignored for archives" ;; 60805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$rpath" && \ 60835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-rpath' is ignored for archives" 60845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$xrpath" && \ 60865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-R' is ignored for archives" 60875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 60895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info/-version-number' is ignored for archives" 60905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 60925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for archives" 60935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$export_symbols$export_symbols_regex" && \ 60955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-export-symbols' is ignored for archives" 60965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now set the variables for building old libraries. 60985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 60995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output" 61005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs="$objs$old_deplibs" 61015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 61045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure we only generate libraries of the form `libNAME.la'. 61055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $outputname in 61065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib*) 61075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.la' "$outputname" 61085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 61095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shared_ext=\"$shrext_cmds\" 61105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libname=\"$libname_spec\" 61115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 61135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$module" = no && \ 61145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "libtool library \`$output' must begin with \`lib'" 61155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_lib_prefix" != no; then 61175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the "lib" prefix for modules if required 61185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.la' "$outputname" 61195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 61205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shared_ext=\"$shrext_cmds\" 61215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libname=\"$libname_spec\" 61225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.la' "$outputname" 61245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=$func_stripname_result 61255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 61285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$objs"; then 61305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$deplibs_check_method" != pass_all; then 61315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 61345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** objects $objs is not portable!" 61365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs="$libobjs $objs" 61375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$dlself" != no && \ 61415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen self' is ignored for libtool libraries" 61425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $rpath 61445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 61455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$#" -gt 1 && \ 61465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "ignoring multiple \`-rpath's for a libtool library" 61475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_libdir="$1" 61495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs= 61515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$rpath"; then 61525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 61535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Building a libtool convenience library. 61545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some compilers have problems with a `.al' extension so 61555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # convenience libraries should have the same extension an 61565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # archive normally would. 61575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output_objdir/$libname.$libext $oldlibs" 61585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=convenience 61595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 61605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 61635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 61665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for convenience libraries" 61675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse the version information argument. 61705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=':' 61715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $vinfo 0 0 0 61725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 61735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 61745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$7" && \ 61765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "too many parameters to \`-version-info'" 61775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # convert absolute version numbers to libtool ages 61795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # this retains compatibility with .la files and attempts 61805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to make the code below a bit more comprehensible 61815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $vinfo_number in 61835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) yes) 61845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_major="$1" 61855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_minor="$2" 61865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_revision="$3" 61875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 61885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # There are really only two kinds -- those that 61895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # use the current revision as the major version 61905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and those that subtract age and use age as 61915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # a minor version. But, then there is irix 61925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # which has an extra 1 added just for fun 61935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 61945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $version_type in 61955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin|linux|osf|windows|none) 61965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $number_major + $number_minor 61975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current=$func_arith_result 61985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="$number_minor" 61995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_revision" 62005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) freebsd-aout|freebsd-elf|sunos) 62025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current="$number_major" 62035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_minor" 62045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="0" 62055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) irix|nonstopux) 62075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $number_major + $number_minor 62085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current=$func_arith_result 62095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="$number_minor" 62105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_minor" 62115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_irix_increment=no 62125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 62145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "$modename: unknown library version type \`$version_type'" 62155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no) 62195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current="$1" 62205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$2" 62215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="$3" 62225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check that each of the things are valid numbers. 62265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $current in 62275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 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]) ;; 62285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 62295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "CURRENT \`$current' must be a nonnegative integer" 62305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$vinfo' is not valid version information" 62315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $revision in 62355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 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]) ;; 62365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 62375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "REVISION \`$revision' must be a nonnegative integer" 62385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$vinfo' is not valid version information" 62395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $age in 62435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 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]) ;; 62445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 62455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "AGE \`$age' must be a nonnegative integer" 62465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$vinfo' is not valid version information" 62475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$age" -gt "$current"; then 62515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "AGE \`$age' is greater than the current interface number \`$current'" 62525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$vinfo' is not valid version information" 62535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 62545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Calculate the version variables. 62565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major= 62575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix= 62585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring= 62595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $version_type in 62605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) none) ;; 62615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin) 62635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Like Linux, but with the current version available in 62645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # verstring for coding it into the library header 62655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 62665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=.$func_arith_result 62675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="$major.$age.$revision" 62685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Darwin ld doesn't like 0 for these options... 62695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current + 1 62705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) minor_current=$func_arith_result 62715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) freebsd-aout) 62765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=".$current" 62775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".$current.$revision"; 62785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) freebsd-elf) 62815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=".$current" 62825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".$current" 62835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) irix | nonstopux) 62865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$lt_irix_increment" = "Xno"; then 62875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 62885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 62895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age + 1 62905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 62915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=$func_arith_result 62925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $version_type in 62945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonstopux) verstring_prefix=nonstopux ;; 62955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) verstring_prefix=sgi ;; 62965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 62975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="$verstring_prefix$major.$revision" 62985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add in all the interfaces that we are compatible with. 63005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loop=$revision 63015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$loop" -ne 0; do 63025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $revision - $loop 63035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) iface=$func_arith_result 63045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $loop - 1 63055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loop=$func_arith_result 63065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="$verstring_prefix$major.$iface:$verstring" 63075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 63085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Before this point, $major must not contain `.'. 63105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=.$major 63115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="$major.$revision" 63125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linux) 63155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 63165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=.$func_arith_result 63175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="$major.$age.$revision" 63185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) osf) 63215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 63225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=.$func_arith_result 63235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".$current.$age.$revision" 63245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="$current.$age.$revision" 63255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add in all the interfaces that we are compatible with. 63275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loop=$age 63285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$loop" -ne 0; do 63295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $loop 63305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) iface=$func_arith_result 63315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $loop - 1 63325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loop=$func_arith_result 63335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="$verstring:${iface}.0" 63345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 63355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make executables depend on our current version. 63375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="$verstring:${current}.0" 63385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qnx) 63415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=".$current" 63425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".$current" 63435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sunos) 63465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=".$current" 63475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".$current.$revision" 63485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) windows) 63515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Use '-' rather than '.', since we only want one 63525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # extension on DOS 8.3 filesystems. 63535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 63545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=$func_arith_result 63555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="-$major" 63565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 63595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "unknown library version type \`$version_type'" 63605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 63625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Clear the version info if we defaulted, and they specified a release. 63645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$vinfo" && test -n "$release"; then 63655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major= 63665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $version_type in 63675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin) 63685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we can't check for "0.0" in archive_cmds due to quoting 63695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # problems, so we reset it completely 63705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring= 63715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 63735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="0.0" 63745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 63755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 63765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_version" = no; then 63775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix= 63785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 63795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=".0.0" 63805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 63815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 63825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove version info from name if versioning should be avoided 63845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$avoid_version" = yes && test "$need_version" = no; then 63855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major= 63865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix= 63875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verstring="" 63885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 63895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see if the archive will have undefined symbols. 63915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$allow_undefined" = yes; then 63925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$allow_undefined_flag" = unsupported; then 63935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "undefined symbols not allowed in $host shared libraries" 63945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 63955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 63965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 63975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 63985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't allow undefined symbols. 63995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined_flag="$no_undefined_flag" 64005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_generate_dlsyms "$libname" "$libname" "yes" 64055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs="$libobjs $symfileobj" 64065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 64075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" != relink; then 64095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove our outputs, but don't remove object files since they 64105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # may have been created when compiling PIC objects. 64115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist= 64125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tempremovelist=`$ECHO "$output_objdir/*"` 64135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for p in $tempremovelist; do 64145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $p in 64155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$objext | *.gcno) 64165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$precious_files_regex" != "X"; then 64195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) then 64215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 64225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$removelist $p" 64255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) ;; 64275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 64285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 64295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$removelist" && \ 64305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "${RM}r \$removelist" 64315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now set the variables for building old libraries. 64345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$oldlibs $output_objdir/$libname.$libext" 64365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform .lo files to .o files. 64385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Eliminate all temporary directories. 64425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #for path in $notinst_path; do 64435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #done 64475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$xrpath"; then 64495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the user specified any rpath flags, then add them. 64505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_xrpath= 64515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $xrpath; do 64525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_xrpath="$temp_xrpath -R$libdir" 64535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 64545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 64555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" ;; 64565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 64575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 64585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$temp_xrpath $dependency_libs" 64605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 64625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure dlfiles contains only unique files that won't be dlpreopened 64645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_dlfiles="$dlfiles" 64655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles= 64665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $old_dlfiles; do 64675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $dlprefiles $dlfiles " in 64685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $lib "*) ;; 64695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dlfiles="$dlfiles $lib" ;; 64705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 64715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 64725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure dlprefiles contains only unique files 64745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_dlprefiles="$dlprefiles" 64755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles= 64765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $old_dlprefiles; do 64775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$dlprefiles " in 64785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $lib "*) ;; 64795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dlprefiles="$dlprefiles $lib" ;; 64805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 64815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 64825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 64845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$rpath"; then 64855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 64865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # these systems don't actually have a c library (as such)! 64885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-rhapsody* | *-*-darwin1.[012]) 64905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Rhapsody C library is in the System framework 64915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs System.ltframework" 64925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-netbsd*) 64945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't link with libc until the a.out ld.so is fixed. 64955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not include libc due to us having libc/libc_r. 64985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 64995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sco3.2v5* | *-*-sco5v6*) 65005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Causes problems with __ctype 65015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 65035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Compiler inserts libc in the correct place for threads to work 65045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 65065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add libc to deplibs on all other systems if necessary. 65075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_need_lc" = "yes"; then 65085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs -lc" 65095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 65105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 65125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 65135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform deplibs into only deplibs that can be linked in shared. 65155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name_save=$name 65165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname_save=$libname 65175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release_save=$release 65185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix_save=$versuffix 65195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major_save=$major 65205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # I'm not sure if I'm treating the release correctly. I think 65215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # release should show up in the -l (ie -lgmp5) so we don't want to 65225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # add it in twice. Is that correct? 65235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release="" 65245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="" 65255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major="" 65265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs= 65275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=no 65285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplibs_check_method in 65295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pass_all) 65305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't check for shared/static. Everything works. 65315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This might be a little naive. We might want to check 65325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # whether the library exists or not. But this is on 65335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # osf3 & osf4 and I'm not really sure... Just 65345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # implementing what was already the behavior. 65355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs=$deplibs 65365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_compile) 65385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This code stresses the "libraries are programs" paradigm to its 65395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # limits. Maybe even breaks it. We compile a program, linking it 65405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # against the deplibs as a proxy for the library. Then we can check 65415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # whether they linked in statically or dynamically with ldd. 65425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM conftest.c 65435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat > conftest.c <<EOF 65445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int main() { return 0; } 65455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 65465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM conftest 65475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ldd_output=`ldd conftest` 65495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $deplibs; do 65505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $i in 65515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 65525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname -l '' "$i" 65535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 65545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 65565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $i "*) 65575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 65585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i="" 65595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 65615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 65625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$i" ; then 65635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 65645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplib_matches; shift 65665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_match=$1 65675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 65695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 65705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 65715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 65725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 65745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 65755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which I believe you do not have" 65765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 65795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 65805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 65825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 65835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 65845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 65855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 65865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 65875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Error occurred in the first compile. Let's try to salvage 65885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the situation: Compile a separate program for each library. 65895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $deplibs; do 65905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $i in 65915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 65925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname -l '' "$i" 65935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 65945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM conftest 65955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ldd_output=`ldd conftest` 65975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 65995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $i "*) 66005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 66015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i="" 66025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 66035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 66045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$i" ; then 66065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 66075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplib_matches; shift 66095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_match=$1 66105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 66125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 66135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 66145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 66155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 66175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 66185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have" 66195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 66245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 66255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 66265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** make it link in! You will probably need to install it or some" 66285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** library that it depends on before this library will be fully" 66295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** functional. Installing it before continuing would be even better." 66305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 66325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 66335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $i" 66345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 66355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 66365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 66375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 66395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_magic*) 66405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplibs_check_method; shift 66415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for a_deplib in $deplibs; do 66435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $a_deplib in 66445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 66455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname -l '' "$a_deplib" 66465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 66475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 66495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $a_deplib "*) 66505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 66515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a_deplib="" 66525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 66535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 66545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$a_deplib" ; then 66565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 66575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for potent_lib in $potential_libs; do 66605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Follow soft links. 66615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ls -lLd "$potent_lib" 2>/dev/null | 66625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP " -> " >/dev/null; then 66635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 66645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The statement above tries to avoid entering an 66665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # endless loop below, in case of cyclic links. 66675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We might still enter an endless loop, since a link 66685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # loop can be closed while we follow links, 66695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but so what? 66705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) potlib="$potent_lib" 66715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test -h "$potlib" 2>/dev/null; do 66725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $potliblink in 66745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 66775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 66785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 10q | 66805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP "$file_magic_regex" > /dev/null; then 66815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 66825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a_deplib="" 66835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 2 66845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 66865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 66875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 66885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$a_deplib" ; then 66895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 66905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 66915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 66935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 66945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have" 66955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because I did check the linker path looking for a file starting" 66965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$potlib" ; then 66975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 66995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** with $libname and none of the candidates passed a file format test" 67005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** using a file magic. Last file checked: $potlib" 67015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 67055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add a -L argument. 67065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 67075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 67095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # Gone through all deplibs. 67105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern*) 67125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplibs_check_method; shift 67135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for a_deplib in $deplibs; do 67155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $a_deplib in 67165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 67175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname -l '' "$a_deplib" 67185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 67195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 67215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $a_deplib "*) 67225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 67235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a_deplib="" 67245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 67265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$a_deplib" ; then 67285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 67295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for potent_lib in $potential_libs; do 67325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) potlib="$potent_lib" # see symlink-check above in file_magic test 67335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP "$match_pattern_regex" > /dev/null; then 67355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 67365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a_deplib="" 67375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 2 67385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 67405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 67415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$a_deplib" ; then 67435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 67445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 67455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 67475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 67485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have" 67495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because I did check the linker path looking for a file starting" 67505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$potlib" ; then 67515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 67535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** with $libname and none of the candidates passed a file format test" 67545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** using a regex pattern. Last file checked: $potlib" 67555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 67595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add a -L argument. 67605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="$newdeplibs $a_deplib" 67615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 67635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # Gone through all deplibs. 67645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) none | unknown | *) 67665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs="" 67675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $predeps $postdeps ; do 67715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # can't use Xsed below, because $i might contain '/' 67725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 67745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP . >/dev/null; then 67775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 67785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$deplibs_check_method" = "Xnone"; then 67795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 67815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** All declared inter-library dependencies are being dropped." 67845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) droppeddeps=yes 67855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 67865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 67885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix=$versuffix_save 67895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=$major_save 67905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release=$release_save 67915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=$libname_save 67925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$name_save 67935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 67945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 67955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-rhapsody* | *-*-darwin1.[012]) 67965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # On Rhapsody replace the C library with the System framework 67975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 67995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$droppeddeps" = yes; then 68025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes; then 68035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 68045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 68055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 68065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** a static module, that should work as long as the dlopening" 68075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** application is linked with the -dlopen flag." 68085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$global_symbol_pipe"; then 68095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 68105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** However, this would only work if libtool was able to extract symbol" 68115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** not find such a program. So, this module is probably useless." 68135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = no; then 68165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output_objdir/$libname.$libext" 68175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=module 68185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 68195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 68205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 68215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 68235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** The inter-library dependencies that have been dropped here will be" 68245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** automatically added whenever a program is linked with this library" 68255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** or is declared to -dlopen it." 68265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$allow_undefined" = no; then 68285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 68295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Since this library must not contain undefined symbols," 68305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because either the platform does not support them or" 68315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** it was explicitly requested with -no-undefined," 68325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** libtool will only create a static version of it." 68335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = no; then 68345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output_objdir/$libname.$libext" 68355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=module 68365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 68375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 68385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 68395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Done checking deplibs! 68445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs=$newdeplibs 68455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 68465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 68485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 68495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 68535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # move library search paths that coincide with paths to not yet 68565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # installed libraries to the beginning of the library search list 68575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs= 68585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for path in $notinst_path; do 68595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 68605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$path/$objdir "*) ;; 68615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 68625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs " in 68635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$path/$objdir "*) 68645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs="$new_libs -L$path/$objdir" ;; 68655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 68675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 68695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $deplibs; do 68705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 68715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 68725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 68735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 68745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$new_libs $deplib" ;; 68755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 68775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$new_libs $deplib" ;; 68785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 68795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 68805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$new_libs" 68815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # All the library-specific variables (install_libdir is set above). 68835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 68845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 68855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname= 68865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Test again, we may have decided not to build it any more 68885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 68895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_into_libs" = yes; then 68905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Hardcode the library paths 68915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs= 68925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dep_rpath= 68935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$finalize_rpath" 68945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$mode" != relink && rpath="$compile_rpath$rpath" 68955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $rpath; do 68965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec"; then 68975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator"; then 68985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$hardcode_libdirs"; then 68995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$libdir" 69005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 69015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just accumulate the unique libdirs. 69025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 69035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 69045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 69055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 69065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 69085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 69095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 69115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$hardcode_libdir_flag_spec\" 69125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dep_rpath="$dep_rpath $flag" 69135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$runpath_var"; then 69155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$perm_rpath " in 69165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 69175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) perm_rpath="$perm_rpath $libdir" ;; 69185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 69195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 69215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Substitute the hardcoded libdirs into the rpath. 69225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator" && 69235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$hardcode_libdirs"; then 69245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir="$hardcode_libdirs" 69255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec_ld"; then 69265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 69285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$runpath_var" && test -n "$perm_rpath"; then 69325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We should set the runpath_var. 69335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 69345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $perm_rpath; do 69355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$rpath$dir:" 69365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 69375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 69405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shlibpath="$finalize_shlibpath" 69435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath"; then 69455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the real and link names of the library. 69495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shared_ext=\"$shrext_cmds\" 69505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval library_names=\"$library_names_spec\" 69515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $library_names 69525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 69535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) realname="$1" 69545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 69555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$soname_spec"; then 69575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval soname=\"$soname_spec\" 69585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 69595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$realname" 69605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlname"; then 69625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname=$soname 69635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib="$output_objdir/$realname" 69665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linknames= 69675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for link 69685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 69695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linknames="$linknames $link" 69705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 69715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Use standard objects if they are pic 69735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 69755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles= 69775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$include_expsyms"; then 69785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$output_objdir/$libname.uexp" 69805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $export_symbols" 69815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 69835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) orig_export_symbols= 69845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 69855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cygwin* | mingw* | cegcc*) 69865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # exporting using user supplied symfile 69885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and it's NOT already a .def file. Must figure out 69905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # which of the given symbols are data symbols and tag 69915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # them as such. So, trigger use of export_symbols_cmds. 69925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # export_symbols gets reassigned inside the "prepare 69935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the list of exported symbols" if statement, so the 69945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # include_expsyms logic still works. 69955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) orig_export_symbols="$export_symbols" 69965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols= 69975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) always_export_symbols=yes 69985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 69995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 70015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 70025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepare the list of exported symbols 70045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$export_symbols"; then 70055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 70065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating symbol list for \`$libname.la'" 70075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$output_objdir/$libname.exp" 70085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $export_symbols 70095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$export_symbols_cmds 70105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS='~' 70115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for cmd in $cmds; do 70125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 70135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmd=\"$cmd\" 70145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $cmd" 70155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_len_result 70165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$cmd" 'exit $?' 70185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) skipped_export=false 70195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 70205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The command line is too long to execute in one step. 70215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "using reloadable object file for export list..." 70225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) skipped_export=: 70235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Break out early, otherwise skipped_export may be 70245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # set to false by a later but shorter cmd. 70255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 70265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 70285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 70295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$include_expsyms"; then 70375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_export_symbols="$export_symbols" 70385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The given exports_symbols file has to be filtered, so filter it. 70445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: $output_objdir/$libname.filter potentially contains lots of 70465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 's' commands which not all seds can handle. GNU sed should be fine 70475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # though. Also, the filter scales superlinearly with the number of 70485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # global variables. join(1) would be nice here, but unfortunately 70495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # isn't a blessed tool. 70505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols=$output_objdir/$libname.def 70535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs= 70575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for test_deplib in $deplibs; do 70585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $convenience " in 70595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $test_deplib "*) ;; 70605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 70615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs="$tmp_deplibs $test_deplib" 70625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 70635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 70645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 70655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$tmp_deplibs" 70665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$convenience"; then 70685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$whole_archive_flag_spec" && 70695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$compiler_needs_object" = yes && 70705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libobjs"; then 70715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # extract the archives, so we have objects to list. 70725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # TODO: could optimize this to just extract one archive. 70735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) whole_archive_flag_spec= 70745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$whole_archive_flag_spec"; then 70765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_libobjs=$libobjs 70775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 70795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 70805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${outputname}x" 70815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 70825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives $gentop $convenience 70845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs="$libobjs $func_extract_archives_result" 70855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 70865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$thread_safe_flag_spec\" 70915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $flag" 70925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make a backup of the uninstalled library when relinking 70955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = relink; then 70965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 70985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 70995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each of the archive commands. 71005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes && test -n "$module_cmds" ; then 71015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 71025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$module_expsym_cmds\" 71035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$module_expsym_cmds 71045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$module_cmds\" 71065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$module_cmds 71075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 71085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$archive_expsym_cmds\" 71115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$archive_expsym_cmds 71125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$archive_cmds\" 71145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$archive_cmds 71155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 71165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 71175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$skipped_export" != "X:" && 71195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $test_cmds" && 71205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_len_result && 71215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 71235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The command line is too long to link in one step, link piecewise 71255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # or, if using GNU ld and skipped_export is not :, use a linker 71265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # script. 71275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Save the value of $output and $libobjs because we want to 71295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # use them later. If we have whole_archive_flag_spec, we 71305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # want to use save_libobjs as it was before 71315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # whole_archive_flag_spec was expanded, because we can't 71325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # assume the linker understands whole_archive_flag_spec. 71335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This may have to be revisited, in case too many 71345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # convenience libraries get linked in and end up exceeding 71355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the spec. 71365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_libobjs=$libobjs 71385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 71395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_output=$output 71405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 71415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Clear the reloadable object creation command queue and 71435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # initialize k to one. 71445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_cmds= 71455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_cmds= 71465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objlist= 71475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_robj= 71485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) k=1 71495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=${output_objdir}/${output_la}.lnkscript 71525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating GNU ld script: $output" 71535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 'INPUT (' > $output 71545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj in $save_libobjs 71555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 71565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$obj" >> $output 71575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 71585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO ')' >> $output 71595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $output" 71605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=${output_objdir}/${output_la}.lnk 71625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating linker input file list: $output" 71635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : > $output 71645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set x $save_libobjs 71655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 71665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) firstobj= 71675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$compiler_needs_object" = yes; then 71685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) firstobj="$1 " 71695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 71705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 71715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj 71725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 71735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$obj" >> $output 71745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 71755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $output" 71765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$firstobj\"$file_list_spec$output\" 71775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$save_libobjs"; then 71795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating reloadable object files..." 71805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$output_objdir/$output_la-${k}.$objext 71815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$reload_cmds\" 71825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $test_cmds" 71835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len0=$func_len_result 71845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$len0 71855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Loop over the list of objects to be linked. 71875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj in $save_libobjs 71885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 71895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $obj" 71905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $len + $func_len_result 71915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_arith_result 71925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$objlist" = X || 71935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$len" -lt "$max_cmd_len"; then 71945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append objlist " $obj" 71955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 71965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The command $test_cmds is almost too long, add a 71975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # command to the queue. 71985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$k" -eq 1 ; then 71995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The first file doesn't have a previous command to add. 72005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 72015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 72025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # All subsequent reloadable object files will link in 72035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the last one created. 72045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 72055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_robj=$output_objdir/$output_la-${k}.$objext 72075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $k + 1 72085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) k=$func_arith_result 72095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$output_objdir/$output_la-${k}.$objext 72105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objlist=$obj 72115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $last_robj" 72125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $len0 + $func_len_result 72135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_arith_result 72145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 72165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Handle the remaining objects by creating one last 72175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # reloadable object file. All subsequent reloadable object 72185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # files will link in the last one created. 72195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$last_robj"; then 72225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 72235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $output" 72255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 72275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output= 72285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ${skipped_export-false}; then 72315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating symbol list for \`$libname.la'" 72325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$output_objdir/$libname.exp" 72335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $export_symbols 72345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs=$output 72355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Append the command to create the export file. 72365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$last_robj"; then 72395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 72405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$save_libobjs" && 72445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating a temporary reloadable object file: $output" 72455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Loop through the commands generated above and execute them. 72475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS='~' 72485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for cmd in $concat_cmds; do 72495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 72505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent || { 72515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$cmd" 72525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 72535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 72545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$cmd" || { 72555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_exit=$? 72565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore the uninstalled library and exit 72585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = relink; then 72595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ( cd "$output_objdir" && \ 72605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "${realname}T" && \ 72615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "${realname}U" "$realname" ) 72625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $lt_exit 72655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 72665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 72675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 72685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 72725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ${skipped_export-false}; then 72765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$include_expsyms"; then 72775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_export_symbols="$export_symbols" 72785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$orig_export_symbols"; then 72835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The given exports_symbols file has to be filtered, so filter it. 72845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: $output_objdir/$libname.filter potentially contains lots of 72865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 's' commands which not all seds can handle. GNU sed should be fine 72875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # though. Also, the filter scales superlinearly with the number of 72885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # global variables. join(1) would be nice here, but unfortunately 72895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # isn't a blessed tool. 72905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols=$output_objdir/$libname.def 72935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 72965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs=$output 72985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore the value of output. 72995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$save_output 73005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 73025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 73035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 73045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Expand the library linking commands again to reset the 73065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # value of $libobjs for piecewise linking. 73075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each of the archive commands. 73095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes && test -n "$module_cmds" ; then 73105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$module_expsym_cmds 73125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 73135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$module_cmds 73145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 73165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$archive_expsym_cmds 73185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 73195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$archive_cmds 73205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$delfiles"; then 73255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Append the command to remove temporary files to $cmds. 73265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"\$cmds~\$RM $delfiles\" 73275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add any objects from preloaded convenience libraries 73305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlprefiles"; then 73315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${outputname}x" 73325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 73335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives $gentop $dlprefiles 73355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs="$libobjs $func_extract_archives_result" 73365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobjs" = "X " && libobjs= 73375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS='~' 73405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for cmd in $cmds; do 73415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 73425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmd=\"$cmd\" 73435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent || { 73445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$cmd" 73455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 73465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 73475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$cmd" || { 73485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_exit=$? 73495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore the uninstalled library and exit 73515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = relink; then 73525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ( cd "$output_objdir" && \ 73535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "${realname}T" && \ 73545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "${realname}U" "$realname" ) 73555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $lt_exit 73585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 73595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 73605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 73615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore the uninstalled library and exit 73635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = relink; then 73645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 73655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$convenience"; then 73675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$whole_archive_flag_spec"; then 73685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '${RM}r "$gentop"' 73695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 73735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create links to the real library. 73765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for linkname in $linknames; do 73775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$realname" != "$linkname"; then 73785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 73795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 73815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If -module or -export-dynamic was specified, set the dlname. 73835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes || test "$export_dynamic" = yes; then 73845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # On all known operating systems, these are identical. 73855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname="$soname" 73865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 73895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) obj) 73915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen' is ignored for objects" 73935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 73945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs" in 73965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *\ -l* | *\ -L*) 73975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-l' and \`-L' are ignored for objects" ;; 73985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 73995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$rpath" && \ 74015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-rpath' is ignored for objects" 74025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$xrpath" && \ 74045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-R' is ignored for objects" 74055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 74075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info' is ignored for objects" 74085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 74105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for objects" 74115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $output in 74135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 74145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$objs$old_deplibs" && \ 74155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj=$output 74185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$libobj" 74195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) obj=$func_lo2o_result 74205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 74215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 74225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj= 74235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) obj="$output" 74245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 74255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 74265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the old objects. 74285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $obj $libobj 74295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Objects from convenience libraries. This assumes 74315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # single-version convenience libraries. Whenever we create 74325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # different ones for PIC/non-PIC, this we'll have to duplicate 74335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the extraction. 74345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reload_conv_objs= 74355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop= 74365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # reload_cmds runs $LD directly, so let us get rid of 74375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -Wl from whole_archive_flag_spec and hope we can get by with 74385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # turning comma into space.. 74395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wl= 74405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$convenience"; then 74425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$whole_archive_flag_spec"; then 74435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 74465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${obj}x" 74475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 74485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives $gentop $convenience 74505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reload_conv_objs="$reload_objs $func_extract_archives_result" 74515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create the old-style object. 74555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 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 74565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output="$obj" 74585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$reload_cmds" 'exit $?' 74595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Exit if we aren't doing a library object file. 74615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libobj"; then 74625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$gentop"; then 74635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '${RM}r "$gentop"' 74645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 74675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" != yes; then 74705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$gentop"; then 74715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '${RM}r "$gentop"' 74725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create an invalid libtool object if no PIC, so that we don't 74755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # accidentally link it into a program. 74765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $show "echo timestamp > $libobj" 74775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 74795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$pic_flag" || test "$pic_mode" != default; then 74825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only do commands if we really have different PIC objects. 74835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reload_objs="$libobjs $reload_conv_objs" 74845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output="$libobj" 74855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$reload_cmds" 'exit $?' 74865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$gentop"; then 74895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '${RM}r "$gentop"' 74905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 74915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 74935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 74945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 74955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 74965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 74975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin*) func_stripname '' '.exe' "$output" 74985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$func_stripname_result.exe;; 74995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 75015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info' is ignored for programs" 75025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 75045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for programs" 75055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$preload" = yes \ 75075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && test "$dlopen_support" = unknown \ 75085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && test "$dlopen_self" = unknown \ 75095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && test "$dlopen_self_static" = unknown && \ 75105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 75135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-rhapsody* | *-*-darwin1.[012]) 75145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # On Rhapsody replace the C library is the System framework 75155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 75215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 75225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't allow lazy linking, it breaks C++ global constructors 75235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # But is supposedly fixed on 10.4 or later (yay!). 75245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$tagname" = CXX ; then 75255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10.[0123]) 75275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command="$compile_command ${wl}-bind_at_load" 75285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command="$finalize_command ${wl}-bind_at_load" 75295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 75325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # move library search paths that coincide with paths to not yet 75405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # installed libraries to the beginning of the library search list 75415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs= 75425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for path in $notinst_path; do 75435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 75445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$path/$objdir "*) ;; 75455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 75465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $compile_deplibs " in 75475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$path/$objdir "*) 75485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs="$new_libs -L$path/$objdir" ;; 75495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 75535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $compile_deplibs; do 75545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 75555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 75565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 75575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 75585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$new_libs $deplib" ;; 75595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$new_libs $deplib" ;; 75625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 75645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$new_libs" 75655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command="$compile_command $compile_deplibs" 75685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command="$finalize_command $finalize_deplibs" 75695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$rpath$xrpath"; then 75715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the user specified any rpath flags, then add them. 75725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $rpath $xrpath; do 75735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This is the magic to use -rpath. 75745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 75755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 75765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" ;; 75775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 75795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 75805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now hardcode the library paths 75825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 75835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs= 75845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $compile_rpath $finalize_rpath; do 75855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec"; then 75865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator"; then 75875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$hardcode_libdirs"; then 75885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$libdir" 75895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 75905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just accumulate the unique libdirs. 75915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 75955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 75975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 75985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 75995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 76005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$hardcode_libdir_flag_spec\" 76015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$rpath $flag" 76025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$runpath_var"; then 76045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$perm_rpath " in 76055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 76065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) perm_rpath="$perm_rpath $libdir" ;; 76075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 76105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 76135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$libdir:"*) ;; 76145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$libdir;; 76155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$libdir";; 76165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 76185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$testbindir:"*) ;; 76195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$testbindir;; 76205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$testbindir";; 76215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 76255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Substitute the hardcoded libdirs into the rpath. 76265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator" && 76275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$hardcode_libdirs"; then 76285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir="$hardcode_libdirs" 76295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval rpath=\" $hardcode_libdir_flag_spec\" 76305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_rpath="$rpath" 76325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 76345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs= 76355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $finalize_rpath; do 76365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec"; then 76375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator"; then 76385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$hardcode_libdirs"; then 76395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$libdir" 76405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 76415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just accumulate the unique libdirs. 76425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 76465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 76515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$hardcode_libdir_flag_spec\" 76525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$rpath $flag" 76535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$runpath_var"; then 76555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_perm_rpath " in 76565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 76575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 76615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Substitute the hardcoded libdirs into the rpath. 76625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_separator" && 76635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$hardcode_libdirs"; then 76645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir="$hardcode_libdirs" 76655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval rpath=\" $hardcode_libdir_flag_spec\" 76665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_rpath="$rpath" 76685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$libobjs" && test "$build_old_libs" = yes; then 76705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform all the library objects into standard objects. 76715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 76765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # template prelinking step 76785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$prelink_cmds"; then 76795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$prelink_cmds" 'exit $?' 76805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrappers_required=yes 76835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 76845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* ) 76855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" != yes; then 76865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrappers_required=no 76875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cegcc) 76905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Disable wrappers for cegcc, we are cross compiling anyway. 76915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrappers_required=no 76925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 76945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrappers_required=no 76965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 76975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 76985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 76995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$wrappers_required" = no; then 77005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace the output file specification. 77015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command="$compile_command$compile_rpath" 77035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We have no uninstalled library dependencies, so finalize right now. 77055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_status=0 77065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$link_command" 'exit_status=$?' 77075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the generated files. 77095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/${outputname}S.${objext}"; then 77105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 77115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $exit_status 77145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$compile_shlibpath$finalize_shlibpath"; then 77175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finalize_shlibpath"; then 77205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_var= 77245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_var= 77255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$runpath_var"; then 77265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$perm_rpath"; then 77275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We should set the runpath_var. 77285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 77295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $perm_rpath; do 77305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$rpath$dir:" 77315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 77325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 77335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finalize_perm_rpath"; then 77355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We should set the runpath_var. 77365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 77375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $finalize_perm_rpath; do 77385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath="$rpath$dir:" 77395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 77405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 77415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$no_install" = yes; then 77455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We don't need to create a wrapper script. 77465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command="$compile_var$compile_command$compile_rpath" 77475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace the output file specification. 77485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the old output file. 77505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $output 77515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link the executable and exit 77525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$link_command" 'exit $?' 77535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 77545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_action" = relink; then 77575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Fast installation is not supported 77585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command="$compile_var$compile_command$compile_rpath" 77595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$finalize_var$finalize_command$finalize_rpath" 77605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "this platform does not like uninstalled shared libraries" 77625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$output' will be relinked during installation" 77635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 77645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" != no; then 77655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command="$finalize_var$compile_command$finalize_rpath" 77665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes; then 77675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 77695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # fast_install is set to needless 77705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 77715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 77735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command="$compile_var$compile_command$compile_rpath" 77745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$finalize_var$finalize_command$finalize_rpath" 77755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 77775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace the output file specification. 77795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 77805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the old output files. 77825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 77835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$link_command" 'exit $?' 77855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now create the wrapper script. 77875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating $output" 77885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Quote the relink command for shipping. 77905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$relink_command"; then 77915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preserve any variables that may affect compiler behavior 77925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for var in $variables_saved_for_relink; do 77935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval test -z \"\${$var+set}\"; then 77945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif eval var_value=\$$var; test -z "$var_value"; then 77965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$var=; export $var; $relink_command" 77975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 77985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$var_value" 77995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 78005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 78025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="(cd `pwd`; $relink_command)" 78035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 78045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Quote $ECHO for shipping. 78075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $progpath in 78095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 78115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 78125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 78145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only actually do things if not in dry run mode. 78185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 78195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # win32 will think the script is a binary if it has 78205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # a .exe suffix, so we strip it off here. 78215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $output in 78225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) func_stripname '' '.exe' "$output" 78235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output=$func_stripname_result ;; 78245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 78255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # test for cygwin because mv fails w/o .exe extensions 78265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 78275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin*) 78285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exeext=.exe 78295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$outputname" 78305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname=$func_stripname_result ;; 78315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) exeext= ;; 78325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 78335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 78345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* ) 78355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$output" "" "." 78365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_name=$func_basename_result 78375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_path=$func_dirname_result 78385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cwrappersource="$output_path/$objdir/lt-$output_name.c" 78395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cwrapper="$output_path/$output_name.exe" 78405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $cwrappersource $cwrapper 78415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_cwrapperexe_src > $cwrappersource 78445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The wrapper executable is built using the $host compiler, 78465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # because it contains $host paths and files. If cross- 78475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiling, it, like the target executable, must be 78485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # executed on the $host or under an emulation environment. 78495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 78505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $STRIP $cwrapper 78525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 78535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now, create the wrapper script for func_source use: 78555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname $cwrapper 78565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $func_ltwrapper_scriptname_result 78575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 78595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # note: this script will not be executed, so do not chmod. 78605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "x$build" = "x$host" ; then 78615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 78635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper no > $func_ltwrapper_scriptname_result 78645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 78665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 78675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) 78685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $output 78695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 78705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper no > $output 78725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chmod +x $output 78735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 78745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 78755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 78765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 78775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 78785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 78795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See if we need to build an old-fashioned archive. 78815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for oldlib in $oldlibs; do 78825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = convenience; then 78845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$libobjs_save $symfileobj" 78855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addlibs="$convenience" 78865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 78875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 78885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = module; then 78895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$libobjs_save" 78905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 78915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 78925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$old_deplibs $non_pic_objects" 78935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$preload" = yes && test -f "$symfileobj"; then 78945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$oldobjs $symfileobj" 78955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addlibs="$old_convenience" 78985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 78995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$addlibs"; then 79015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${outputname}x" 79025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 79035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives $gentop $addlibs 79055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$oldobjs $func_extract_archives_result" 79065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 79075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the archive commands. 79095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$old_archive_from_new_cmds 79115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 79125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add any objects from preloaded convenience libraries 79145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlprefiles"; then 79155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${outputname}x" 79165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 79175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives $gentop $dlprefiles 79195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$oldobjs $func_extract_archives_result" 79205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 79215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # POSIX demands no paths to be encoded in archives. We have 79235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to avoid creating archives with duplicate basenames if we 79245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # might have to extract them afterwards, e.g., when creating a 79255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # static archive out of a convenience library, or when linking 79265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the entirety of a libtool archive into another (currently 79275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # not supported by libtool). 79285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (for obj in $oldobjs 79295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 79305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$obj" 79315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$func_basename_result" 79325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done | sort | sort -uc >/dev/null 2>&1); then 79335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 79345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 79355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "copying selected object files to avoid basename conflicts..." 79365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gentop="$output_objdir/${outputname}x" 79375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated="$generated $gentop" 79385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$gentop" 79395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_oldobjs=$oldobjs 79405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs= 79415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) counter=1 79425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj in $save_oldobjs 79435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 79445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$obj" 79455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objbase="$func_basename_result" 79465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $oldobjs " in 79475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " ") oldobjs=$obj ;; 79485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\ /]"$objbase "*) 79495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while :; do 79505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure we don't pick an alternate name that also 79515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # overlaps. 79525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newobj=lt$counter-$objbase 79535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $counter + 1 79545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) counter=$func_arith_result 79555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $oldobjs " in 79565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\ /]"$newobj "*) ;; 79575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 79595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 79605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs="$oldobjs $gentop/$newobj" 79625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 79635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) oldobjs="$oldobjs $obj" ;; 79645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 79655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 79665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 79675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"$old_archive_cmds\" 79685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $cmds" 79705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_len_result 79715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmds=$old_archive_cmds 79735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 79745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the command line is too long to link in one step, link in parts 79755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "using piecewise archive linking..." 79765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_RANLIB=$RANLIB 79775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RANLIB=: 79785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objlist= 79795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_cmds= 79805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_oldobjs=$oldobjs 79815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs= 79825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Is there a better way of finding the last object in the list? 79835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj in $save_oldobjs 79845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 79855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_oldobj=$obj 79865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 79875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval test_cmds=\"$old_archive_cmds\" 79885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $test_cmds" 79895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len0=$func_len_result 79905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$len0 79915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for obj in $save_oldobjs 79925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 79935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_len " $obj" 79945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $len + $func_len_result 79955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$func_arith_result 79965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append objlist " $obj" 79975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$len" -lt "$max_cmd_len"; then 79985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 79995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 80005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the above command should be used before it gets too long 80015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs=$objlist 80025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$obj" = "$last_oldobj" ; then 80035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RANLIB=$save_RANLIB 80045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 80065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objlist= 80085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len=$len0 80095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 80115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RANLIB=$save_RANLIB 80125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldobjs=$objlist 80135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$oldobjs" = "X" ; then 80145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"\$concat_cmds\" 80155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 80165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$cmds" 'exit $?' 80215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 80225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$generated" && \ 80245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "${RM}r$generated" 80255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now create the libtool archive. 80275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $output in 80285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 80295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 80305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_old_libs" = yes && old_library="$libname.$libext" 80315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating $output" 80325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preserve any variables that may affect compiler behavior 80345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for var in $variables_saved_for_relink; do 80355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval test -z \"\${$var+set}\"; then 80365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif eval var_value=\$$var; test -z "$var_value"; then 80385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$var=; export $var; $relink_command" 80395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 80405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$var_value" 80415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 80425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 80445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Quote the link command for shipping. 80455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_automatic" = yes ; then 80485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 80495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only create the output if not a dry run. 80525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 80535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for installed in no yes; do 80545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = yes; then 80555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$install_libdir"; then 80565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 80575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output="$output_objdir/$outputname"i 80595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace all uninstalled libtool libraries with the installed ones 80605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs= 80615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 80625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 80635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 80645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$deplib" 80655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 80665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 80685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$deplib' is not a valid libtool archive" 80695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$newdependency_libs $libdir/$name" 80705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 80715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) newdependency_libs="$newdependency_libs $deplib" ;; 80725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 80735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 80745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$newdependency_libs" 80755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 80765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlfiles; do 80785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 80795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 80805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 80815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 80825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 80845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a valid libtool archive" 80855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $libdir/$name" 80865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 80875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) newdlfiles="$newdlfiles $lib" ;; 80885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 80895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 80905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 80915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 80925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 80935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 80945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 80955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only pass preopened files to the pseudo-archive (for 80965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # eventual linking with the app. that links it) if we 80975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # didn't already link the preopened objects directly into 80985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the library: 80995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 81005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 81015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 81035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a valid libtool archive" 81045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $libdir/$name" 81055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 81065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 81095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 81105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 81115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlfiles; do 81125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) abs=`pwd`"/$lib" ;; 81155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $abs" 81175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 81195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 81205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 81215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) abs=`pwd`"/$lib" ;; 81245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $abs" 81265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 81285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $output 81305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # place dlname in correct position for cygwin 81315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tdlname=$dlname 81325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host,$output,$installed,$module,$dlname in 81335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO > $output "\ 81365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $outputname - a libtool library file 81375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 81395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file! 81405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library. 81415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name that we can dlopen(3). 81435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlname='$tdlname' 81445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of this library. 81465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library_names='$library_names' 81475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of the static archive. 81495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)old_library='$old_library' 81505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Linker flags that can not go in dependency_libs. 81525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inherited_linker_flags='$new_inherited_linker_flags' 81535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Libraries that this one depends upon. 81555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dependency_libs='$dependency_libs' 81565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of additional weak libraries provided by this library 81585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weak_library_names='$weak_libs' 81595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Version information for $libname. 81615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)current=$current 81625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)age=$age 81635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)revision=$revision 81645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Is this an already installed library? 81665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)installed=$installed 81675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Should we warn about portability when linking against -modules? 81695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)shouldnotlink=$module 81705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to dlopen/dlpreopen 81725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlopen='$dlfiles' 81735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlpreopen='$dlprefiles' 81745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Directory that this library needs to be installed in: 81765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libdir='$install_libdir'" 81775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = no && test "$need_relink" = yes; then 81785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> $output "\ 81795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\"" 81805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 81835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a symbolic link so that the libtool archive can be found in 81855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # LD_LIBRARY_PATH before the program is installed. 81865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 81885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 81905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 81915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = link || test "$mode" = relink; } && 81935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mode_link ${1+"$@"} 81945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_uninstall arg... 81975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_uninstall () 81985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 81995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 82005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RM="$nonopt" 82015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files= 82025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmforce= 82035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_status=0 82045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set variables rather 82065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than running their programs. 82075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_install_magic="$magic" 82085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 82105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 82115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 82125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -f) RM="$RM $arg"; rmforce=yes ;; 82135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) RM="$RM $arg" ;; 82145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) files="$files $arg" ;; 82155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 82175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$RM" && \ 82195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an RM program" 82205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmdirs= 82225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) origobjdir="$objdir" 82245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 82255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 82265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 82275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dir" = X.; then 82285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$origobjdir" 82295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 82305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$dir/$origobjdir" 82315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 82335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 82345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$mode" = uninstall && objdir="$dir" 82355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remember objdir for removal later, being careful to avoid duplicates 82375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = clean; then 82385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $rmdirs " in 82395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $objdir "*) ;; 82405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rmdirs="$rmdirs $objdir" ;; 82415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't error if the file doesn't exist and rm -f was used. 82455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if { test -L "$file"; } >/dev/null 2>&1 || 82465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test -h "$file"; } >/dev/null 2>&1 || 82475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$file"; then 82485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 82495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -d "$file"; then 82505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_status=1 82515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 82525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$rmforce" = yes; then 82535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 82545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$file" 82575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $name in 82595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 82605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Possibly a libtool archive, so verify it. 82615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$file"; then 82625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$name 82635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the libtool libraries and symlinks. 82655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for n in $library_names; do 82665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/$n" 82675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 82685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 82695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$mode" in 82715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) 82725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $library_names " in 82735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # " " in the beginning catches empty $dlname 82745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dlname "*) ;; 82755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rmfiles="$rmfiles $objdir/$dlname" ;; 82765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 82785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 82795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) 82805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names"; then 82815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postuninstall commands. 82825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_library"; then 82865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the old_postuninstall commands. 82875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: should reinstall the best remaining shared library. 82905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 82915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 82945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 82965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Possibly a libtool object, so verify it. 82975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$file"; then 82985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 83005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$name 83015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add PIC object to the list of files to remove. 83035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$pic_object" && 83045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" != none; then 83055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $dir/$pic_object" 83065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add non-PIC object to the list of files to remove. 83095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$non_pic_object" && 83105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" != none; then 83115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $dir/$non_pic_object" 83125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 83175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = clean ; then 83185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noexename=$name 83195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 83205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) 83215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 83225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=$func_stripname_result 83235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$name" 83245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noexename=$func_stripname_result 83255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $file with .exe has already been added to rmfiles, 83265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # add $file without .exe 83275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $file" 83285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 83305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is a libtool program. 83315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_p "$file"; then 83325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$file"; then 83335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 83345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 83355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $func_ltwrapper_scriptname_result 83365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 83385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 83395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$noexename 83405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # note $name still contains .exe if it was in $file originally 83435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # as does the version of $file that was added into $rmfiles 83445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 83455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes && test -n "$relink_command"; then 83465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/lt-$name" 83475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$noexename" != "X$name" ; then 83495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/lt-${noexename}.c" 83505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 83555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$RM $rmfiles" 'exit_status=1' 83565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 83575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$origobjdir" 83585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try to remove the ${objdir}s in the directories where we deleted files 83605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $rmdirs; do 83615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -d "$dir"; then 83625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "rmdir $dir >/dev/null 2>&1" 83635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 83655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $exit_status 83675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 83685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = uninstall || test "$mode" = clean; } && 83705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mode_uninstall ${1+"$@"} 83715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$mode" && { 83735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) help="$generic_help" 83745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a MODE" 83755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 83765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$exec_cmd" && \ 83785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "invalid operation mode \`$mode'" 83795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "$exec_cmd"; then 83815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval exec "$exec_cmd" 83825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 83835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 83845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit $exit_status 83865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The TAGs below are defined such that we never get into a situation 83895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in which we disable both kinds of libraries. Given conflicting 83905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# choices, we go for a static library, that is the most portable, 83915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# since we can't tell whether shared libraries were disabled because 83925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the user asked for that or because the platform doesn't support 83935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# them. This is particularly important on AIX, because we don't 83945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# support having both static and shared libraries enabled at the same 83955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# time on that platform, so we default to a shared-only configuration. 83965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If a disable-shared tag is given, we'll fallback to a static-only 83975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# configuration. But we'll never go from static-only to shared-only. 83985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 84005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_libtool_libs=no 84015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=yes 84025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-shared 84035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-static 84055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 84065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-static 84075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Local Variables: 84095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mode:shell-script 84105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sh-indentation:2 84115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# End: 84125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# vi:sw=2 84135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8414