15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated from ltmain.m4sh. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ltmain.sh (GNU libtool) 2.2.6 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.6 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.6 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TIMESTAMP="" 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package_revision=1.3012 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="/usr/bin/grep -E"} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${FGREP="/usr/bin/grep -F"} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${GREP="/usr/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="/opt/local/bin/gsed"} 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)# Same for EGREP, and just to be sure, do LTCC as well 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "x$EGREP" = x ; then 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EGREP=egrep 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "x$LTCC" = x ; then 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTCC=${CC-gcc} 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--fallback-echo; then 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # used as fallback echo 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$* 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic="%%%MAGIC variable%%%" 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic_exe="%%%MAGIC EXE variable%%%" 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables. 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $mode is unset 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)nonopt= 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)execute_dlfiles= 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)preserve_args= 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lo2o="s/\\.lo\$/.${objext}/" 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)o2lo="s/\\.${objext}\$/.lo/" 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_archives= 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_serial=0 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_duplicate_deps=false 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_silent=false 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_debug=: 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If this variable is set in any of the actions, the command in it 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will be execed at the end. This prevents here-documents from being 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# left over by shells. 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exec_cmd= 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_configuration arg... 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a configuration failure hint, and exit. 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_configuration () 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error ${1+"$@"} 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "See the $PACKAGE documentation for more information." 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "Fatal configuration error." 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_config 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the configuration for all the tags in this script. 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_config () 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_begincf='^# ### BEGIN LIBTOOL' 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_endcf='^# ### END LIBTOOL' 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Default configuration. 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now print the configurations for the tags. 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tagname in $taglist; do 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_features 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the features supported by this script. 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_features () 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "host: $host" 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "enable shared libraries" 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "disable shared libraries" 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "enable static libraries" 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "disable static libraries" 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_enable_tag tagname 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Verify that TAGNAME is valid, and either flag an error and exit, or 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable here. 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_enable_tag () 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Global variable: 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tagname="$1" 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sed_extractcf="/$re_begincf/,/$re_endcf/p" 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Validate tagname. 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $tagname in 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[!-_A-Za-z0-9,/]*) 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "invalid tag name: $tagname" 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't test for the "default" C tag, as we know it's 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # there but not specially marked. 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $tagname in 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC) ;; 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) taglist="$taglist $tagname" 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Evaluate the configuration. Be careful to quote the path 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and the sed script, to avoid splitting on whitespace, but 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # also don't use non-portable quotes within backquotes within 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # quotes we have to do it in 2 steps: 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$extractedcf" 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "ignoring unknown tag $tagname" 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Parse options once, thoroughly. This comes as soon as possible in 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the script to make things like `libtool --version' happen quickly. 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Shorthand for --mode=foo, only valid as the first argument 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean|clea|cle|cl) 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode clean ${1+"$@"}; shift 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile|compil|compi|comp|com|co|c) 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode compile ${1+"$@"}; shift 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute|execut|execu|exec|exe|ex|e) 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode execute ${1+"$@"}; shift 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish|finis|fini|fin|fi|f) 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode finish ${1+"$@"}; shift 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install|instal|insta|inst|ins|in|i) 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode install ${1+"$@"}; shift 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link|lin|li|l) 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode link ${1+"$@"}; shift 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift; set dummy --mode uninstall ${1+"$@"}; shift 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse non-mode specific arguments: 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$#" -gt 0; do 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt="$1" 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $opt in 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --config) func_config ;; 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --debug) preserve_args="$preserve_args $opt" 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "enabling shell trace mode" 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_debug='set -x' 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute_dlfiles="$execute_dlfiles $1" 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --dry-run | -n) opt_dry_run=: ;; 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --features) func_features ;; 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --finish) mode="finish" ;; 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Valid mode arguments: 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) ;; 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile) ;; 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute) ;; 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish) ;; 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install) ;; 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) ;; 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink) ;; 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) ;; 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Catch anything else as an error 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) func_error "invalid argument for $opt" 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_cmd=exit 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mode="$1" 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --preserve-dup-deps) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_deps=: ;; 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --quiet|--silent) preserve_args="$preserve_args $opt" 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_silent=: 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --verbose| -v) preserve_args="$preserve_args $opt" 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_silent=false 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preserve_args="$preserve_args $opt $1" 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_enable_tag "$1" # tagname is set here 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Separate optargs to long options: 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen=*|--mode=*|--tag=*) 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_opt_split "$opt" 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -\?|-h) func_usage ;; 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --help) opt_help=: ;; 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) --version) func_version ;; 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) func_fatal_help "unrecognized option \`$opt'" ;; 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) nonopt="$opt" 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *pw32* | *cegcc*) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # don't eliminate duplications in $postdeps and $predeps 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_compiler_generated_deps=: 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Having warned about all mis-specified options, bail out if 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # anything was wrong. 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $exit_cmd $EXIT_FAILURE 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_check_version_match 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Ensure that we are using m4 macros, and libtool script from the same 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# release of libtool. 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_check_version_match () 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$package_revision" != "$macro_revision"; then 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$VERSION" != "$macro_version"; then 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$macro_version"; then 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 an older release. 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) else 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >&2 <<_LT_EOF 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again. 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >&2 <<_LT_EOF 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: of $PACKAGE $VERSION and run autoconf again. 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_MISMATCH 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ## 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## Main. ## 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ## 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || { 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Sanity checks first: 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_check_version_match 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "not configured to build any kind of library" 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Darwin sucks 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval std_shrext=\"$shrext_cmds\" 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only execute mode is allowed to have -dlopen flags. 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$execute_dlfiles" && test "$mode" != execute; then 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "unrecognized option \`-dlopen'" 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$help" 1>&2 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Change the help message to a mode-specific one. 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generic_help="$help" 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) help="Try \`$progname --help --mode=$mode' for more information." 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_p file 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file. 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_p () 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$1" && 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 4q "$1" 2>/dev/null \ 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_unsafe_p file 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file. 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function implements the same check as func_lalib_p without 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# resorting to external programs. To this end, it redirects stdin and 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# closes it afterwards, without saving the original file descriptor. 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a safety measure, use it only where a negative result would be 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# fatal anyway. Works if `file' does not exist. 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_unsafe_p () 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lalib_p=no 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lalib_p_l in 1 2 3 4 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) read lalib_p_line 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$lalib_p_line" in 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec 0<&5 5<&- 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$lalib_p" = yes 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_script_p file 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_script_p () 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_p "$1" 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_executable_p file 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper executable 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_executable_p () 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_exec_suffix= 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) ;; 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) func_ltwrapper_exec_suffix=.exe ;; 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_scriptname file 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Assumes file is an ltwrapper_executable 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# uses $file to determine the appropriate filename for a 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# temporary ltwrapper_script. 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_scriptname () 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname_result="" 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$1"; then 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$1" "" "." 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$func_basename_result" 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_p file 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script or wrapper executable 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters. 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_p () 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_execute_cmds commands fail_cmd 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Execute tilde-delimited COMMANDS. 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If FAIL_CMD is given, eval that upon failure. 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FAIL_CMD may read-access the current command in variable CMD! 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_execute_cmds () 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs=$IFS; IFS='~' 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for cmd in $1; do 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$save_ifs 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmd=\"$cmd\" 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$cmd" "${2-:}" 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$save_ifs 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_source file 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Source FILE, adding directory component if necessary. 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Note that it is not necessary on cygwin/mingw to append a dot to 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior happens only for exec(3), not for open(2)! Also, sourcing 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `FILE.' does not work on cygwin managed mounts. 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_source () 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $1 in 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */* | *\\*) . "$1" ;; 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) . "./$1" ;; 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_infer_tag arg 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Infer tagged configuration to use if any are available and 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if one wasn't chosen via the "--tag" command line option. 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only attempt this if the compiler in the base compile 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# command doesn't match the default compiler. 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# arg is usually of the form 'gcc ...' 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_infer_tag () 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$available_tags" && test -z "$tagname"; then 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted= 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $CC; do 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted="$CC_quoted $func_quote_for_eval_result" 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $@ in 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Blanks in the command may have been stripped by the calling shell, 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but not from the CC environment variable when configure was run. 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Blanks at the start of $base_compile will cause this to fail 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # if we don't check for them as well. 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for z in $available_tags; do 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Evaluate the configuration. 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted= 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $CC; do 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Double-quote args containing other shell metacharacters. 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CC_quoted="$CC_quoted $func_quote_for_eval_result" 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$@ " in 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The compiler in the base compile command matches 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the one in the tagged configuration. 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Assume this is the tagged configuration we want. 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tagname=$z 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If $tagname still isn't set, then no tagged configuration 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # was found and let the user know that the "--tag" command 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # line option must be used. 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$tagname"; then 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "unable to infer tagged configuration" 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "specify a tag with \`--tag'" 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_verbose "using $tagname tagged configuration" 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_write_libtool_object output_name pic_name nonpic_name 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Create a libtool object file (analogous to a ".la" file), 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but don't create it if we're doing a dry run. 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_write_libtool_object () 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_libobj=${1} 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_lobj=\'${2}\' 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_lobj=none 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_oldobj=\'${3}\' 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) write_oldobj=none 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat >${write_libobj}T <<EOF 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $write_libobj - a libtool object file 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file! 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library. 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the PIC object. 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pic_object=$write_lobj 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the non-PIC object 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)non_pic_object=$write_oldobj 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "${write_libobj}T" "${write_libobj}" 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_compile arg... 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_compile () 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the compilation command and the source file. 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile= 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_opt=yes 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_output= 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj= 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) later= 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pie_flag= 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg_mode in 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg ) 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # do not "continue". Instead, add this to base_compile 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$arg" 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target ) 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj="$arg" 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=normal 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) normal ) 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Accept any command-line options. 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o) 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$libobj" && \ 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you cannot specify \`-o' more than once" 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=target 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -pie | -fpie | -fPIE) 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pie_flag="$pie_flag $arg" 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared | -static | -prefer-pic | -prefer-non-pic) 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) later="$later $arg" 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-suppress) 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_opt=no 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xcompiler) 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg_mode=arg # the next one goes into the "base_compile" arg list 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue # The current "srcfile" will either be retained or 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # replaced later. I would guess that would be a bug. 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wc,*) 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wc,' '' "$arg" 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg= 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $args; do 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$lastarg $func_quote_for_eval_result" 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$lastarg" 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg=$func_stripname_result 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the arguments to base_compile. 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$base_compile $lastarg" 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Accept the current argument as the source file. 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The previous "srcfile" becomes the current argument. 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lastarg="$srcfile" 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcfile="$arg" 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $arg 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $arg_mode 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote the previous argument. 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$lastarg" 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$base_compile $func_quote_for_eval_result" 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for arg 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg_mode in 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg) 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you must specify an argument for -Xcompile" 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target) 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "you must specify a target with \`-o'" 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the name of the library object. 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libobj" && { 12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$srcfile" 12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj="$func_basename_result" 12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Recognize several different file suffixes. 12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the user specifies -o file.o, it is replaced with file.lo 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libobj in 12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.[cCFSifmso] | \ 12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.ada | *.adb | *.ads | *.asm | \ 12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_xform "$libobj" 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobj=$func_xform_result 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libobj in 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot determine name of library object from \`$libobj'" 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_infer_tag $base_compile 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $later; do 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" != yes && \ 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "can not build a shared library" 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=no 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static) 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-pic) 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=yes 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-non-pic) 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=no 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$libobj" 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$libobj" != "X$func_quote_for_eval_result" \ 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && func_warning "libobj name \`$libobj' may not contain shell special characters." 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$obj" "/" "" 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objname="$func_basename_result" 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lobj=${xdir}$objdir/$objname 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$base_compile" && \ 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a compilation command" 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete any leftover library objects. 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$obj $lobj $libobj ${libobj}T" 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$lobj $libobj ${libobj}T" 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # On Cygwin there's no "real" PIC flag so we must build both object types 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cygwin* | mingw* | pw32* | os2* | cegcc*) 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=default 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # non-PIC code in shared libraries is not supported 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_mode=default 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Calculate the filename of the output object if compiler does 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # not support -o with -c 12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$compiler_c_o" = no; then 12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lockfile="$output_obj.lock" 13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_obj= 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_locks=no 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lockfile= 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Lock this critical section if it is needed 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We use this script file to make the link, it avoids creating a new file 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = yes; then 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_echo "Waiting for $lockfile to be removed" 13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sleep 2 13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$need_locks" = warn; then 13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lockfile"; then 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile exists and contains: 13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$removelist $output_obj" 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$srcfile" > "$lockfile" 13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist="$removelist $lockfile" 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$fix_srcfile_path"; then 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval srcfile=\"$fix_srcfile_path\" 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$srcfile" 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qsrcfile=$func_quote_for_eval_result 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only build a PIC object if we are building libtool libraries. 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Without this assignment, base_compile gets emptied. 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fbsd_hideous_sh_bug=$base_compile 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" != no; then 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile $pic_flag" 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't build PIC code 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile" 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$xdir$objdir" 13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$output_obj"; then 13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Place PIC objects in $objdir 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command -o $lobj" 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval_locale "$command" \ 13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = warn && 13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains: 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain: 13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just move the object if needed, then go on to compile the next one 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "$output_obj" "$lobj"' \ 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow error messages only from the first compilation. 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$suppress_opt" = yes; then 13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suppress_output=' >/dev/null 2>&1' 13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only build a position-dependent object if we build old libraries. 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_mode" != yes; then 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't build PIC code 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile$pie_flag" 14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$base_compile $qsrcfile $pic_flag" 14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$compiler_c_o" = yes; then 14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command -o $obj" 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Suppress compiler output if we already did a PIC compilation. 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) command="$command$suppress_output" 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval_locale "$command" \ 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" = warn && 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains: 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null` 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain: 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same 14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together. If you 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler." 14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $RM $removelist 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just move the object if needed 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$MV "$output_obj" "$obj"' \ 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unlock the critical section if it was locked 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_locks" != no; then 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removelist=$lockfile 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "$lockfile" 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || { 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = compile && func_mode_compile ${1+"$@"} 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_help () 14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to display help for each of the modes. 14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $mode in 14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") 14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Generic help is extracted from the usage comments 14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # at the start of this file. 14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_help 14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) 14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove files from the build directory. 14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM. 14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, object or program, all the files associated 14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with it are deleted. Otherwise, only FILE itself is deleted using RM." 14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile) 14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Compile a source file into a libtool library object. 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options: 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-suppress do not suppress compiler output for multiple passes 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-pic try to building PIC objects only 14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -prefer-non-pic try to building non-PIC objects only 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared do not build a \`.o' file suitable for static linking 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static only build a \`.o' file suitable for static linking 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COMPILE-COMMAND is a command to be used in creating a \`standard' object file 14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from the given SOURCEFILE. 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The output file name is determined by removing the directory component from 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SOURCEFILE, then substituting the C source code suffix \`.c' with the 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library object suffix, \`.lo'." 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute) 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Automatically set library path, then run a program. 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options: 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen FILE add the directory containing FILE to the library path 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode sets the library path environment variable according to \`-dlopen' 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)flags. 15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If any of the ARGS are libtool executable wrappers, then they are translated 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)into their corresponding uninstalled binary, and any of their required library 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)directories are added to the library path. 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Then, COMMAND is executed, with ARGS as arguments." 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finish) 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Complete the installation of libtool libraries. 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Each LIBDIR is a directory that contains libtool libraries. 15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The commands that this mode executes may require superuser privileges. Use 15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the \`--dry-run' option if you just want to see what would be executed." 15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install) 15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Install executables or libraries. 15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL-COMMAND is the installation command. The first component should be 15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either the \`install' or \`cp' program. 15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of INSTALL-COMMAND are treated specially: 15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The rest of the components are interpreted as arguments to that command (only 15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BSD-compatible install options are recognized)." 15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) 15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Link object files or libraries together to form another library, or to 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)create an executable program. 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LINK-COMMAND is a command using the C compiler that you would use to create 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a program from several object files. 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of LINK-COMMAND are treated specially: 15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static do not do any dynamic linking at all 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -avoid-version do not add a version suffix if possible 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols SYMFILE 15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) try to export only the symbols listed in SYMFILE 15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols-regex REGEX 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) try to export only the symbols matching REGEX 15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -LLIBDIR search LIBDIR for required installed libraries 15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -lNAME OUTPUT-FILE requires the installed library libNAME 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -module build a library that can dlopened 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-fast-install disable the fast-install mode 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-install link a not-installable executable 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-undefined declare that a library does not refer to external symbols 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -objectlist FILE Use a list of object files found in FILE to specify objects 15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -precious-files-regex REGEX 15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) don't remove output files matching REGEX 15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -release RELEASE specify package release information 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -rpath LIBDIR the created library will eventually be installed in LIBDIR 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared only do dynamic linking of libtool libraries 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shrext SUFFIX override the standard shared library file extension 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static do not do any dynamic linking of uninstalled libtool libraries 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static-libtool-libs 15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do not do any dynamic linking of libtool libraries 15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-info CURRENT[:REVISION[:AGE]] 15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specify library version info [each variable defaults to 0] 15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -weak LIBNAME declare that the target provides the LIBNAME interface 15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)All other options (arguments beginning with \`-') are ignored. 15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Every other argument is treated as a filename. Files ending in \`.la' are 16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)treated as uninstalled libtool libraries, other files are standard or library 16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)object files. 16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only library objects (\`.lo' files) may be specified, and \`-rpath' is 16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)required, except when creating a convenience library. 16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using \`ar' and \`ranlib', or on Windows using \`lib'. 16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)is created, otherwise an executable program is created." 16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) 16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \ 16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove libraries from an installation directory. 16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE 16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM. 16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, all the files associated with it are deleted. 16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Otherwise, only FILE itself is deleted using RM." 16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "invalid operation mode \`$mode'" 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "Try \`$progname --help' for more information about other modes." 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $? 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now that we've collected a possible --mode arg, show help if necessary 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_help && func_mode_help 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_execute arg... 16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_execute () 16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The first argument is the command name. 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cmd="$nonopt" 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$cmd" && \ 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a COMMAND" 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Handle -dlopen flags immediately. 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $execute_dlfiles; do 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$file" \ 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$file' is not a file" 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir= 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$file" \ 16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$lib' is not a valid libtool archive" 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the libtool library. 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname= 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip this library if it cannot be dlopened. 16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlname"; then 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Warn if it was a shared library. 16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$library_names" && \ 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$file' was not linked with \`-export-dynamic'" 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$dir/$objdir/$dlname"; then 16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$dir/$objdir" 16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$dir/$dlname"; then 16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just add the directory containing the .lo file. 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the absolute pathname. 17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$absdir" && dir="$absdir" 17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now add the directory to shlibpath_var. 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "test -z \"\$$shlibpath_var\""; then 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$shlibpath_var=\"\$dir\"" 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set shlibpath_var 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # rather than running their programs. 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_execute_magic="$magic" 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check if any of the arguments is a wrapper script. 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args= 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file 17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) ;; 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is really a libtool program. 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_script_p "$file"; then 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform arg to wrapped name. 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$progdir/$program" 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif func_ltwrapper_executable_p "$file"; then 17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$func_ltwrapper_scriptname_result" 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform arg to wrapped name. 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$progdir/$program" 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Quote arguments (to preserve shell metacharacters). 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$file" 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args="$args $func_quote_for_eval_result" 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$opt_dry_run" = Xfalse; then 17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Export the shlibpath_var. 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "export $shlibpath_var" 17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restore saved environment variables 17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "if test \"\${save_$lt_var+set}\" = set; then 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $lt_var=\$save_$lt_var; export $lt_var 17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $lt_unset $lt_var 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now prepare to actually exec the command. 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec_cmd="\$cmd$args" 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Display what would be done. 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "export $shlibpath_var" 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$cmd$args" 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = execute && func_mode_execute ${1+"$@"} 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_finish arg... 17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_finish () 17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdirs="$nonopt" 17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) admincmds= 17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdirs="$libdirs $dir" 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $libdirs; do 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_cmds"; then 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the finish commands. 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'"$cmd"'"' 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$finish_eval"; then 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do the single finish_eval. 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval cmds=\"$finish_eval\" 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $cmds" 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Exit here if they wanted silent mode. 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent && exit $EXIT_SUCCESS 18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X----------------------------------------------------------------------" | $Xsed 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "Libraries have been installed in:" 18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $libdirs; do 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " $libdir" 18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "If you ever happen to want to link against installed libraries" 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "flag during linking and do at least one of the following:" 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " during execution" 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$runpath_var"; then 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " during linking" 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$hardcode_libdir_flag_spec"; then 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir=LIBDIR 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval flag=\"$hardcode_libdir_flag_spec\" 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - use the \`$flag' linker flag" 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$admincmds"; then 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - have your system administrator run these commands:$admincmds" 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f /etc/ld.so.conf; then 18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "See any operating system documentation about shared libraries for" 18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) solaris2.[6789]|solaris2.1[0-9]) 18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "pages." 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X----------------------------------------------------------------------" | $Xsed 18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = finish && func_mode_finish ${1+"$@"} 18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_install arg... 18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_install () 18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # There may be an optional sh(1) argument at the beginning of 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install_prog (especially on Windows NT). 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow the use of GNU shtool's install command. 18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote it. 18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$nonopt" 18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$func_quote_for_eval_result " 18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$1 18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog= 18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$nonopt 18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The real first argument should be the name of the installation program. 18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote it. 18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$install_prog$func_quote_for_eval_result" 18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to accept at least all the BSD install flags. 18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest= 18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files= 18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opts= 18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_type= 18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isdir=no 18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripme= 18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dest"; then 18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files="$files $dest" 18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$arg 18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -d) isdir=yes ;; 18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -f) 18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $install_prog " in 18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\ /]cp\ *) ;; 18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) prev=$arg ;; 19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -g | -m | -o) 19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=$arg 19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -s) 19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripme=" -s" 19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) 19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the previous option needed an argument, then skip it. 19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$prev"; then 19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$arg 19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Aesthetically quote the argument. 19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_prog="$install_prog $func_quote_for_eval_result" 19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$install_prog" && \ 19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an install program" 19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$prev" && \ 19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "the \`$prev' option requires an argument" 19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$files"; then 19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dest"; then 19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "no file or destination specified" 19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a destination" 19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Strip any trailing slash from the destination. 19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '/' "$dest" 19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dest=$func_stripname_result 19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that the destination is a directory. 19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -d "$dest" && isdir=yes 19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$isdir" = yes; then 19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir="$dest" 19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destname= 19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname_and_basename "$dest" "" "." 19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir="$func_dirname_result" 19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destname="$func_basename_result" 19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Not a directory, so check to see that there is only one file specified. 19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $files; shift 19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$#" -gt 1 && \ 19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "\`$dest' is not a directory" 19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $destdir in 19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) ;; 19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "\`$destdir' must be an absolute directory name" 19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set variables rather 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than running their programs. 19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_install_magic="$magic" 19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticlibs= 19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) future_libdirs= 19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current_libdirs= 19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each installation. 19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do the static libraries later. 19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticlibs="$staticlibs $file" 19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$file" \ 19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_help "\`$file' is not a valid libtool archive" 19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$file" 19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the libdir to current_libdirs if it is the destination. 20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$destdir" = "X$libdir"; then 20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$current_libdirs " in 20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) current_libdirs="$current_libdirs $libdir" ;; 20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Note the libdir as a future libdir. 20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$future_libdirs " in 20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) future_libdirs="$future_libdirs $libdir" ;; 20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "/" "" 20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$dir$objdir" 20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$relink_command"; then 20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Determine the prefix the user has applied to our future dir. 20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't allow the user to place us outside of our expected 20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # location b/c this prevents finding dependent libraries that 20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are installed to the same prefix. 20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # At present, this check doesn't affect windows .dll's that 20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are installed into $libdir/../bin (currently, that works fine) 20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but it's something to keep an eye on. 20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$inst_prefix_dir" = "$destdir" && \ 20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Stick the inst_prefix_dir data into the link command. 20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "relinking \`$file'" 20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$relink_command" \ 20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See the names of the shared library. 20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $library_names; shift 20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1"; then 20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) realname="$1" 20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) srcname="$realname" 20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$relink_command" && srcname="$realname"T 20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the shared library and build the symlinks. 20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'exit $?' 20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tstripme="$stripme" 20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cygwin* | mingw* | pw32* | cegcc*) 20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $realname in 20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.dll.a) 20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tstripme="" 20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$tstripme" && test -n "$striplib"; then 20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$striplib $destdir/$realname" 'exit $?' 20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$#" -gt 0; then 20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the old symlinks, and create new ones. 20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try `ln -sf' first, because the `ln' binary might depend on 20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the symlink we replace! Solaris /bin/ln does not understand -f, 20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so we also need to try rm && ln -s. 20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for linkname 20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkname" != "$realname" \ 20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postinstall commands. 20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib="$destdir/$realname" 20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$postinstall_cmds" 'exit $?' 20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the pseudo-library for information purposes. 20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instname="$dir/$name"i 20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Maybe install the static library, too. 20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install (i.e. copy) a libtool object. 20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Figure out destination file name, if it wasn't already specified. 21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$destname"; then 21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destname" 21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$func_basename_result" 21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destfile" 21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Deduce the name of the destination old-style object file. 21095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $destfile in 21105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 21115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$destfile" 21125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticdest=$func_lo2o_result 21135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$objext) 21155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticdest="$destfile" 21165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile= 21175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "cannot copy a libtool object to \`$destfile'" 21205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the libtool object if requested. 21245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$destfile" && \ 21255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog $file $destfile" 'exit $?' 21265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the old object if enabled. 21285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = yes; then 21295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Deduce the name of the old-style object file. 21305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$file" 21315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) staticobj=$func_lo2o_result 21325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 21335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 21355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Figure out destination file name, if it wasn't already specified. 21395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$destname"; then 21405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destname" 21415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 21425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 21435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$func_basename_result" 21445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile="$destdir/$destfile" 21455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the file is missing, and there is a .exe on the end, strip it 21485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # because it is most likely a libtool script we actually want to 21495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install 21505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripped_ext="" 21515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 21525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) 21535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$file"; then 21545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 21555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=$func_stripname_result 21565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stripped_ext=".exe" 21575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is really a libtool program. 21625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 21635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw*) 21645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$file"; then 21655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 21665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$func_ltwrapper_scriptname_result 21675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 21685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 21695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$func_stripname_result 21705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 21735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper=$file 21745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 21755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 21765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_script_p "$wrapper"; then 21775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs= 21785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 21795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$wrapper" 21815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check the variables that should have been set. 21835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$generated_by_libtool_version" && \ 21845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize=yes 21875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $notinst_deplibs; do 21885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that each library is installed. 21895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir= 21905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lib"; then 21915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 21925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$libdir" && test ! -f "$libfile"; then 21955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$lib' has not been installed in \`$libdir'" 21965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize=no 21975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 21985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 21995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 22015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$wrapper" 22025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname= 22045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = no && test -n "$relink_command"; then 22055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 22065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$finalize" = yes; then 22075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmpdir=`func_mktempdir` 22085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file$stripped_ext" 22095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$func_basename_result" 22105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname="$tmpdir/$file" 22115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace the output file specification. 22125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_silent || { 22155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_expand "$relink_command" 22165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "func_echo $func_quote_for_expand_result" 22175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "$relink_command"; then : 22195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "error: relink \`$file' with the above command before installing it" 22215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || ${RM}r "$tmpdir" 22225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 22235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file="$outputname" 22255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot relink \`$file'" 22275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 22295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Install the binary that we compiled earlier. 22315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 22325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # remove .exe since cygwin /usr/bin/install will append another 22365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # one anyway 22375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $install_prog,$host in 22385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */usr/bin/install*,*cygwin*) 22395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file:$destfile in 22405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe:*.exe) 22415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # this is ok 22425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe:*) 22445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile=$destfile.exe 22455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *:*.exe) 22475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$destfile" 22485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destfile=$func_stripname_result 22495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || if test -n "$outputname"; then 22555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ${RM}r "$tmpdir" 22565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 22585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 22595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 22605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $staticlibs; do 22625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 22635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 22645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Set up the ranlib parameters. 22665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlib="$destdir/$name" 22675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$stripme" && test -n "$old_striplib"; then 22715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$old_striplib $oldlib" 'exit $?' 22725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postinstall commands. 22755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 22775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$future_libdirs" && \ 22795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "remember to run \`$progname --finish$future_libdirs'" 22805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$current_libdirs"; then 22825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Maybe just do a dry run. 22835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run && current_libdirs=" -n$current_libdirs" 22845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 22865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 22875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 22885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 22895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = install && func_mode_install ${1+"$@"} 22915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_generate_dlsyms outputname originator pic_p 22945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Extract symbols from dlprefiles and create ${outputname}S.o with 22955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a dlpreopen symbol table. 22965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_generate_dlsyms () 22975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 22985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 22995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_outputname="$1" 23005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_originator="$2" 23015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_pic_p="${3-no}" 23025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 23035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dlsyms= 23045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 23065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$NM" && test -n "$global_symbol_pipe"; then 23075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_dlsyms="${my_outputname}S.c" 23085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 23095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "not configured to extract global symbols from dlpreopened files" 23105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$my_dlsyms"; then 23145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_dlsyms in 23155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") ;; 23165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.c) 23175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Discover the nlist of each of the dlfiles. 23185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nlist="$output_objdir/${my_outputname}.nm" 23195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse the name list into a source file. 23235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "creating $output_objdir/$my_dlsyms" 23245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 23305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern \"C\" { 23315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 23325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* External symbol declarations for the compiler. */\ 23345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 23355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$dlself" = yes; then 23375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating symbol list for \`$output'" 23385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add our own program objects to the symbol list. 23425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for progfile in $progfiles; do 23445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting global C symbols from \`$progfile'" 23455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 23475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$exclude_expsyms"; then 23495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols_regex"; then 23565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepare the list of exported symbols 23635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$export_symbols"; then 23645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$output_objdir/$outputname.exp" 23655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $export_symbols 23675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 23695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 23705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 23735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 23745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 23765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$MV "$nlist"T "$nlist"' 23805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 23815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin | *mingw* | *cegcc* ) 23825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 23855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 23865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 23895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dlprefile in $dlprefiles; do 23915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting global C symbols from \`$dlprefile'" 23925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$dlprefile" 23935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 23945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 23955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval '$ECHO ": $name " >> "$nlist"' 23965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 23985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 23995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 24015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure we have at least an empty file. 24025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$nlist" || : > "$nlist" 24035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$exclude_expsyms"; then 24055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 24065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV "$nlist"T "$nlist" 24075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try sorting and uniquifying the output. 24105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP -v "^: " < "$nlist" | 24115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if sort -k 3 </dev/null >/dev/null 2>&1; then 24125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sort -k 3 24135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sort +2 24155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi | 24165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uniq > "$nlist"S; then 24175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 24185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP -v "^: " < "$nlist" > "$nlist"S 24205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$nlist"S; then 24235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 24245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 24255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 24265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 24275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The mapping between symbol names and symbols. */ 24315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct { 24325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *name; 24335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *address; 24345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} lt_dlsymlist; 24355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 24365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 24375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 24385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* DATA imports from DLLs on WIN32 con't be const, because 24405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) runtime relocations are performed -- see ld's documentation 24415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) on pseudo-relocs. */" 24425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const= ;; 24435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *osf5*) 24445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo >> "$output_objdir/$my_dlsyms" "\ 24455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This system does not cope well with relocations in const data */" 24465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const= ;; 24475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_dlsym_const=const ;; 24495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern $lt_dlsym_const lt_dlsymlist 24535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[]; 24545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_dlsym_const lt_dlsymlist 24555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[] = 24565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){\ 24575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { \"$my_originator\", (void *) 0 }," 24585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $need_lib_prefix in 24605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no) 24615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 24665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 24675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> "$output_objdir/$my_dlsyms" "\ 24685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {0, (void *) 0} 24695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 24705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This works around a problem in FreeBSD linker */ 24725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef FREEBSD_WORKAROUND 24735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const void *lt_preloaded_setup() { 24745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return lt_${my_prefix}_LTX_preloaded_symbols; 24755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 24775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 24795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 24805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif\ 24815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 24825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } # !$opt_dry_run 24835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable= 24855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_command " in 24865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -static "*) ;; 24875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 24895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiling the symbol table file with pic_flag works around 24905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # a FreeBSD bug that causes programs to crash when -lm is 24915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # linked before any other PIC object. But we must not use 24925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # pic_flag when linking with -static. The problem exists in 24935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-hpux*) 24975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag" ;; 24985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 24995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$my_pic_p" != Xno; then 25005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_flag_for_symtable=" $pic_flag" 25015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) symtab_cflags= 25075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg in $LTCFLAGS; do 25085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 25095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -pie | -fpie | -fPIE) ;; 25105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) symtab_cflags="$symtab_cflags $arg" ;; 25115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 25135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now compile the dynamic symbol file. 25155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 25165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Clean up the generated files. 25185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 25195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Transform the symbol file into the correct name. 25215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) symfileobj="$output_objdir/${my_outputname}S.$objext" 25225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 25235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc* ) 25245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$my_outputname.def"; then 25255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 25285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 25335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "unknown suffix for \`$my_dlsyms'" 25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We keep going just in case the user didn't refer to 25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # really was required. 25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Nullify the symbol file. 25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_win32_libid arg 25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# return the library type of file 'arg' 25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Need a lot of goo to handle *both* DLLs and import libs 25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Has to be a shell function in order to 'eat' the argument 25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that is supplied when $file_magic_command is called. 25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_win32_libid () 25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="unknown" 25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_fileres=`file -L $1 2>/dev/null` 25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_fileres in 25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *ar\ archive\ import\ library*) # definitely import 25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 archive import" 25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *ar\ archive*) # could be an import, or static 25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_nmres=`eval $NM -f posix -A $1 | 25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -n -e ' 25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1,100{ 25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) / I /{ 25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) s,.*,import, 25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p 25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) q 25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }'` 25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_nmres in 25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) import*) win32_libid_type="x86 archive import";; 25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) win32_libid_type="x86 archive static";; 25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *DLL*) 25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 DLL" 25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *executable*) # but shell scripts are "executable" too... 25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $win32_fileres in 25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *MS\ Windows\ PE\ Intel*) 25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) win32_libid_type="x86 DLL" 25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "$win32_libid_type" 25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_an_archive dir oldlib 26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_an_archive () 26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f_ex_an_ar_dir="$1"; shift 26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f_ex_an_ar_oldlib="$1" 26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_archives gentop oldlib ... 26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_archives () 26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_gentop="$1"; shift 26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldlibs=${1+"$@"} 26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldobjs="" 26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib="" 26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xabs="" 26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xdir="" 26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for my_xlib in $my_oldlibs; do 26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract the objects. 26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $my_xlib in 26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) my_xabs=`pwd`"/$my_xlib" ;; 26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$my_xlib" 26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib="$func_basename_result" 26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib_u=$my_xlib 26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while :; do 26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $extracted_archives " in 26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $my_xlib_u "*) 26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $extracted_serial + 1 26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extracted_serial=$func_arith_result 26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xlib_u=lt$extracted_serial-$my_xlib ;; 26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) break ;; 26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extracted_archives="$extracted_archives $my_xlib_u" 26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_xdir="$my_gentop/$my_xlib_u" 26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$my_xdir" 26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-darwin*) 26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "Extracting $my_xabs" 26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not bother doing anything if just a dry run 26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_dry_run || { 26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_orig_dir=`pwd` 26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd $my_xdir || exit $? 26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_archive=$my_xabs 26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_curdir=`pwd` 26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_base_archive=`basename "$darwin_archive"` 26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$darwin_arches"; then 26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_arch= 26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for darwin_arch in $darwin_arches ; do 26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "$darwin_curdir" 26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # $darwin_arches 26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_file= 26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_files= 26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for darwin_file in $darwin_filelist; do 26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $LIPO -create -output "$darwin_file" $darwin_files 26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # $darwin_filelist 26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM -rf unfat-$$ 26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd "$darwin_orig_dir" 26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cd $darwin_orig_dir 26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "$my_xdir" "$my_xabs" 26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $darwin_arches 26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } # !$opt_dry_run 26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_an_archive "$my_xdir" "$my_xabs" 26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_extract_archives_result="$my_oldobjs" 26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part1 [arg=no] 27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the first part of a libtool wrapper script on stdout. 27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with 27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below. 27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part1 () 27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1_arg1=no 27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1_arg1=$1 27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#! $SHELL 27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $output - temporary wrapper script for $objdir/$outputname 27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The $output program cannot be directly executed until all the libtool 27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libraries that it depends on are installed. 27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This wrapper script should never be moved out of the build directory. 27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If it is, it will not operate correctly. 27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting. It backslashifies 27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings. 27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed='${SED} -e 1s/^X//' 27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='$sed_quote_subst' 27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible 27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) emulate sh 27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULLCMD=: 27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is contrary to our usage. Disable this feature. 27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alias -g '\${1+\"\$@\"}'='\"\$@\"' 27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setopt NO_GLOB_SUBST 27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64 27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh 27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The HP-UX ksh and POSIX shell print the target directory to stdout 27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if CDPATH is set. 27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\" 27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This environment variable determines our operation mode. 27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test \"\$libtool_install_magic\" = \"$magic\"; then 27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # install mode needs the following variables: 27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated_by_libtool_version='$macro_version' 27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs='$notinst_deplibs' 27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else 27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # When we are sourced in execute mode, \$file and \$ECHO are already set. 27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$libtool_execute_magic\" != \"$magic\"; then 27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ECHO=\"$qecho\" 27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\"\$0\" 27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure echo works. 27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"X\$1\" = X--no-reexec; then 27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Discard the --no-reexec flag, and continue. 27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Yippee, \$ECHO works! 27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Restart under the correct shell, and then maybe \$ECHO will work. 27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi\ 27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find the directory that this script lives in. 27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test \"x\$thisdir\" = \"x\$file\" && thisdir=. 27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Follow symbolic links until we get to the real thisdir. 27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test -n \"\$file\"; do 27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there was a directory component, then change thisdir. 27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"x\$destdir\" != \"x\$file\"; then 27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \"\$destdir\" in 27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) thisdir=\"\$thisdir/\$destdir\" ;; 27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part1 27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part2 [arg=no] 28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the second part of a libtool wrapper script on stdout. 28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with 28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below. 28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part2 () 28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2_arg1=no 28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2_arg1=$1 28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Usually 'no', except on cygwin/mingw when embedded into 28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the cwrapper. 28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # special case for '.' 28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$thisdir\" = \".\"; then 28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thisdir=\`pwd\` 28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # remove .libs from thisdir 28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case \"\$thisdir\" in 28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $objdir ) thisdir=. ;; 28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try to get the absolute directory name. 28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=\`cd \"\$thisdir\" && pwd\` 28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n \"\$absdir\" && thisdir=\"\$absdir\" 28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes; then 28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program=lt-'$outputname'$exeext 28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=\"\$thisdir/$objdir\" 28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f \"\$progdir/\$program\" || 28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=\"\$\$-\$program\" 28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -d \"\$progdir\"; then 28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MKDIR \"\$progdir\" 28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # relink executable if necessary 28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n \"\$relink_command\"; then 28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \"\$relink_command_output\" >&2 28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { $RM \"\$progdir/\$program\"; 28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM \"\$progdir/\$file\" 28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi" 28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program='$outputname' 28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) progdir=\"\$thisdir/$objdir\" 28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f \"\$progdir/\$program\"; then" 28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Export our shlibpath_var if we have one. 28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add our own library path to $shlibpath_var 28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some systems cannot cope with colon-terminated $shlibpath_var 28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The second colon is a workaround for a bug in BeOS R4 sed 28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export $shlibpath_var 28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # fixup the dll searchpath if we need to. 28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dllsearchpath"; then 28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the dll search path components to the executable PATH 28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PATH=$dllsearchpath:\$PATH 28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test \"\$libtool_execute_magic\" != \"$magic\"; then 29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Run the actual program with our arguments. 29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Backslashes separate directories on plain windows 29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-mingw | *-*-os2* | *-cegcc*) 29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec \"\$progdir/\$program\" \${1+\"\$@\"} 29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "\ 29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The program doesn't exist. 29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit 1 29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi\ 29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)" 29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part2 29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper [arg=no] 29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit a libtool wrapper script on stdout. 29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Don't directly open a file because we may want to 29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# incorporate the script contents within a cygwin/mingw 29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# wrapper executable. Must ONLY be called from within 29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link because it depends on a number of variables 29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# set therein. 29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable will take. If 'yes', then the emitted script 29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will assume that the directory in which it is stored is 29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the $objdir directory. This is a cygwin/mingw-specific 29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior. 29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper () 29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_arg1=no 29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_arg1=$1 29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # split this up so that func_emit_cwrapperexe_src 29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # can call each part independently. 29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_path arg 29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert paths to host format when used with build tools. 29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Intended for use with "native" mingw (where libtool itself 29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is running under the msys shell), or in the following cross- 29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# build environments: 29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build $host 29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mingw (msys) mingw [e.g. native] 29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# cygwin mingw 29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# *nix + wine mingw 29745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# where wine is equipped with the `winepath' executable. 29755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the native mingw case, the (msys) shell automatically 29765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# converts paths for any non-msys applications it launches, 29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but that facility isn't available from inside the cwrapper. 29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Similar accommodations are necessary for $host mingw and 29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build cygwin. Calling this function does no harm for other 29805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host/$build combinations not listed above. 29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the path (on $build) that should be converted to 29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation for $host. The result is stored 29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_path_result. 29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_path () 29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="$1" 29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) 29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $build in 29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) # actually, msys 29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # awkward: cmd appends spaces to result 29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* ) 30025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`cygpath -w "$1"` 30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) 30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unfortunately, winepath does not exit with a non-zero 30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # error code, so we are forced to check the contents of 30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # stdout. On the other hand, if the command is not 30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # found, the shell will set an exit code of 127 and print 30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # *an error message* to stdout. So we must check for both 30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # error code of zero AND non-empty stdout, which explains 30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the odd construction: 30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Allow warning below. 30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="" 30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_path_result" ; then 30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Could not determine host path corresponding to" 30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error " '$1'" 30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Continuing, but uninstalled executables may not work." 30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Fallback: 30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path_result="$1" 30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_path 30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_pathlist arg 30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert pathlists to host format when used with build tools. 30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See func_to_host_path(), above. This function supports the 30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# following $build/$host combinations (but does no harm for 30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# combinations not listed here): 30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build $host 30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mingw (msys) mingw [e.g. native] 30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# cygwin mingw 30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# *nix + wine mingw 30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Path separators are also converted from $build format to 30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host format. If ARG begins or ends with a path separator 30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# character, it is preserved (but converted to $host format) 30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# on output. 30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is a pathlist (on $build) that should be converted to 30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation on $host. The result is stored 30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_pathlist_result. 30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_pathlist () 30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$1" 30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$1" ; then 30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) 30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove leading and trailing path separator characters from 30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ARG. msys behavior is inconsistent here, cygpath turns them 30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # into '.;' and ';.', and winepath ignores them completely. 30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2="$1" 30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Once set for this call, this variable should not be 30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # reassigned. It is used in tha fallback case. 30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's|^:*||' -e 's|:*$||'` 30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $build in 30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* ) # Actually, msys. 30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Awkward: cmd appends spaces to result. 30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* ) 30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_sed_naive_backslashify"` 30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) 30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # unfortunately, winepath doesn't convert pathlists 30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="" 30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_oldIFS=$IFS 30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=: 30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$func_to_host_pathlist_oldIFS 30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$func_to_host_pathlist_f" ; then 30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_path "$func_to_host_pathlist_f" 30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$func_to_host_path_result" ; then 30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_pathlist_result" ; then 30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$func_to_host_path_result" 30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=: 31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS=$func_to_host_pathlist_oldIFS 31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$func_to_host_pathlist_result" ; then 31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Could not determine the host path(s) corresponding to" 31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error " '$1'" 31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_error "Continuing, but uninstalled executables may not work." 31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Fallback. This may break if $1 contains DOS-style drive 31125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # specifications. The fix is not to complicate the expression 31135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # below, but for the user to provide a working wine installation 31145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # with winepath so that path translation in the cross-to-mingw 31155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # case works properly. 31165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_replace_pathsep_nix_to_dos="s|:|;|g" 31175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e "$lt_replace_pathsep_nix_to_dos"` 31195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now, add the leading and trailing path separators back 31215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$1" in 31225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$1" in 31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_pathlist 31345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_cwrapperexe_src 31365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# emit the source code for a wrapper executable on stdout 31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Must ONLY be called from within func_mode_link because 31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it depends on a number of variable set therein. 31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_cwrapperexe_src () 31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 31415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The $output program cannot be directly executed until all the libtool 31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libraries that it depends on are installed. 31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) This wrapper executable should never be moved out of the build directory. 31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) If it is, it will not operate correctly. 31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Currently, it simply execs the wrapper *script* "$SHELL $output", 31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) but could eventually absorb all of the scripts functionality and 31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exec $objdir/$outputname directly. 31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h> 31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h> 31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER 31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <direct.h> 31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <process.h> 31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h> 31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define setmode _setmode 31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <unistd.h> 31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdint.h> 31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __CYGWIN__ 31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h> 31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_SETENV 31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __STRICT_ANSI__ 31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *realpath (const char *, char *); 31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int putenv (char *); 31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int setenv (const char *, const char *, int); 31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <malloc.h> 31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h> 31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <assert.h> 31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h> 31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ctype.h> 31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h> 31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h> 31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h> 31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PATH_MAX) 31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX PATH_MAX 31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(MAXPATHLEN) 31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX MAXPATHLEN 31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX 1024 31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXOTH 31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXOTH 0 31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXGRP 31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXGRP 0 32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER 32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXUSR _S_IEXEC 32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define stat _stat 32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _INTPTR_T_DEFINED 32065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define intptr_t int 32075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR 32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR '/' 32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR ':' 32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) defined (__OS2__) 32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_DOS_BASED_FILE_SYSTEM 32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb" 32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef DIR_SEPARATOR_2 32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR_2 '\\' 32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef PATH_SEPARATOR_2 32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR_2 ';' 32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif 32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR_2 32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* DIR_SEPARATOR_2 */ 32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) \ 32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* DIR_SEPARATOR_2 */ 32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PATH_SEPARATOR_2 32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* PATH_SEPARATOR_2 */ 32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PATH_SEPARATOR_2 */ 32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __CYGWIN__ 32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb" 32425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef FOPEN_WB 32455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "w" 32465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _O_BINARY 32485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define _O_BINARY 0 32495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XFREE(stale) do { \ 32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (stale) { free ((void *) stale); stale = 0; } \ 32545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} while (0) 32555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef LTWRAPPER_DEBUGPRINTF 32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined DEBUGWRAPPER 32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ltwrapper_debugprintf (const char *fmt, ...) 32615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 32625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list args; 32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start (args, fmt); 32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) vfprintf (stderr, fmt, args); 32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end (args); 32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 32675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 32685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) 32695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *program_name = NULL; 32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *xmalloc (size_t num); 32745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *xstrdup (const char *string); 32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *base_name (const char *name); 32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *find_executable (const char *wrapper); 32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *chase_symlinks (const char *pathspec); 32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int make_executable (const char *path); 32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int check_executable (const char *path); 32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *strendzap (char *str, const char *pat); 32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_fatal (const char *message, ...); 32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_setenv (const char *name, const char *value); 32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *lt_extend_str (const char *orig_value, const char *add, int to_end); 32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_set (const char *arg); 32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_prepend (const char *arg); 32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_append (const char *arg); 32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int lt_split_name_value (const char *arg, char** name, char** value); 32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_exe_path (const char *name, const char *value); 32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_lib_path (const char *name, const char *value); 32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part1 = 32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part1 yes | 32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's/\([\\"]\)/\\\1/g' \ 32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e 's/^/ "/' -e 's/$/\\n"/' 32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo ";" 32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part2 = 33015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_emit_wrapper_part2 yes | 33035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $SED -e 's/\([\\"]\)/\\\1/g' \ 33045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -e 's/^/ "/' -e 's/$/\\n"/' 33055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo ";" 33065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * MAGIC_EXE = "$magic_exe"; 33095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VARNAME = "$shlibpath_var"; 33105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist "$temp_rpath" 33145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE = ""; 33205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dllsearchpath"; then 33245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_to_host_pathlist "$dllsearchpath:" 33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "PATH"; 33275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = ""; 33325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE = ""; 33335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes; then 33375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 33415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 33425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 33455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 33485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX "--lt-" 33505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 33705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)main (int argc, char *argv[]) 33715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 33725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char **newargz; 33735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int newargc; 33745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *tmp_pathspec; 33755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *actual_cwrapper_path; 33765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *actual_cwrapper_name; 33775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *target_name; 33785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *lt_argv_zero; 33795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) intptr_t rval = 127; 33805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 33825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) program_name = (char *) xstrdup (base_name (argv[0])); 33845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* very simple arg parsing; don't want to rely on getopt */ 33885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc; i++) 33895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strcmp (argv[i], dumpscript_opt) == 0) 33915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 33925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 33935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$host" in 33945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *mingw* | *cygwin* ) 33955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # make stdout use "unix" line endings 33965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) echo " setmode(1,_O_BINARY);" 33975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 33985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 33995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printf ("%s", script_text_part1); 34025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printf ("%s", script_text_part2); 34035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 34045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz = XMALLOC (char *, argc + 1); 34085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = find_executable (argv[0]); 34095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tmp_pathspec == NULL) 34105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Couldn't find %s", argv[0]); 34115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec)); 34135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_path)); 34175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 34185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (actual_cwrapper_path, actual_cwrapper_name); 34215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* wrapper name transforms */ 34235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (actual_cwrapper_name, ".exe"); 34245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_name); 34265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) actual_cwrapper_name = tmp_pathspec; 34275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = 0; 34285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* target_name transforms -- use actual target program name; might have lt- prefix */ 34305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strendzap (target_name, ".exe"); 34325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (target_name); 34345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name = tmp_pathspec; 34355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = 0; 34365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target_name)); 34395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<EOF 34425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[0] = 34435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, (strlen (actual_cwrapper_path) + 34445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (newargz[0], actual_cwrapper_path); 34465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], "$objdir"); 34475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], "/"); 34485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* stop here, and copy so we don't have to do this twice */ 34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = xstrdup (newargz[0]); 34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcat (newargz[0], actual_cwrapper_name); 34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* DO want the lt- prefix here if it exists, so use target_name */ 34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = NULL; 34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mingw*) 34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char* p; 34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p = strchr (newargz[0], '\\')) != NULL) 34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '/'; 34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '/'; 34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 34775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 34795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 34825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (target_name); 34835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_path); 34845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (actual_cwrapper_name); 34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 34905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargc=0; 34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc; i++) 34935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_set_opt_len] == '=') 34975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_set_opt_len + 1; 34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_set (p); 35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 35025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_set (argv[++i]); /* don't copy */ 35045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 35065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_set_opt); 35075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_prepend_opt_len] == '=') 35125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_prepend_opt_len + 1; 35145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_prepend (p); 35155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 35215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_prepend_opt); 35225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][env_append_opt_len] == '=') 35275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p = argv[i] + env_append_opt_len + 1; 35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_append (p); 35305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_opt_process_env_append (argv[++i]); /* don't copy */ 35345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 35365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("%s missing required argument", env_append_opt); 35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) namespace, but it is not one of the ones we know about and 35435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) have already dealt with, above (inluding dump-script), then 35445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) report an error. Otherwise, targets might begin to believe 35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) namespace. The first time any user complains about this, we'll 35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) or a configure.ac-settable value. 35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Unrecognized option in %s namespace: '%s'", 35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ltwrapper_option_prefix, argv[i]); 35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* otherwise ... */ 35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[++newargc] = xstrdup (argv[i]); 35555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newargz[++newargc] = NULL; 35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0; i < newargc; i++) 35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host_os in 35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mingw*) 35685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* execv doesn't actually work on mingw as expected on unix */ 35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rval == -1) 35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* failed to start process */ 35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 127; 35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; 35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execv (lt_argv_zero, newargz); 35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; /* =127, but avoids unused variable warning */ 35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cat <<"EOF" 35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void * 35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xmalloc (size_t num) 35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *p = (void *) malloc (num); 35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!p) 35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Memory exhausted"); 35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return p; 35995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 36025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xstrdup (const char *string) 36035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 36055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string) : NULL; 36065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * 36095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base_name (const char *name) 36105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *base; 36125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Skip over the disk name in MSDOS pathnames. */ 36155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name += 2; 36175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 36185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (base = name; *name; name++) 36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_DIR_SEPARATOR (*name)) 36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base = name + 1; 36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return base; 36235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 36265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)check_executable (const char *path) 36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat st; 36295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path ? (*path ? path : "EMPTY!") : "NULL!")); 36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!path) || (!*path)) 36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((stat (path, &st) >= 0) 36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 36385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 36435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make_executable (const char *path) 36445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int rval = 0; 36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat st; 36475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path ? (*path ? path : "EMPTY!") : "NULL!")); 36505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!path) || (!*path)) 36515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (stat (path, &st) >= 0) 36545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rval; 36585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 36595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Searches for the full path of the wrapper. Returns 36615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newly allocated full path name if found, NULL otherwise 36625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Does not chase symlinks, even on platforms that support them. 36635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 36655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)find_executable (const char *wrapper) 36665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 36675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int has_slash = 0; 36685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p; 36695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p_next; 36705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* static buffer for getcwd */ 36715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char tmp[LT_PATHMAX + 1]; 36725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int tmp_len; 36735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *concat_name; 36745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 36775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((wrapper == NULL) || (*wrapper == '\0')) 36795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 36805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Absolute path? */ 36825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = xstrdup (wrapper); 36865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 36875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 36885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 36895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 36905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 36915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 36935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_DIR_SEPARATOR (wrapper[0])) 36945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 36955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = xstrdup (wrapper); 36965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 36975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 36985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 36995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 37015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 37035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (p = wrapper; *p; p++) 37055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (*p == '/') 37065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_slash = 1; 37085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!has_slash) 37115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* no slashes; search PATH */ 37135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *path = getenv ("PATH"); 37145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (path != NULL) 37155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (p = path; *p; p = p_next) 37175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *q; 37195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t p_len; 37205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (q = p; *q; q++) 37215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IS_PATH_SEPARATOR (*q)) 37225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p_len = q - p; 37245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p_next = (*q == '\0' ? q : q + 1); 37255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (p_len == 0) 37265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* empty path: current directory */ 37285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (getcwd (tmp, LT_PATHMAX) == NULL) 37295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("getcwd failed"); 37305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_len = strlen (tmp); 37315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = 37325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, tmp, tmp_len); 37345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[tmp_len] = '/'; 37355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + tmp_len + 1, wrapper); 37365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 37385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = 37405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, p, p_len); 37425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[p_len] = '/'; 37435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + p_len + 1, wrapper); 37445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 37465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 37475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 37485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* not found in PATH; assume curdir */ 37515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* Relative path | not found in path: prepend cwd */ 37535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (getcwd (tmp, LT_PATHMAX) == NULL) 37545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("getcwd failed"); 37555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_len = strlen (tmp); 37565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memcpy (concat_name, tmp, tmp_len); 37585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) concat_name[tmp_len] = '/'; 37595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (concat_name + tmp_len + 1, wrapper); 37605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (check_executable (concat_name)) 37625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return concat_name; 37635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (concat_name); 37645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 37655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 37665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 37685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chase_symlinks (const char *pathspec) 37695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 37705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_ISLNK 37715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (pathspec); 37725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 37735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char buf[LT_PATHMAX]; 37745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct stat s; 37755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *tmp_pathspec = xstrdup (pathspec); 37765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *p; 37775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int has_symlinks = 0; 37785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (strlen (tmp_pathspec) && !has_symlinks) 37795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec)); 37825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lstat (tmp_pathspec, &s) == 0) 37835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (S_ISLNK (s.st_mode) != 0) 37855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_symlinks = 1; 37875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* search backwards for last DIR_SEPARATOR */ 37915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p--; 37945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 37965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* no more DIR_SEPARATORS left */ 37975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 37985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 37995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *p = '\0'; 38005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 38025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *errstr = strerror (errno); 38045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 38055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (tmp_pathspec); 38085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!has_symlinks) 38105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (pathspec); 38125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_pathspec = realpath (pathspec, buf); 38155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tmp_pathspec == 0) 38165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("Could not follow symlinks for %s", pathspec); 38185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xstrdup (tmp_pathspec); 38205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 38215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 38245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strendzap (char *str, const char *pat) 38255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t len, patlen; 38275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert (str != NULL); 38295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert (pat != NULL); 38305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len = strlen (str); 38325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patlen = strlen (pat); 38335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (patlen <= len) 38355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) str += len - patlen; 38375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (strcmp (str, pat) == 0) 38385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *str = '\0'; 38395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return str; 38415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 38445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_error_core (int exit_status, const char *mode, 38455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *message, va_list ap) 38465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf (stderr, "%s: %s: ", program_name, mode); 38485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf (stderr, message, ap); 38495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf (stderr, ".\n"); 38505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (exit_status >= 0) 38525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit (exit_status); 38535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 38565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_fatal (const char *message, ...) 38575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list ap; 38595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start (ap, message); 38605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end (ap); 38625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 38655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_setenv (const char *name, const char *value) 38665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 38695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 38705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SETENV 38725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* always make a copy, for consistency with !HAVE_SETENV */ 38735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *str = xstrdup (value); 38745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setenv (name, str, 1); 38755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 38765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len = strlen (name) + 1 + strlen (value) + 1; 38775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *str = XMALLOC (char, len); 38785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sprintf (str, "%s=%s", name, value); 38795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (putenv (str) != EXIT_SUCCESS) 38805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (str); 38825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 38845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 38855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 38865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * 38885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_extend_str (const char *orig_value, const char *add, int to_end) 38895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 38905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value; 38915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (orig_value && *orig_value) 38925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int orig_value_len = strlen (orig_value); 38945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int add_len = strlen (add); 38955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = XMALLOC (char, add_len + orig_value_len + 1); 38965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (to_end) 38975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 38985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value, orig_value); 38995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value + orig_value_len, add); 39005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 39025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value, add); 39045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strcpy (new_value + add_len, orig_value); 39055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 39085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = xstrdup (add); 39105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new_value; 39125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int 39155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_split_name_value (const char *arg, char** name, char** value) 39165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *p; 39185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len; 39195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!arg || !*arg) 39205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 39215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) p = strchr (arg, (int)'='); 39235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!p) 39255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; 39265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *value = xstrdup (++p); 39285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) len = strlen (arg) - strlen (*value); 39305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *name = XMALLOC (char, len); 39315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) strncpy (*name, arg, len-1); 39325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*name)[len - 1] = '\0'; 39335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 39355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_set (const char *arg) 39395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, value); 39515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_prepend (const char *arg) 39575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = NULL; 39615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = lt_extend_str (getenv (name), value, 0); 39705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 39715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 39725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_append (const char *arg) 39785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 39795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *name = NULL; 39805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *value = NULL; 39815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = NULL; 39825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (lt_split_name_value (arg, &name, &value) != 0) 39845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 39855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 39895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value = lt_extend_str (getenv (name), value, 1); 39915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 39925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 39935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (name); 39945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (value); 39955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 39965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 39985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_exe_path (const char *name, const char *value) 39995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 40005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 40015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 40025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 40035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (name && *name && value && *value) 40055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 40065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = lt_extend_str (getenv (name), value, 0); 40075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* some systems can't cope with a ':'-terminated path #' */ 40085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int len = strlen (new_value); 40095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 40115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_value[len-1] = '\0'; 40125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 40145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 40155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 40195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_lib_path (const char *name, const char *value) 40205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 40215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (name ? name : "<NULL>"), 40235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (value ? value : "<NULL>"))); 40245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (name && *name && value && *value) 40265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 40275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char *new_value = lt_extend_str (getenv (name), value, 0); 40285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_setenv (name, new_value); 40295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XFREE (new_value); 40305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 40315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF 40355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_cwrapperexe_src 40375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link arg... 40395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_link () 40405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 40415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 40425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 40435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # It is impossible to link a dll without this setting, and 40455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we shouldn't force the makefile maintainer to figure out 40465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # which system we are compiling for in order to pass an extra 40475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # flag for every libtool invocation. 40485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # allow_undefined=no 40495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: Unfortunately, there are problems with the above when trying 40515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to make a dll which has undefined symbols, in which case not 40525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # even a static library is built. For now, we need to specify 40535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -no-undefined on the libtool link line when we can be certain 40545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that all symbols are satisfied, otherwise we get a static library. 40555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=yes 40565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 40575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 40585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=yes 40595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 40605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 40615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_args=$nonopt 40625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_compile="$nonopt $@" 40635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_command=$nonopt 40645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_command=$nonopt 40655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_rpath= 40675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_rpath= 40685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_shlibpath= 40695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_shlibpath= 40705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) convenience= 40715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_convenience= 40725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 40735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_deplibs= 40745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags= 40755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags= 40765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dllsearchpath= 40775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path=`pwd` 40785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir= 40795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_inherited_linker_flags= 40805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoid_version=no 40825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles= 40835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles= 40845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=no 40855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=no 40865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols= 40875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols_regex= 40885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) generated= 40895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs= 40905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ltlibs= 40915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) module=no 40925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no_install=no 40935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs= 40945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_objects= 40955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_files_regex= 40965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=no 40975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preload=no 40985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 40995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prevarg= 41005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release= 41015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath= 41025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xrpath= 41035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) perm_rpath= 41045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_rpath= 41055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thread_safe=no 41065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo= 41075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo_number=no 41085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_libs= 41095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) single_module="${wl}-single_module" 41105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_infer_tag $base_compile 41115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to know -static, to get the right output filenames. 41135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 41145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 41155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 41175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" != yes && \ 41185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "can not build a shared library" 41195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=no 41205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 41215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static | -static | -static-libtool-libs) 41235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static) 41255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "complete static linking is impossible in this configuration" 41275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$link_static_flag"; then 41295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=yes 41325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static) 41345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_flag" && test -n "$link_static_flag"; then 41355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=built 41385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static-libtool-libs) 41405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_flag" && test -n "$link_static_flag"; then 41415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen_self=$dlopen_self_static 41425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefer_static_libs=yes 41445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 41475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 41485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 41495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 41525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See if our shared archives depend on static archives. 41545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_archive_from_new_cmds" && build_old_libs=yes 41555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Go through the arguments, transforming them on the way. 41575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while test "$#" -gt 0; do 41585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$1" 41595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 41605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 41615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qarg=$func_quote_for_eval_unquoted_result 41625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libtool_args " $func_quote_for_eval_result" 41635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the previous option needs an argument, assign it. 41655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$prev"; then 41665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $prev in 41675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output) 41685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " @OUTPUT@" 41695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " @OUTPUT@" 41705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 41725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $prev in 41745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles|dlprefiles) 41755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$preload" = no; then 41765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the symbol object into the linking commands. 41775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " @SYMFILE@" 41785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " @SYMFILE@" 41795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preload=yes 41805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 41825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la | *.lo) ;; # We handle these cases below. 41835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) force) 41845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$dlself" = no; then 41855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=needless 41865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 41875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 41885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 41895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 41905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 41915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self) 41925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 41935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=yes 41945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=yes 41965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 41975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlself=needless 41985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 41995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 42045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 42055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $arg" 42065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 42075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $arg" 42085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expsyms) 42155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols="$arg" 42165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$arg" \ 42175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_error "symbol file \`$arg' does not exist" 42185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expsyms_regex) 42225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_symbols_regex="$arg" 42235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) framework) 42275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 42285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 42295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$deplibs " in 42305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $qarg.ltframework "*) ;; 42315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 42365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix) 42405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inst_prefix_dir="$arg" 42415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 42445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objectlist) 42455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$arg"; then 42465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_arg=$arg 42475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) moreargs= 42485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for fil in `cat "$save_arg"` 42495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 42505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# moreargs="$moreargs $fil" 42515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$fil 42525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled object. 42535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool object. 42555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_unsafe_p "$arg"; then 42565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object= 42575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object= 42585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 42605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$arg" 42615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || 42635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$non_pic_object" || 42645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" = none && 42655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" = none; then 42665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of object for \`$arg'" 42675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 42705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 42715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 42725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_object" != none; then 42745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 42755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object="$xdir$pic_object" 42765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 42785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $pic_object" 42805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 42825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 42835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If libtool objects are unsupported, then we need to preload. 42845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 42855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # CHECK ME: I think I busted this. -Ossama 42895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 42905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preload the old-style object. 42915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $pic_object" 42925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 42935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A PIC object. 42965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 42975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$pic_object" 42985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 42995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 43005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Non-PIC object. 43015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$non_pic_object" != none; then 43025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 43035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$xdir$non_pic_object" 43045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 43055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard non-PIC object 43065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || test "$pic_object" = none ; then 43085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$non_pic_object" 43095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the PIC object exists, use it instead. 43125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $xdir was prepended to $pic_object above. 43135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$pic_object" 43145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only an error if not doing a dry-run. 43185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_dry_run; then 43195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 43205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 43215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 43225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 43235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$arg" 43245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object=$xdir$objdir/$func_lo2o_result 43255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object=$xdir$func_lo2o_result 43265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 43275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 43285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$arg' is not a valid libtool object" 43305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 43335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "link input file \`$arg' does not exist" 43355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$save_arg 43375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_regex) 43415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) precious_files_regex="$arg" 43425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release) 43465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) release="-$arg" 43475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rpath | xrpath) 43515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 43525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 43535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 43545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 43555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only absolute run-paths are allowed" 43565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = rpath; then 43595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$rpath " in 43605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 43615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rpath="$rpath $arg" ;; 43625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 43645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 43655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 43665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $arg" ;; 43675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 43685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 43695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shrext) 43735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shrext_cmds="$arg" 43745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak) 43785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_libs="$weak_libs $arg" 43795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xcclinker) 43835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $qarg" 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) xcompiler) 43915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $qarg" 43925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 43935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $qarg" 43945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $qarg" 43955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 43965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 43975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xlinker) 43985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $qarg" 43995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $wl$qarg" 44005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 44015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $wl$qarg" 44025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $wl$qarg" 44035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 44065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval "$prev=\"\$arg\"" 44075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 44085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 44115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # test -n "$prev" 44125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prevarg="$arg" 44145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 44165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -all-static) 44175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$link_static_flag"; then 44185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # See comment for -static flag below, for more details. 44195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $link_static_flag" 44205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $link_static_flag" 44215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -allow-undefined) 44265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: remove this flag sometime in the future. 44275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -avoid-version) 44315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoid_version=yes 44325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlopen) 44365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlfiles 44375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -dlpreopen) 44415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 44425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-dynamic) 44465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) export_dynamic=yes 44475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -export-symbols | -export-symbols-regex) 44515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "more than one -exported-symbols argument is not allowed" 44535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$arg" = "X-export-symbols"; then 44555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=expsyms 44565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 44575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=expsyms_regex 44585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -framework) 44635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=framework 44645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -inst-prefix-dir) 44685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=inst_prefix 44695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so, if we see these flags be careful not to treat them like -L 44745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L[A-Z][A-Z]*:*) 44755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $with_gcc/$host in 44765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) no/*-*-irix* | /*-*-irix*) 44775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 44785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 44795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 44815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 44825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 44835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 44855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$arg" 44865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 44875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dir"; then 44885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$#" -gt 0; then 44895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "require no space between \`-L' and \`$1'" 44905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 44915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "need path for \`-L' option" 44925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 44945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 44955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 44965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 44975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 44985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 44995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$absdir" && \ 45005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot determine absolute directory name of \`$dir'" 45015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$absdir" 45025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$deplibs " in 45055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" -L$dir "*) ;; 45065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 45075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs -L$dir" 45085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path="$lib_search_path $dir" 45095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 45155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$dir:"*) ;; 45165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$dir;; 45175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$dir";; 45185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$dllsearchpath: in 45205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$testbindir:"*) ;; 45215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::) dllsearchpath=$testbindir;; 45225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) dllsearchpath="$dllsearchpath:$testbindir";; 45235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 45305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # These systems don't actually have a C or math library (as such) 45345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-os2*) 45375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # These systems don't actually have a C library (as such) 45385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not include libc due to us having libc/libc_r. 45425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-rhapsody* | *-*-darwin1.[012]) 45455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Rhapsody C and math libraries are in the System framework 45465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs System.ltframework" 45475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sco3.2v5* | *-*-sco5v6*) 45505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Causes problems with __ctype 45515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Compiler inserts libc in the correct place for threads to work 45555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$arg" = "X-lc" && continue 45565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "X$arg" = "X-lc_r"; then 45595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 45605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not include libc_r directly, use -pthread flag. 45625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 45665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 45675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -module) 45715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) module=yes 45725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # classes, name mangling, and exception handling. 45775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Darwin uses the -arch flag to determine output architecture. 45785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -model|-arch|-isysroot) 45795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 45805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 45815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 45825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcompiler 45835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 45885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 45895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 45905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 45915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $arg "*) ;; 45925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 45945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 45955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 45965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -multi_module) 45985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) single_module="${wl}-multi_module" 45995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-fast-install) 46035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fast_install=no 46045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-install) 46085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 46095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The PATH hackery in wrapper scripts is required on Windows 46115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and Darwin in order for the loader to find any dlls it needs. 46125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-no-install' is ignored for $host" 46135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "assuming \`-no-fast-install' instead" 46145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fast_install=no 46155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) no_install=yes ;; 46175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -no-undefined) 46225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allow_undefined=no 46235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -objectlist) 46275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=objectlist 46285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -o) prev=output ;; 46325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -precious-files-regex) 46345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=precious_regex 46355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -release) 46395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=release 46405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -rpath) 46445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=rpath 46455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R) 46495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xrpath 46505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) 46545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-R' '' "$arg" 46555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 46565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 46575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 46585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) ;; 46595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 46605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only absolute run-paths are allowed" 46615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 46645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 46655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $dir" ;; 46665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 46675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shared) 46715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The effects of -shared are defined in a previous loop. 46725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -shrext) 46765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=shrext 46775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -static | -static-libtool-libs) 46815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The effects of -static are defined in a previous loop. 46825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We used to do the same as -all-static on platforms that 46835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # didn't have a PIC flag, but the assumption that the effects 46845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # would be equivalent was wrong. It would break on at least 46855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Digital Unix and AIX. 46865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -thread-safe) 46905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) thread_safe=yes 46915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-info) 46955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=vinfo 46965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 46975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 46985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -version-number) 47005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=vinfo 47015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vinfo_number=yes 47025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -weak) 47065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=weak 47075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wc,*) 47115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wc,' '' "$arg" 47125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 47135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg= 47145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 47155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for flag in $args; do 47165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$flag" 47185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$arg $wl$func_quote_for_eval_result" 47195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $func_quote_for_eval_result" 47205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 47215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$arg" 47235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$func_stripname_result 47245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Wl,*) 47275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-Wl,' '' "$arg" 47285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args=$func_stripname_result 47295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg= 47305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=',' 47315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for flag in $args; do 47325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$flag" 47345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$arg $wl$func_quote_for_eval_result" 47355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags $func_quote_for_eval_result" 47375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 47385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 47395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname ' ' '' "$arg" 47405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg=$func_stripname_result 47415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xcompiler) 47445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcompiler 47455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -Xlinker) 47495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xlinker 47505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -XCClinker) 47545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=xcclinker 47555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -msg_* for osf cc 47595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -msg_*) 47605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -r[0-9][0-9]* specifies the processor on the SGI compiler 47665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # +DA*, +DD* enable 64-bit mode on the HP compiler 47685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -q* pass through compiler args for the IBM compiler 47695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -m*, -t[45]*, -txscale* pass through architecture-specific 47705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiler args for GCC 47715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -F/path gives path to uninstalled frameworks, gcc on darwin 47725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # @file GCC response files 47745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 47795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 47805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $arg" 47815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 47825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some other compiler flag. 47855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -* | +*) 47865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 47875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 47885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$objext) 47915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard object. 47925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs="$objs $arg" 47935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 47945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 47965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled object. 47975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool object. 47995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_unsafe_p "$arg"; then 48005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object= 48015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object= 48025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 48045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$arg" 48055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || 48075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$non_pic_object" || 48085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" = none && 48095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" = none; then 48105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of object for \`$arg'" 48115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 48145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 48155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 48165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pic_object" != none; then 48185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 48195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object="$xdir$pic_object" 48205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 48225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $pic_object" 48245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 48265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If libtool objects are unsupported, then we need to preload. 48285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev=dlprefiles 48295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # CHECK ME: I think I busted this. -Ossama 48335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlprefiles; then 48345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Preload the old-style object. 48355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $pic_object" 48365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A PIC object. 48405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 48415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$pic_object" 48425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Non-PIC object. 48455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$non_pic_object" != none; then 48465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prepend the subdirectory the object is found in. 48475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$xdir$non_pic_object" 48485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A standard non-PIC object 48505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$pic_object" || test "$pic_object" = none ; then 48525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$non_pic_object" 48535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the PIC object exists, use it instead. 48565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $xdir was prepended to $pic_object above. 48575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object="$pic_object" 48585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only an error if not doing a dry-run. 48625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_dry_run; then 48635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract subdirectory from the argument. 48645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$arg" "/" "" 48655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xdir="$func_dirname_result" 48665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lo2o "$arg" 48685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pic_object=$xdir$objdir/$func_lo2o_result 48695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) non_pic_object=$xdir$func_lo2o_result 48705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append libobjs " $pic_object" 48715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append non_pic_objects " $non_pic_object" 48725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$arg' is not a valid libtool object" 48745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 48775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 48795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # An archive. 48805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 48815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_deplibs="$old_deplibs $arg" 48825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 48835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 48845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 48865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # A libtool-controlled library. 48875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$prev" = dlfiles; then 48895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlopen. 48905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$dlfiles $arg" 48915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$prev" = dlprefiles; then 48935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The library was specified with -dlpreopen. 48945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $arg" 48955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prev= 48965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 48975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplibs $arg" 48985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 48995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 49005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some other compiler argument. 49035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 49045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Unknown arguments in both finalize_command and compile_command need 49055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to be aesthetically quoted because they are evaled later. 49065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_quote_for_eval "$arg" 49075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arg="$func_quote_for_eval_result" 49085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # arg 49105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now actually substitute the argument into the commands. 49125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$arg"; then 49135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 49145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 49155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # argument parsing loop 49175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$prev" && \ 49195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "the \`$prevarg' option requires an argument" 49205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval arg=\"$export_dynamic_flag_spec\" 49235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append compile_command " $arg" 49245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_append finalize_command " $arg" 49255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs= 49285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # calculate the name of the file, without its directory 49295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$output" 49305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) outputname="$func_basename_result" 49315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs_save="$libobjs" 49325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var"; then 49345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # get the directories listed in $shlibpath_var 49355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 49375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shlib_search_path= 49385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$output" "/" "" 49435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output_objdir="$func_dirname_result$objdir" 49445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create the object directory. 49455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mkdir_p "$output_objdir" 49465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Determine the type of output 49485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $output in 49495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "") 49505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an output file" 49515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 49525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) linkmode=oldlib ;; 49535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo | *.$objext) linkmode=obj ;; 49545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) linkmode=lib ;; 49555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) linkmode=prog ;; # Anything else should be a program. 49565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specialdeplibs= 49595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs= 49615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find all interdependent deplibs by searching for libraries 49625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that are linked more than once (e.g. -la -lb -la) 49635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $deplibs; do 49645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 49655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$libs " in 49665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$libs $deplib" 49705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 49715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 49735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$predeps $libs $compiler_lib_search_path $postdeps" 49745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Compute libraries that are listed more than once in $predeps 49765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $postdeps and mark them as special (i.e., whose duplicates are 49775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # not to be eliminated). 49785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps= 49795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_compiler_generated_deps; then 49805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for pre_post_dep in $predeps $postdeps; do 49815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$pre_post_deps " in 49825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 49845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps="$pre_post_deps $pre_post_dep" 49855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 49865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pre_post_deps= 49885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 49895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 49915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs= 49925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path= 49935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=no # whether we're linking any uninstalled libtool libraries 49945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs= # not-installed libtool libraries 49955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path= # paths that contain not-installed libtool libraries 49965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 49985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 49995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passes="conv dlpreopen link" 50005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $dlfiles $dlprefiles; do 50015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 50025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) ;; 50035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 50045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 50055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 50105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs= 50115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs= 50125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alldeplibs=no 50135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 50145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 50155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passes="conv scan dlopen dlpreopen link" 50165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) passes="conv" 50185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for pass in $passes; do 50225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # The preopen pass in lib mode reverses $deplibs; put it back here 50235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # so that -L comes before libs that need it for instance... 50245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link"; then 50255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## FIXME: Find the place where the list is rebuilt in the wrong 50265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ## order, and fix it there properly 50275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs= 50285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $deplibs; do 50295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_deplibs="$deplib $tmp_deplibs" 50305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$tmp_deplibs" 50325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link" || 50355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode,$pass" = "prog,scan"; then 50365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$deplibs" 50375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 50385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 50405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $pass in 50415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen) libs="$dlfiles" ;; 50425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreopen) libs="$dlprefiles" ;; 50435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 50445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,dlpreopen"; then 50475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect and forward deplibs of preopened libtool libs 50485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 50495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Ignore non-libtool-libs 50505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs= 50515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 50525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) func_source "$lib" ;; 50535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect preopened libtool deplibs, except any this library 50565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # has declared as weak libs 50575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 50585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $weak_libs " in 50605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib_base "*) ;; 50615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$deplibs $deplib" ;; 50625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 50655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libs="$dlprefiles" 50665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlopen; then 50685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Collect dlpreopened libraries 50695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_deplibs="$deplibs" 50705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs= 50715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $libs; do 50745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib= 50755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 50765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 50775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 50795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 50805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 50815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 50825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags $deplib" 50835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib ; then 50845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 50855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 50865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 50885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 50915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 50925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -l*) 50935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" != lib && test "$linkmode" != prog; then 50945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-l' is ignored for archives/objects" 50955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 50965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 50975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-l' '' "$deplib" 50985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 50995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 51005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 51015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 51035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for searchdir in $searchdirs; do 51055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for search_ext in .la $std_shrext .so .a; do 51065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Search the libtool library 51075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib="$searchdir/lib${name}${search_ext}" 51085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$lib"; then 51095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$search_ext" = ".la"; then 51105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=yes 51115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 51135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 2 51155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$found" != yes; then 51195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # deplib doesn't seem to be a libtool library 51205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else # deplib is a libtool library 51295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to do some special things here, and not later. 51315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps " in 51335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) 51345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$lib"; then 51355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 51365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 51375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 51385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for l in $old_library $library_names; do 51395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ll="$l" 51405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 51415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$ll" = "X$old_library" ; then # only static version available 51425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) found=no 51435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$lib" "" "." 51445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ladir="$func_dirname_result" 51455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib=$ladir/$old_library 51465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) ;; 51585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 51595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # -l 51625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.ltframework) 51635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 51645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib ; then 51695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$new_inherited_linker_flags " in 51705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 51715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 51735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 51785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 51795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 51805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pass" = conv && continue 51825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 51835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$deplib" 51845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 51855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 51865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 51875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 51885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 51905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = scan; then 51925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 51935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 51945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 51955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 51965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 51975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-L' '' "$deplib" 51985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 51995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 52015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-L' is ignored for archives/objects" 52025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # linkmode 52045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # -L 52065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) 52075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = link; then 52085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '-R' '' "$deplib" 52095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$func_stripname_result 52105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure the xrpath contains only unique directories. 52115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$xrpath " in 52125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 52135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $dir" ;; 52145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) lib="$deplib" ;; 52205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.$libext) 52215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 52225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 52265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 52275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Linking convenience modules into shared libraries is allowed, 52285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but linking other static libraries is non-portable. 52295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $dlpreconveniencelibs " in 52305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 52315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 52325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=no 52335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplibs_check_method in 52345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern*) 52355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $deplibs_check_method; shift 52365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) | $EGREP "$match_pattern_regex" > /dev/null; then 52395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=yes 52405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pass_all) 52435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) valid_a_lib=yes 52445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$valid_a_lib" != yes; then 52475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 52485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 52505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 52515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have" 52525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** that it is just a static archive that I should not use here." 52545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 52565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the" 52575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** static library $deplib is not portable!" 52585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 52625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prog) 52655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != link; then 52665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 52695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 52705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # linkmode 52745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; # *.$libext 52755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo | *.$objext) 52765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 52775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 52785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" = prog; then 52795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there is no dlopen support or we're linking statically, 52815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we need to preload. 52825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $deplib" 52835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$deplib $compile_deplibs" 52845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$deplib $finalize_deplibs" 52855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $deplib" 52875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 52895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) %DEPLIBS%) 52925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alldeplibs=yes 52935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 52945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 52955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac # case $deplib 52965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$found" = yes || test -f "$lib"; then : 52985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 52995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 53005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Check to see that this really is a libtool archive. 53035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_lalib_unsafe_p "$lib" \ 53045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) || func_fatal_error "\`$lib' is not a valid libtool archive" 53055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$lib" "" "." 53075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ladir="$func_dirname_result" 53085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlname= 53105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopen= 53115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreopen= 53125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir= 53135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) library_names= 53145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_library= 53155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) inherited_linker_flags= 53165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the library was installed with an old release of libtool, 53175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # it will not redefine variables installed, or shouldnotlink 53185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installed=yes 53195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shouldnotlink=no 53205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) avoidtemprpath= 53215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .la file 53245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source "$lib" 53255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Convert "-framework foo" to "foo.ltframework" 53275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inherited_linker_flags"; then 53285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_inherited_linker_flags " in 53315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $tmp_inherited_linker_flag "*) ;; 53325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 53345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "lib,link" || 53385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$linkmode,$pass" = "prog,scan" || 53395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = conv; then 53455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only check for convenience libraries 53465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" 53475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 53485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$old_library"; then 53495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of link library for \`$lib'" 53505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # It is a libtool convenience library, so add in its objects. 53525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) convenience="$convenience $ladir/$objdir/$old_library" 53535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) old_convenience="$old_convenience $ladir/$objdir/$old_library" 53545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" != prog && test "$linkmode" != lib; then 53555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a convenience library" 53565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 53585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 53595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 53605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 53615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 53625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 53645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 53665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 53685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = conv 53695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Get the name of the library we link against. 53725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib= 53735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for l in $old_library $library_names; do 53745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib="$l" 53755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 53765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$linklib"; then 53775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot find name of link library for \`$lib'" 53785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlopen. 53815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlopen; then 53825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 53835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlname" || 53865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$dlopen_support" != yes || 53875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" = no; then 53885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If there is no dlname, no dlopen support or we're linking 53895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # statically, we need to preload. We also need to preload any 53905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # dependent libraries so libltdl's deplib preloader doesn't 53915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # bomb out in the load deplibs phase. 53925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$dlprefiles $lib $dependency_libs" 53935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 53945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $lib" 53955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 53965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 53975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = dlopen 53985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 54005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $ladir in 54015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 54025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 54035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) abs_ladir=`cd "$ladir" && pwd` 54045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$abs_ladir"; then 54055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot determine absolute directory name of \`$ladir'" 54065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "passing it literally to the linker, although it might fail" 54075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) abs_ladir="$ladir" 54085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 54105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 54115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 54125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) laname="$func_basename_result" 54135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Find the relevant object directory and library name. 54155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$installed" = Xyes; then 54165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "library \`$lib' was moved." 54185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir" 54195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir" 54205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libdir="$abs_ladir" 54215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$libdir" 54235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$libdir" 54245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir" 54295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir" 54305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove this search path later 54315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path="$notinst_path $abs_ladir" 54325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$ladir/$objdir" 54345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$abs_ladir/$objdir" 54355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remove this search path later 54365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_path="$notinst_path $abs_ladir" 54375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $installed = yes 54395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.la' "$laname" 54405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 54415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This library was specified with -dlpreopen. 54435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen; then 54445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir" && test "$linkmode" = prog; then 54455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Prefer using a static library (so that no silly _DYNAMIC symbols 54485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # are required to link). 54495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_library"; then 54505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$old_library" 54515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Keep a list of preopened convenience libraries to check 54525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that they are being used correctly in the link pass. 54535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 54545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Otherwise, use the dlname, so that lt_dlopen finds it. 54565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$dlname"; then 54575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$dlname" 54585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $dir/$linklib" 54605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $pass = dlpreopen 54625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$libdir"; then 54645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link the convenience library 54655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 54665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$dir/$old_library $deplibs" 54675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode,$pass" = "prog,link"; then 54685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$dir/$old_library $compile_deplibs" 54695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$dir/$old_library $finalize_deplibs" 54705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" # used for prog,scan pass 54725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 54745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog && test "$pass" != link; then 54785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $ladir" 54795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$lib $deplibs" 54805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linkalldeplibs=no 54825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$link_all_deplibs" != no || test -z "$library_names" || 54835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_libtool_libs" = no; then 54845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linkalldeplibs=yes 54855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 54865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 54885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 54895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 54905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) func_stripname '-L' '' "$deplib" 54915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $func_stripname_result" 54925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 54935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 54945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Need to link against all dependency_libs? 54955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkalldeplibs" = yes; then 54965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 54975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 54985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Need to hardcode shared library paths 54995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # or/and link against static libraries 55005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 55015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 55035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 55045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 55055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 55085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for deplib 55095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 55105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $linkmode = prog... 55115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" = "prog,link"; then 55135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names" && 55145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { { test "$prefer_static_libs" = no || 55155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$prefer_static_libs,$installed" = "built,yes"; } || 55165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$old_library"; }; then 55175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need to hardcode the library path 55185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure the rpath contains only unique directories. 55205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$temp_rpath:" in 55215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *"$absdir:"*) ;; 55225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) temp_rpath="$temp_rpath$absdir:" ;; 55235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Hardcode the library path. 55275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip directories that are in the system default run-time 55285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # search path. 55295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 55305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 55315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_rpath " in 55335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 55345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_rpath="$compile_rpath $absdir" 55355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 55395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 55405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 55425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 55435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" 55445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # $linkmode,$pass = prog,link... 55485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$alldeplibs" = yes && 55505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$deplibs_check_method" = pass_all || 55515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$build_libtool_libs" = yes && 55525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$library_names"; }; }; then 55535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We only need to search for static libraries 55545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 55555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_static=no # Whether the deplib will be linked statically 55595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) use_static_libs=$prefer_static_libs 55605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$use_static_libs" = built && test "$installed" = yes; then 55615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) use_static_libs=no 55625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names" && 55645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$use_static_libs" = no || test -z "$old_library"; }; then 55655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 55665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | *mingw* | *cegcc*) 55675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # No point in relinking DLLs because paths are not encoded 55685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs="$notinst_deplibs $lib" 55695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=no 55705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 55725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = no; then 55735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notinst_deplibs="$notinst_deplibs $lib" 55745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) need_relink=yes 55755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 55775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 55785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This is a shared library 55795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Warn about portability, can't link against -module's on some 55815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # systems (darwin). Don't bleat about dlopened modules though! 55825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopenmodule="" 55835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dlpremoduletest in $dlprefiles; do 55845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dlpremoduletest" = "X$lib"; then 55855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlopenmodule="$dlpremoduletest" 55865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break 55875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 55895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 55915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 55925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the executable $output against the loadable module" 55935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 55945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** $linklib is not portable!" 55975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 55985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib && 55995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_into_libs" = yes; then 56005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Hardcode the library path. 56015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Skip directories that are in the system default run-time 56025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # search path. 56035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 56045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 56055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 56065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$compile_rpath " in 56075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $absdir "*) ;; 56085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_rpath="$compile_rpath $absdir" 56095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $sys_lib_dlsearch_path " in 56135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 56145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 56155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$finalize_rpath " in 56165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $libdir "*) ;; 56175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_rpath="$finalize_rpath $libdir" 56185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_archive_from_expsyms_cmds"; then 56245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # figure out the soname 56255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $library_names 56265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 56275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) realname="$1" 56285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 56295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=`eval "\\$ECHO \"$libname_spec\""` 56305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # use dlname if we got it. it's perfectly good, no? 56315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlname"; then 56325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$dlname" 56335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$soname_spec"; then 56345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # bleh windows 56355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 56365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin* | mingw* | *cegcc*) 56375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $current - $age 56385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) major=$func_arith_result 56395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) versuffix="-$major" 56405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 56415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 56425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval soname=\"$soname_spec\" 56435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$realname" 56455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make a new name for the extract_expsyms_cmds to use 56485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soroot="$soname" 56495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$soroot" 56505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) soname="$func_basename_result" 56515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.dll' "$soname" 56525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib=libimp-$func_stripname_result.a 56535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If the library has no export list, then create one now 56555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$soname-def"; then : 56565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "extracting exported symbol list from \`$soname'" 56585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Create $newlib 56625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$output_objdir/$newlib"; then :; else 56635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_verbose "generating import library for \`$soname'" 56645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # make sure the library variables are pointing to the new library 56675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir=$output_objdir 56685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linklib=$newlib 56695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # test -n "$old_archive_from_expsyms_cmds" 56705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$mode" != relink; then 56725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath= 56735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir= 56745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add= 56755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=yes 56765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $hardcode_action in 56775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) immediate | unsupported) 56785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = no; then 56795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$linklib" 56805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 56815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-unixware7*) add_dir="-L$dir" ;; 56855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin* ) 56865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # if the lib is a (non-dlopened) module then we can not 56875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # link against it, someone is ignoring the earlier warnings 56885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if /usr/bin/file -L $add 2> /dev/null | 56895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $GREP ": [^:]* bundle" >/dev/null ; then 56905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dlopenmodule" != "X$lib"; then 56915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$old_library" ; then 56935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 56945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** And there doesn't seem to be a static archive available" 56955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** The link will probably fail, sorry" 56965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 56975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$old_library" 56985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 56995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$old_library"; then 57005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$old_library" 57015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = no; then 57055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 57065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-sunos*) add_shlibpath="$dir" ;; 57075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$dir" 57095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = no; then 57115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath="$dir" 57125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=no 57155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink) 57185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = yes && 57195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_direct_absolute" = no; then 57205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$dir/$linklib" 57215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = yes; then 57225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$dir" 57235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try looking first in the location we're being installed to. 57245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 57255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 57265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]*) 57275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="$add_dir -L$inst_prefix_dir$libdir" 57285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = yes; then 57335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath="$dir" 57345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_linked=no 57375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 57395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) lib_linked=no ;; 57405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$lib_linked" != yes; then 57435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_configuration "unsupported hardcode properties" 57445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$add_shlibpath"; then 57475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$compile_shlibpath: in 57485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$add_shlibpath:"*) ;; 57495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 57535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && compile_deplibs="$add $compile_deplibs" 57555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && deplibs="$add_dir $deplibs" 57575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && deplibs="$add $deplibs" 57585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" != yes && 57595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_minus_L" != yes && 57605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_shlibpath_var" = yes; then 57615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$finalize_shlibpath: in 57625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$libdir:"*) ;; 57635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$mode" = relink; then 57705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_shlibpath= 57715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir= 57725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add= 57735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Finalize command for both is simple: just hardcode it. 57745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" = yes && 57755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$hardcode_direct_absolute" = no; then 57765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$libdir/$linklib" 57775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_minus_L" = yes; then 57785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$libdir" 57795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_shlibpath_var" = yes; then 57815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case :$finalize_shlibpath: in 57825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *":$libdir:"*) ;; 57835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 57855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 57865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$hardcode_automatic" = yes; then 57875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir" && 57885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$inst_prefix_dir$libdir/$linklib" ; then 57895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$inst_prefix_dir$libdir/$linklib" 57905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="$libdir/$linklib" 57925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 57935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 57945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We cannot seem to hardcode it, guess we'll fake it. 57955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="-L$libdir" 57965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try looking first in the location we're being installed to. 57975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$inst_prefix_dir"; then 57985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 57995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]*) 58005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add_dir="$add_dir -L$inst_prefix_dir$libdir" 58015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 58025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 58035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) add="-l$name" 58055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 58085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add_dir" && deplibs="$add_dir $deplibs" 58125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$add" && deplibs="$add $deplibs" 58135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$linkmode" = prog; then 58165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Here we assume that one of hardcode_direct or hardcode_minus_L 58175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is not unsupported. This is valid on all known static and 58185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # shared platforms. 58195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$hardcode_direct" != unsupported; then 58205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && linklib="$old_library" 58215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$dir/$linklib $compile_deplibs" 58225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$dir/$linklib $finalize_deplibs" 58235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="-l$name -L$dir $compile_deplibs" 58255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$build_libtool_libs" = yes; then 58285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Not a shared library 58295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$deplibs_check_method" != pass_all; then 58305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We're trying link a shared library against a static one 58315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # but the system doesn't support it. 58325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Just print a warning and add the library to dependency_libs so 58345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that the program can be linked against the static library. 58355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 58365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: This system can not link to static lib archive $lib." 58375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** I have the capability to make that library automatically link in when" 58385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** you link to this library. But I can only do this if you have a" 58395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** shared version of the library, which you do not appear to have." 58405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$module" = yes; then 58415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** But as you try to build a module library, libtool will still create " 58425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** a static module, that should work as long as the dlopening application" 58435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$global_symbol_pipe"; then 58455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 58465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** However, this would only work if libtool was able to extract symbol" 58475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** not find such a program. So, this module is probably useless." 58495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_old_libs" = no; then 58525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=module 58535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 58545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 58565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 58595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$dir/$old_library $deplibs" 58605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) link_static=yes 58615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # link shared/static library? 58635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = lib; then 58655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dependency_libs" && 58665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test "$hardcode_into_libs" != yes || 58675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$build_old_libs" = yes || 58685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$link_static" = yes; }; then 58695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Extract -R from dependency_libs 58705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_deplibs= 58715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for libdir in $dependency_libs; do 58725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $libdir in 58735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) func_stripname '-R' '' "$libdir" 58745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) temp_xrpath=$func_stripname_result 58755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $xrpath " in 58765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $temp_xrpath "*) ;; 58775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) xrpath="$xrpath $temp_xrpath";; 58785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac;; 58795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) temp_deplibs="$temp_deplibs $libdir";; 58805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 58815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 58825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$temp_deplibs" 58835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path="$newlib_search_path $absdir" 58865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link against this library 58875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # ... and its dependency_libs 58895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 58905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 58915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$deplib $newdependency_libs" 58925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $opt_duplicate_deps ; then 58935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$tmp_libs " in 58945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 58965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 58975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $deplib" 58985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 58995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$link_all_deplibs" != no; then 59015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the search paths of all dependency libraries 59025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $dependency_libs; do 59035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 59045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) path="$deplib" ;; 59055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 59065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$deplib" "" "." 59075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 59085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We need an absolute path. 59095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $dir in 59105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 59125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir=`cd "$dir" && pwd` 59135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$absdir"; then 59145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "cannot determine absolute directory name of \`$dir'" 59155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) absdir="$dir" 59165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if $GREP "^installed=no" $deplib > /dev/null; then 59205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host in 59215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *-*-darwin*) 59225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl= 59235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$deplibrary_names" ; then 59255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for tmp in $deplibrary_names ; do 59265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl=$tmp 59275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -f "$absdir/$objdir/$depdepl" ; then 59295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depdepl="$absdir/$objdir/$depdepl" 59305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$darwin_install_name"; then 59325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path= 59375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 59415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path="-L$absdir/$objdir" 59425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 59475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$deplib' is not a valid libtool archive" 59485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$absdir" != "$libdir" && \ 59495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`$deplib' seems to be moved" 59505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path="-L$absdir" 59525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 59545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs " in 59565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $path "*) ;; 59575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) deplibs="$path $deplibs" ;; 59585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # link_all_deplibs != no 59615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi # linkmode = lib 59625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for deplib in $libs 59635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = link; then 59645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = "prog"; then 59655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$newdependency_libs" 59725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" = dlpreopen; then 59735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Link the dlpreopened libraries before other libraries 59745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $save_deplibs; do 59755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deplibs="$deplib $deplibs" 59765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != dlopen; then 59795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$pass" != conv; then 59805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure lib_search_path contains only unique directories. 59815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib_search_path= 59825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $newlib_search_path; do 59835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$lib_search_path " in 59845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dir "*) ;; 59855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) lib_search_path="$lib_search_path $dir" ;; 59865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 59875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 59885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newlib_search_path= 59895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode,$pass" != "prog,link"; then 59925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vars="deplibs" 59935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 59945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vars="compile_deplibs finalize_deplibs" 59955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 59965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for var in $vars dependency_libs; do 59975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add libraries to $var in reverse order 59985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval tmp_libs=\"\$$var\" 59995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new_libs= 60005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $tmp_libs; do 60015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: Pedantically, this is the right thing to do, so 60025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # that some nasty dependency loop isn't accidentally 60035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # broken: 60045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #new_libs="$deplib $new_libs" 60055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Pragmatically, this seems to cause very few problems in 60065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # practice: 60075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 60085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) new_libs="$deplib $new_libs" ;; 60095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -R*) ;; 60105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 60115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # And here is the reason: when a library appears more 60125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than once as an explicit dependence of a library, or 60135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # is implicitly linked in more than once by the 60145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # compiler, it is considered special, and multiple 60155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # occurrences thereof are not removed. Compare this 60165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # with having the same library being listed as a 60175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # dependency of multiple other libraries: in this case, 60185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # we know (pedantically, we assume) the library does not 60195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # need to be listed more than once, so we keep only the 60205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # last copy. This is not always right, but it is rare 60215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # enough that we require users that really mean to play 60225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # such unportable linking tricks to link the library 60235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # using -Wl,-lname, so that libtool does not consider it 60245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # for duplicate removal. 60255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $specialdeplibs " in 60265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) new_libs="$deplib $new_libs" ;; 60275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 60285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $new_libs " in 60295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 60305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) new_libs="$deplib $new_libs" ;; 60315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 60385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for deplib in $new_libs; do 60395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $deplib in 60405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -L*) 60415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $tmp_libs " in 60425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $deplib "*) ;; 60435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) tmp_libs="$tmp_libs $deplib" ;; 60445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) tmp_libs="$tmp_libs $deplib" ;; 60475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval $var=\"$tmp_libs\" 60505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for var 60515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Last step: remove runtime libs from dependency_libs 60535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # (they stay in deplibs) 60545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs= 60555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for i in $dependency_libs ; do 60565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $predeps $postdeps $compiler_lib_search_path " in 60575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $i "*) 60585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i="" 60595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 60605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$i" ; then 60625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tmp_libs="$tmp_libs $i" 60635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 60655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs=$tmp_libs 60665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done # for pass 60675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog; then 60685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 60695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$linkmode" = prog || test "$linkmode" = lib; then 60715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 60725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $linkmode in 60755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlib) 60765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen' is ignored for archives" 60785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 60795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $deplibs" in 60815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *\ -l* | *\ -L*) 60825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-l' and \`-L' are ignored for archives" ;; 60835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 60845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$rpath" && \ 60865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-rpath' is ignored for archives" 60875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$xrpath" && \ 60895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-R' is ignored for archives" 60905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 60925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info/-version-number' is ignored for archives" 60935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 60955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for archives" 60965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$export_symbols$export_symbols_regex" && \ 60985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-export-symbols' is ignored for archives" 60995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Now set the variables for building old libraries. 61015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=no 61025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output" 61035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objs="$objs$old_deplibs" 61045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib) 61075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Make sure we only generate libraries of the form `libNAME.la'. 61085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $outputname in 61095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lib*) 61105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname 'lib' '.la' "$outputname" 61115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 61125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shared_ext=\"$shrext_cmds\" 61135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libname=\"$libname_spec\" 61145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 61165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$module" = no && \ 61175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "libtool library \`$output' must begin with \`lib'" 61185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$need_lib_prefix" != no; then 61205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add the "lib" prefix for modules if required 61215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.la' "$outputname" 61225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name=$func_stripname_result 61235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval shared_ext=\"$shrext_cmds\" 61245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libname=\"$libname_spec\" 61255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.la' "$outputname" 61275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libname=$func_stripname_result 61285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 61305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 61315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$objs"; then 61335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$deplibs_check_method" != pass_all; then 61345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO 61375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO "*** objects $objs is not portable!" 61395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libobjs="$libobjs $objs" 61405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$dlself" != no && \ 61445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-dlopen self' is ignored for libtool libraries" 61455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $rpath 61475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 61485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$#" -gt 1 && \ 61495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "ignoring multiple \`-rpath's for a libtool library" 61505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_libdir="$1" 61525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs= 61545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$rpath"; then 61555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$build_libtool_libs" = yes; then 61565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Building a libtool convenience library. 61575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Some compilers have problems with a `.al' extension so 61585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # convenience libraries should have the same extension an 61595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # archive normally would. 61605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldlibs="$output_objdir/$libname.$libext $oldlibs" 61615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_libtool_libs=convenience 61625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) build_old_libs=yes 61635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 61645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$vinfo" && \ 61665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$release" && \ 61695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_warning "\`-release' is ignored for convenience libraries" 61705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 61715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Parse the version information argument. 61735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_ifs="$IFS"; IFS=':' 61745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set dummy $vinfo 0 0 0 61755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shift 61765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFS="$save_ifs" 61775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$7" && \ 61795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "too many parameters to \`-version-info'" 61805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # convert absolute version numbers to libtool ages 61825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # this retains compatibility with .la files and attempts 61835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # to make the code below a bit more comprehensible 61845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $vinfo_number in 61865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) yes) 61875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_major="$1" 61885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_minor="$2" 61895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) number_revision="$3" 61905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 61915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # There are really only two kinds -- those that 61925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # use the current revision as the major version 61935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # and those that subtract age and use age as 61945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # a minor version. But, then there is irix 61955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # which has an extra 1 added just for fun 61965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # 61975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $version_type in 61985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) darwin|linux|osf|windows|none) 61995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $number_major + $number_minor 62005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current=$func_arith_result 62015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="$number_minor" 62025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_revision" 62035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) freebsd-aout|freebsd-elf|sunos) 62055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current="$number_major" 62065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_minor" 62075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="0" 62085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 62095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) irix|nonstopux) 62105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_arith $number_major + $number_minor 62115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current=$func_arith_result 62125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) age="$number_minor" 62135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision="$number_minor" 62145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lt_irix_increment=no 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) if test "x$EGREP" = x ; then 80705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EGREP=egrep 80715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We do not want portage's install root ($D) present. Check only for 80735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # this if the .la is being installed. 80745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = yes && test "$D"; then 80755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` 80765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 80775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mynewdependency_lib="$libdir/$name" 80785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not add duplicates 80805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mynewdependency_lib"; then 80815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` 80825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$my_little_ninja_foo_1"; then 80835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$newdependency_libs $mynewdependency_lib" 80845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 80875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 80885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = yes; then 80895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Rather use S=WORKDIR if our version of portage supports it. 80905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This is because some ebuild (gcc) do not use $S as buildroot. 80915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$PWORKDIR"; then 80925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) S="$PWORKDIR" 80935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 80945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We do not want portage's build root ($S) present. 80955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"` 80965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # We do not want portage's install root ($D) present. 80975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"` 80985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$my_little_ninja_foo_2" && test "$S"; then 80995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mynewdependency_lib="" 81005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -n "$my_little_ninja_foo_3" && test "$D"; then 81015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` 81025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 81035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mynewdependency_lib="$deplib" 81045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 81065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mynewdependency_lib="$deplib" 81075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not add duplicates 81095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mynewdependency_lib"; then 81105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` 81115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -z "$my_little_ninja_foo_4"; then 81125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdependency_libs="$newdependency_libs $mynewdependency_lib" 81135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 81165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dependency_libs="$newdependency_libs" 81195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 81205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlfiles; do 81225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 81245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 81255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 81265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 81285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a valid libtool archive" 81295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $libdir/$name" 81305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 81315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) newdlfiles="$newdlfiles $lib" ;; 81325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 81355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 81365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 81375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 81395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Only pass preopened files to the pseudo-archive (for 81405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # eventual linking with the app. that links it) if we 81415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # didn't already link the preopened objects directly into 81425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # the library: 81435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$lib" 81445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 81455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$libdir" && \ 81475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_error "\`$lib' is not a valid libtool archive" 81485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $libdir/$name" 81495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 81505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 81535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 81545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles= 81555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlfiles; do 81565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) abs=`pwd`"/$lib" ;; 81595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlfiles="$newdlfiles $abs" 81615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlfiles="$newdlfiles" 81635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles= 81645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for lib in $dlprefiles; do 81655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $lib in 81665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) abs=`pwd`"/$lib" ;; 81685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newdlprefiles="$newdlprefiles $abs" 81705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 81715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dlprefiles="$newdlprefiles" 81725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $RM $output 81745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # place dlname in correct position for cygwin 81755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tdlname=$dlname 81765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $host,$output,$installed,$module,$dlname in 81775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 81795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do not add duplicates 81805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = yes && test "$D"; then 81815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` 81825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 81835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO > $output "\ 81845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $outputname - a libtool library file 81855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 81875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file! 81885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library. 81895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name that we can dlopen(3). 81915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlname='$tdlname' 81925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of this library. 81945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library_names='$library_names' 81955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of the static archive. 81975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)old_library='$old_library' 81985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Linker flags that can not go in dependency_libs. 82005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inherited_linker_flags='$new_inherited_linker_flags' 82015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Libraries that this one depends upon. 82035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dependency_libs='$dependency_libs' 82045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of additional weak libraries provided by this library 82065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weak_library_names='$weak_libs' 82075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Version information for $libname. 82095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)current=$current 82105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)age=$age 82115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)revision=$revision 82125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Is this an already installed library? 82145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)installed=$installed 82155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Should we warn about portability when linking against -modules? 82175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)shouldnotlink=$module 82185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to dlopen/dlpreopen 82205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlopen='$dlfiles' 82215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlpreopen='$dlprefiles' 82225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Directory that this library needs to be installed in: 82245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libdir='$install_libdir'" 82255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$installed" = no && test "$need_relink" = yes; then 82265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $ECHO >> $output "\ 82275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\"" 82285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 82305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 82315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a symbolic link so that the libtool archive can be found in 82335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # LD_LIBRARY_PATH before the program is installed. 82345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 82355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 82365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_SUCCESS 82385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 82395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = link || test "$mode" = relink; } && 82415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mode_link ${1+"$@"} 82425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_uninstall arg... 82455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_uninstall () 82465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 82475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $opt_debug 82485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RM="$nonopt" 82495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files= 82505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmforce= 82515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_status=0 82525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # This variable tells wrapper scripts just to set variables rather 82545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # than running their programs. 82555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) libtool_install_magic="$magic" 82565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for arg 82585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) do 82595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $arg in 82605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -f) RM="$RM $arg"; rmforce=yes ;; 82615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -*) RM="$RM $arg" ;; 82625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) files="$files $arg" ;; 82635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 82655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -z "$RM" && \ 82675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify an RM program" 82685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmdirs= 82705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) origobjdir="$objdir" 82725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for file in $files; do 82735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_dirname "$file" "" "." 82745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dir="$func_dirname_result" 82755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$dir" = X.; then 82765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$origobjdir" 82775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 82785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$dir/$origobjdir" 82795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_basename "$file" 82815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name="$func_basename_result" 82825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$mode" = uninstall && objdir="$dir" 82835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Remember objdir for removal later, being careful to avoid duplicates 82855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = clean; then 82865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $rmdirs " in 82875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $objdir "*) ;; 82885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rmdirs="$rmdirs $objdir" ;; 82895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 82905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 82915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Don't error if the file doesn't exist and rm -f was used. 82935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if { test -L "$file"; } >/dev/null 2>&1 || 82945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { test -h "$file"; } >/dev/null 2>&1 || 82955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -f "$file"; then 82965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : 82975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test -d "$file"; then 82985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit_status=1 82995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 83005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elif test "$rmforce" = yes; then 83015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue 83025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$file" 83055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $name in 83075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.la) 83085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Possibly a libtool archive, so verify it. 83095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$file"; then 83105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$name 83115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Delete the libtool libraries and symlinks. 83135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for n in $library_names; do 83145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/$n" 83155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 83165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 83175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case "$mode" in 83195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clean) 83205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case " $library_names " in 83215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # " " in the beginning catches empty $dlname 83225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *" $dlname "*) ;; 83235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) rmfiles="$rmfiles $objdir/$dlname" ;; 83245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 83255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 83265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uninstall) 83285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$library_names"; then 83295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the postuninstall commands. 83305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 83315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$old_library"; then 83345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do each command in the old_postuninstall commands. 83355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 83365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # FIXME: should reinstall the best remaining shared library. 83385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 83405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.lo) 83445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Possibly a libtool object, so verify it. 83455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_lalib_p "$file"; then 83465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Read the .lo file 83485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$name 83495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add PIC object to the list of files to remove. 83515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$pic_object" && 83525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$pic_object" != none; then 83535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $dir/$pic_object" 83545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Add non-PIC object to the list of files to remove. 83575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -n "$non_pic_object" && 83585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test "$non_pic_object" != none; then 83595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $dir/$non_pic_object" 83605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *) 83655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$mode" = clean ; then 83665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noexename=$name 83675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case $file in 83685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *.exe) 83695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$file" 83705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file=$func_stripname_result 83715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_stripname '' '.exe' "$name" 83725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noexename=$func_stripname_result 83735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # $file with .exe has already been added to rmfiles, 83745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # add $file without .exe 83755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $file" 83765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 83775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 83785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Do a test to see if this is a libtool program. 83795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_p "$file"; then 83805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if func_ltwrapper_executable_p "$file"; then 83815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_ltwrapper_scriptname "$file" 83825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 83835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $func_ltwrapper_scriptname_result 83845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 83865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) relink_command= 83875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_source $dir/$noexename 83885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 83905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # note $name still contains .exe if it was in $file originally 83915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # as does the version of $file that was added into $rmfiles 83925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 83935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "$fast_install" = yes && test -n "$relink_command"; then 83945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/lt-$name" 83955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test "X$noexename" != "X$name" ; then 83975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rmfiles="$rmfiles $objdir/lt-${noexename}.c" 83985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 83995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 84005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 84015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ;; 84025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) esac 84035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "$RM $rmfiles" 'exit_status=1' 84045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 84055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objdir="$origobjdir" 84065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Try to remove the ${objdir}s in the directories where we deleted files 84085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for dir in $rmdirs; do 84095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if test -d "$dir"; then 84105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_show_eval "rmdir $dir >/dev/null 2>&1" 84115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fi 84125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) done 84135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $exit_status 84155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 84165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = uninstall || test "$mode" = clean; } && 84185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_mode_uninstall ${1+"$@"} 84195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$mode" && { 84215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) help="$generic_help" 84225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "you must specify a MODE" 84235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 84245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$exec_cmd" && \ 84265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func_fatal_help "invalid operation mode \`$mode'" 84275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "$exec_cmd"; then 84295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eval exec "$exec_cmd" 84305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) exit $EXIT_FAILURE 84315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi 84325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit $exit_status 84345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The TAGs below are defined such that we never get into a situation 84375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in which we disable both kinds of libraries. Given conflicting 84385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# choices, we go for a static library, that is the most portable, 84395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# since we can't tell whether shared libraries were disabled because 84405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the user asked for that or because the platform doesn't support 84415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# them. This is particularly important on AIX, because we don't 84425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# support having both static and shared libraries enabled at the same 84435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# time on that platform, so we default to a shared-only configuration. 84445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If a disable-shared tag is given, we'll fallback to a static-only 84455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# configuration. But we'll never go from static-only to shared-only. 84465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 84485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_libtool_libs=no 84495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=yes 84505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-shared 84515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-static 84535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 84545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-static 84555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Local Variables: 84575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mode:shell-script 84585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sh-indentation:2 84595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# End: 84605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# vi:sw=2 84615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8462