17c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated from ltmain.m4sh. 27c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 37c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ltmain.sh (GNU libtool) 2.2.6b 47c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 57c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 67c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 77c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This is free software; see the source for copying conditions. There is NO 87c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 97c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# GNU Libtool is free software; you can redistribute it and/or modify 117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# it under the terms of the GNU General Public License as published by 127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the Free Software Foundation; either version 2 of the License, or 137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# (at your option) any later version. 147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# As a special exception to the GNU General Public License, 167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if you distribute this file as part of a program or library that 177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is built using GNU Libtool, you may include this file under the 187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# same distribution terms that you use for the rest of that program. 197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# GNU Libtool is distributed in the hope that it will be useful, but 217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# WITHOUT ANY WARRANTY; without even the implied warranty of 227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# General Public License for more details. 247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# You should have received a copy of the GNU General Public License 267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# along with GNU Libtool; see the file COPYING. If not, a copy 277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# can be downloaded from http://www.gnu.org/licenses/gpl.html, 287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# or obtained by writing to the Free Software Foundation, Inc., 297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Usage: $progname [OPTION]... [MODE-ARG]... 327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Provide generalized library-building support services. 347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --config show all configuration variables 367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --debug enable verbose shell tracing 377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -n, --dry-run display commands without modifying any files 387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --features display basic configuration information and exit 397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --mode=MODE use operation mode MODE 407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --preserve-dup-deps don't remove duplicate dependency libraries 417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --quiet, --silent don't print informational messages 427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --tag=TAG use configuration variables from tag TAG 437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -v, --verbose print informational messages (default) 447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# --version print version information 457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -h, --help print short or long help message 467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MODE must be one of the following: 487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# clean remove files from the build directory 507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# compile compile a source file into a libtool object 517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# execute automatically set library path, then run a program 527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# finish complete the installation of libtool libraries 537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# install install libraries or executables 547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# link create a library or an executable 557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# uninstall remove libraries from an installed directory 567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MODE-ARGS vary depending on the MODE. 587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# When reporting a bug, please describe a test case to reproduce it and 617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include the following information: 627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# host-triplet: $host 647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# shell: $SHELL 657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# compiler: $LTCC 667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# compiler flags: $LTCFLAGS 677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# linker: $LD (gnu? $with_gnu_ld) 687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1 697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# automake: $automake_version 707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# autoconf: $autoconf_version 717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Report bugs to <bug-libtool@gnu.org>. 737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 747c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetPROGRAM=ltmain.sh 757c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetPACKAGE=libtool 767c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetVERSION="2.2.6b Debian-2.2.6b-2ubuntu1" 777c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetTIMESTAMP="" 787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpackage_revision=1.3017 797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Be Bourne compatible 817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet emulate sh 837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet NULLCMD=: 847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # is contrary to our usage. Disable this feature. 867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet alias -g '${1+"$@"}'='"$@"' 877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet setopt NO_GLOB_SUBST 887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse 897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi 917c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBIN_SH=xpg4; export BIN_SH # for Tru64 927c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetDUALCASE=1; export DUALCASE # for MKS sh 937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# NLS nuisances: We save the old values to restore during execute mode. 957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Only set LANG and LC_ALL to C if already set. 967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# These must not be set unconditionally because not all systems understand 977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# e.g. LANG=C (notably SCO). 987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_user_locale= 997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_safe_locale= 1007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdo 1027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "if test \"\${$lt_var+set}\" = set; then 1037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_$lt_var=\$$lt_var 1047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $lt_var=C 1057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export $lt_var 1067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi" 1097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdone 1107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$lt_unset CDPATH 1127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${CP="cp -f"} 1187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${ECHO="echo"} 1197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${EGREP="/bin/grep -E"} 1207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${FGREP="/bin/grep -F"} 1217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${GREP="/bin/grep"} 1227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${LN_S="ln -s"} 1237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MAKE="make"} 1247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MKDIR="mkdir"} 1257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MV="mv -f"} 1267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${RM="rm -f"} 1277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${SED="/bin/sed"} 1287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${Xsed="$SED -e 1s/^X//"} 1307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Global variables: 1327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_SUCCESS=0 1337c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_FAILURE=1 1347c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1357c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit_status=$EXIT_SUCCESS 1387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure IFS has a sensible default 1407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_nl=' 1417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet' 1427c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIFS=" $lt_nl" 1437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdirname="s,/[^/]*$,," 1457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbasename="s,^.*/,," 1467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_dirname_and_basename file append nondir_replacement 1487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# perform func_basename and func_dirname in a single function 1497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# call: 1507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# dirname: Compute the dirname of FILE. If nonempty, 1517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# add APPEND to the result, otherwise set result 1527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# to NONDIR_REPLACEMENT. 1537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# value returned in "$func_dirname_result" 1547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# basename: Compute filename of FILE. 1557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# value retuned in "$func_basename_result" 1567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Implementation must be kept synchronized with func_dirname 1577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# and func_basename. For efficiency, we do not delegate to 1587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# those functions but instead duplicate the functionality here. 1597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_dirname_and_basename () 1607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 1617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract subdirectory from the argument. 1627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$func_dirname_result" = "X${1}"; then 1647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_result="${3}" 1657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 1667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_result="$func_dirname_result${2}" 1677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 1687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 1707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated shell functions inserted here. 1727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is ksh but when the shell is invoked as "sh" and the current value of 1757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the _XPG environment variable is not equal to 1 (one), the special 1767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# positional parameter $0, within a function call, is the name of the 1777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# function. 1787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetprogpath="$0" 1797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name of this program: 1817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# In the unlikely event $progname began with a '-', it would play havoc with 1827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_echo (imagine progname=-n), so we prepend ./ in that case: 1837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_dirname_and_basename "$progpath" 1847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetprogname=$func_basename_result 1857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcase $progname in 1867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) progname=./$progname ;; 1877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetesac 1887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure we have an absolute path for reexecution: 1907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcase $progpath in 1917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]*|[A-Za-z]:\\*) ;; 1927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\\/]*) 1937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progdir=$func_dirname_result 1947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progdir=`cd "$progdir" && pwd` 1957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progpath="$progdir/$progname" 1967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 1977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 1987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_IFS="$IFS" 1997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=: 2007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for progdir in $PATH; do 2017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_IFS" 2027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -x "$progdir/$progname" && break 2037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 2047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_IFS" 2057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$progdir" || progdir=`pwd` 2067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progpath="$progdir/$progname" 2077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 2087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetesac 2097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Sed substitution that helps us do robust quoting. It backslashifies 2117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# metacharacters that are still active within double-quoted strings. 2127c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetXsed="${SED}"' -e 1s/^X//' 2137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Same as above, but do not quote variable references. 2167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 2177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Re-`\' parameter expansions in output of double_quote_subst that were 2197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in input to double_quote_subst, that '$' was protected from expansion. 2217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Since each input `\' is now two `\'s, look for any number of runs of 2227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs='\\' 2247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs2='\\\\' 2257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs4='\\\\\\\\' 2267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdollar='\$' 2277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_double_backslash="\ 2287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/$bs4/&\\ 2297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/g 2307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^$bs2$dollar/$bs&/ 2317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\n//g" 2337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Standard options: 2357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_dry_run=false 2367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_help=false 2377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_quiet=false 2387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_verbose=false 2397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_warning=: 2407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_echo arg... 2427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message, along with the current mode 2437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# name if it has been set yet. 2447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_echo () 2457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$progname${mode+: }$mode: $*" 2477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_verbose arg... 2507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message in verbose mode only. 2517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_verbose () 2527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_verbose && func_echo ${1+"$@"} 2547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A bug in bash halts the script if the last line of a function 2567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # fails when set -e is in force, so we need another command to 2577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # work around that: 2587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 2597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_error arg... 2627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error. 2637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_error () 2647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_warning arg... 2697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed warning message to standard error. 2707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_warning () 2717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 2737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # bash bug again: 2757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 2767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_error arg... 2797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, and exit. 2807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_error () 2817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error ${1+"$@"} 2837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 2847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_help arg... 2877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, followed by 2887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a help hint, and exit. 2897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_help () 2907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 2917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error ${1+"$@"} 2927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "$help" 2937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 2947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichethelp="Try \`$progname --help' for more information." ## default 2957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 2977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_grep expression filename 2987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Check whether EXPRESSION matches any line of FILENAME, without output. 2997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_grep () 3007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 3017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP "$1" "$2" >/dev/null 2>&1 3027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 3037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mkdir_p directory-path 3067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure the entire path to DIRECTORY-PATH is available. 3077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mkdir_p () 3087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 3097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_directory_path="$1" 3107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_dir_list= 3117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Protect directory names starting with `-' 3157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $my_directory_path in 3167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) my_directory_path="./$my_directory_path" ;; 3177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 3187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # While some portion of DIR does not yet exist... 3207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test ! -d "$my_directory_path"; do 3217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # ...make a list in topmost first order. Use a colon delimited 3227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # list incase some portion of path contains whitespace. 3237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_dir_list="$my_directory_path:$my_dir_list" 3247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the last portion added has no slash in it, the list is done 3267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $my_directory_path in */*) ;; *) break ;; esac 3277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # ...otherwise throw away the child directory and loop 3297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 3317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_mkdir_p_IFS="$IFS"; IFS=':' 3347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for my_dir in $my_dir_list; do 3357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_mkdir_p_IFS" 3367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # mkdir can fail with a `File exist' error if two processes 3377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # try to create one of the directories concurrently. Don't 3387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # stop in that case! 3397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MKDIR "$my_dir" 2>/dev/null || : 3407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 3417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_mkdir_p_IFS" 3427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Bail out if we (or some other process) failed to create a directory. 3447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -d "$my_directory_path" || \ 3457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "Failed to create \`$1'" 3467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 3477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 3487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mktempdir [string] 3517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make a temporary directory that won't clash with other running 3527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# libtool processes, and avoids race conditions if possible. If 3537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# given, STRING is the basename for that directory. 3547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mktempdir () 3557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 3567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_template="${TMPDIR-/tmp}/${1-$progname}" 3577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$opt_dry_run" = ":"; then 3597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Return a directory name, but don't create it in dry-run mode 3607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_tmpdir="${my_template}-$$" 3617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 3627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If mktemp works, use that first and foremost 3647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 3657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -d "$my_tmpdir"; then 3677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Failing that, at least try and use $RANDOM to avoid a race 3687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_tmpdir="${my_template}-${RANDOM-0}$$" 3697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_mktempdir_umask=`umask` 3717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet umask 0077 3727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MKDIR "$my_tmpdir" 3737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet umask $save_mktempdir_umask 3747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 3757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If we're not in dry-run mode, bomb out on failure 3777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -d "$my_tmpdir" || \ 3787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 3797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 3807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "X$my_tmpdir" | $Xsed 3827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 3837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 3857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_quote_for_eval arg 3867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Aesthetically quote ARG to be evaled later. 3877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is double-quoted, suitable for a subsequent eval, whereas 3897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# which are still active within double quotes backslashified. 3917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_quote_for_eval () 3927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 3937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 3947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\\\`\"\$]*) 3957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 3977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval_unquoted_result="$1" ;; 3987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 3997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $func_quote_for_eval_unquoted_result in 4017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Double-quote args containing shell metacharacters to delay 4027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # word splitting, command substitution and and variable 4037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # expansion for a subsequent eval. 4047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Many Bourne shells cannot handle close brackets correctly 4057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # in scan sets, so we specify it separately. 4067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 4097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 4107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 4117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 4127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 4137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_quote_for_expand arg 4167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Aesthetically quote ARG to be evaled later; same as above, 4177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but do not quote variable references. 4187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_quote_for_expand () 4197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 4207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 4217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\\\`\"]*) 4227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_arg=`$ECHO "X$1" | $Xsed \ 4237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 4247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 4257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_arg="$1" ;; 4267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 4277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $my_arg in 4297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Double-quote args containing shell metacharacters to delay 4307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # word splitting and command substitution for a subsequent eval. 4317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Many Bourne shells cannot handle close brackets correctly 4327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # in scan sets, so we specify it separately. 4337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_arg="\"$my_arg\"" 4357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 4367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 4377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand_result="$my_arg" 4397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 4407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_show_eval cmd [fail_exp] 4437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is given, then evaluate it. 4467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_show_eval () 4477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 4487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_cmd="$1" 4497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_fail_exp="${2-:}" 4507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ${opt_silent-false} || { 4527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand "$my_cmd" 4537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "func_echo $func_quote_for_expand_result" 4547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 4557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ${opt_dry_run-false}; then :; else 4577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$my_cmd" 4587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_status=$? 4597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$my_status" -eq 0; then :; else 4607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "(exit $my_status); $my_fail_exp" 4617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 4627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 4637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 4647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_show_eval_locale cmd [fail_exp] 4677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is given, then evaluate it. Use the saved locale for evaluation. 4707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_show_eval_locale () 4717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 4727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_cmd="$1" 4737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_fail_exp="${2-:}" 4747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ${opt_silent-false} || { 4767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand "$my_cmd" 4777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "func_echo $func_quote_for_expand_result" 4787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 4797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ${opt_dry_run-false}; then :; else 4817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$lt_user_locale 4827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $my_cmd" 4837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_status=$? 4847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$lt_safe_locale" 4857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$my_status" -eq 0; then :; else 4867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "(exit $my_status); $my_fail_exp" 4877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 4887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 4897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 4907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 4957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_version 4967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo version message to standard output and exit. 4977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_version () 4987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 4997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# // 5017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# *$// 5027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p 5047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet }' < "$progpath" 5057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 5067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 5077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_usage 5097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo short help message to standard output and exit. 5107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_usage () 5117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 5127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -n '/^# Usage:/,/# -h/ { 5137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# // 5147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# *$// 5157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\$progname/'$progname'/ 5167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p 5177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet }' < "$progpath" 5187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 5197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "run \`$progname --help | more' for full usage" 5207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 5217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 5227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_help 5247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo long help message to standard output and exit. 5257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_help () 5267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 5277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -n '/^# Usage:/,/# Report bugs to/ { 5287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# // 5297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/^# *$// 5307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$progname*'$progname'* 5317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$host*'"$host"'* 5327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$SHELL*'"$SHELL"'* 5337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$LTCC*'"$LTCC"'* 5347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$LTCFLAGS*'"$LTCFLAGS"'* 5357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s*\$LD*'"$LD"'* 5367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p 5407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet }' < "$progpath" 5417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 5427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 5437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_missing_arg argname 5457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error and set global 5467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# exit_cmd. 5477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_missing_arg () 5487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 5497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "missing argument for $1" 5507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit_cmd=exit 5517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 5527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit_cmd=: 5547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Check that we have a working $ECHO. 5607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test "X$1" = X--no-reexec; then 5617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Discard the --no-reexec flag, and continue. 5627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 5637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelif test "X$1" = X--fallback-echo; then 5647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Avoid inline document here, it may be left over 5657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 5667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Yippee, $ECHO works! 5687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 5697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse 5707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restart under the correct shell, and then maybe $ECHO will work. 5717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi 5737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test "X$1" = X--fallback-echo; then 5757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # used as fallback echo 5767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 5777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 5787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$* 5797c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 5807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 5817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi 5827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmagic="%%%MAGIC variable%%%" 5847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmagic_exe="%%%MAGIC EXE variable%%%" 5857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Global variables. 5877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $mode is unset 5887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnonopt= 5897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexecute_dlfiles= 5907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpreserve_args= 5917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlo2o="s/\\.lo\$/.${objext}/" 5927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheto2lo="s/\\.${objext}\$/.lo/" 5937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextracted_archives= 5947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextracted_serial=0 5957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 5967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_dry_run=false 5977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_duplicate_deps=false 5987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_silent=false 5997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_debug=: 6007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If this variable is set in any of the actions, the command in it 6027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# will be execed at the end. This prevents here-documents from being 6037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# left over by shells. 6047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexec_cmd= 6057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_configuration arg... 6077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, followed by 6087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a configuration failure hint, and exit. 6097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_configuration () 6107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 6117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error ${1+"$@"} 6127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "See the $PACKAGE documentation for more information." 6137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "Fatal configuration error." 6147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 6157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_config 6187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Display the configuration for all the tags in this script. 6197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_config () 6207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 6217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet re_begincf='^# ### BEGIN LIBTOOL' 6227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet re_endcf='^# ### END LIBTOOL' 6237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Default configuration. 6257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 6267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now print the configurations for the tags. 6287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for tagname in $taglist; do 6297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 6307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 6317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 6337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 6347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_features 6367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Display the features supported by this script. 6377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_features () 6387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 6397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "host: $host" 6407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 6417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "enable shared libraries" 6427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 6437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "disable shared libraries" 6447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 6457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes; then 6467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "enable static libraries" 6477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 6487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "disable static libraries" 6497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 6507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 6527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 6537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_enable_tag tagname 6557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Verify that TAGNAME is valid, and either flag an error and exit, or 6567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# variable here. 6587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_enable_tag () 6597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 6607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Global variable: 6617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tagname="$1" 6627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sed_extractcf="/$re_begincf/,/$re_endcf/p" 6667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Validate tagname. 6687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $tagname in 6697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[!-_A-Za-z0-9,/]*) 6707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "invalid tag name: $tagname" 6717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 6727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 6737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't test for the "default" C tag, as we know it's 6757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # there but not specially marked. 6767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $tagname in 6777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CC) ;; 6787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 6797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet taglist="$taglist $tagname" 6817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Evaluate the configuration. Be careful to quote the path 6837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # and the sed script, to avoid splitting on whitespace, but 6847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # also don't use non-portable quotes within backquotes within 6857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # quotes we have to do it in 2 steps: 6867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$extractedcf" 6887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 6897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "ignoring unknown tag $tagname" 6907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 6917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 6927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 6937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 6947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Parse options once, thoroughly. This comes as soon as possible in 6967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the script to make things like `libtool --version' happen quickly. 6977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 6987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 6997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Shorthand for --mode=foo, only valid as the first argument 7007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 7017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet clean|clea|cle|cl) 7027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode clean ${1+"$@"}; shift 7037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile|compil|compi|comp|com|co|c) 7057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode compile ${1+"$@"}; shift 7067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet execute|execut|execu|exec|exe|ex|e) 7087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode execute ${1+"$@"}; shift 7097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finish|finis|fini|fin|fi|f) 7117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode finish ${1+"$@"}; shift 7127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install|instal|insta|inst|ins|in|i) 7147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode install ${1+"$@"}; shift 7157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link|lin|li|l) 7177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode link ${1+"$@"}; shift 7187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift; set dummy --mode uninstall ${1+"$@"}; shift 7217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 7237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Parse non-mode specific arguments: 7257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test "$#" -gt 0; do 7267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt="$1" 7277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 7287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $opt in 7307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --config) func_config ;; 7317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --debug) preserve_args="$preserve_args $opt" 7337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_echo "enabling shell trace mode" 7347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_debug='set -x' 7357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 7367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet execute_dlfiles="$execute_dlfiles $1" 7407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 7417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --dry-run | -n) opt_dry_run=: ;; 7447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --features) func_features ;; 7457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --finish) mode="finish" ;; 7467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 7497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Valid mode arguments: 7507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet clean) ;; 7517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile) ;; 7527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet execute) ;; 7537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finish) ;; 7547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install) ;; 7557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link) ;; 7567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink) ;; 7577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet uninstall) ;; 7587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Catch anything else as an error 7607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) func_error "invalid argument for $opt" 7617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit_cmd=exit 7627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 7637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 7657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet mode="$1" 7677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 7687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --preserve-dup-deps) 7717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_duplicate_deps=: ;; 7727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --quiet|--silent) preserve_args="$preserve_args $opt" 7747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_silent=: 7757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --verbose| -v) preserve_args="$preserve_args $opt" 7787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_silent=false 7797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet preserve_args="$preserve_args $opt $1" 7837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_enable_tag "$1" # tagname is set here 7847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 7857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Separate optargs to long options: 7887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlopen=*|--mode=*|--tag=*) 7897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_opt_split "$opt" 7907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 7927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 7937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -\?|-h) func_usage ;; 7957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --help) opt_help=: ;; 7967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet --version) func_version ;; 7977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 7987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) func_fatal_help "unrecognized option \`$opt'" ;; 7997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) nonopt="$opt" 8017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 8027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 8037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 8047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 8057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 8087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* | *pw32* | *cegcc*) 8097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # don't eliminate duplications in $postdeps and $predeps 8107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_duplicate_compiler_generated_deps=: 8117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 8127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 8137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 8157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 8167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Having warned about all mis-specified options, bail out if 8187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # anything was wrong. 8197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $exit_cmd $EXIT_FAILURE 8207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 8217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_check_version_match 8237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Ensure that we are using m4 macros, and libtool script from the same 8247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# release of libtool. 8257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_check_version_match () 8267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 8277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$package_revision" != "$macro_revision"; then 8287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$VERSION" != "$macro_version"; then 8297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$macro_version"; then 8307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat >&2 <<_LT_EOF 8317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: definition of this LT_INIT comes from an older release. 8337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: and run autoconf again. 8357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF 8367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 8377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat >&2 <<_LT_EOF 8387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: and run autoconf again. 8427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF 8437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 8447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 8457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat >&2 <<_LT_EOF 8467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: of $PACKAGE $VERSION and run autoconf again. 8507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF 8517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 8527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_MISMATCH 8547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 8557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 8567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet## ----------- ## 8597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet## Main. ## 8607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet## ----------- ## 8617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$opt_help || { 8637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Sanity checks first: 8647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_check_version_match 8657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "not configured to build any kind of library" 8687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 8697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Darwin sucks 8747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval std_shrext=\"$shrext_cmds\" 8757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only execute mode is allowed to have -dlopen flags. 8787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$execute_dlfiles" && test "$mode" != execute; then 8797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "unrecognized option \`-dlopen'" 8807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$help" 1>&2 8817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 8827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 8837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Change the help message to a mode-specific one. 8857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generic_help="$help" 8867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet help="Try \`$progname --help --mode=$mode' for more information." 8877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 8887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_lalib_p file 8917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool `.la' library or `.lo' object file. 8927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out 8937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters. 8947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_lalib_p () 8957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 8967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$1" && 8977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e 4q "$1" 2>/dev/null \ 8987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_lalib_unsafe_p file 9027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool `.la' library or `.lo' object file. 9037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function implements the same check as func_lalib_p without 9047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# resorting to external programs. To this end, it redirects stdin and 9057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# closes it afterwards, without saving the original file descriptor. 9067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# As a safety measure, use it only where a negative result would be 9077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# fatal anyway. Works if `file' does not exist. 9087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_lalib_unsafe_p () 9097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lalib_p=no 9117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lalib_p_l in 1 2 3 4 9137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 9147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet read lalib_p_line 9157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$lalib_p_line" in 9167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 9187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 9197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec 0<&5 5<&- 9207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 9217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$lalib_p" = yes 9227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_script_p file 9257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper script 9267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out 9277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters. 9287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_script_p () 9297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lalib_p "$1" 9317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_executable_p file 9347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper executable 9357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out 9367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters. 9377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_executable_p () 9387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_exec_suffix= 9407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 9417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe) ;; 9427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) func_ltwrapper_exec_suffix=.exe ;; 9437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 9447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_scriptname file 9487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Assumes file is an ltwrapper_executable 9497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# uses $file to determine the appropriate filename for a 9507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# temporary ltwrapper_script. 9517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_scriptname () 9527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname_result="" 9547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_executable_p "$1"; then 9557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_and_basename "$1" "" "." 9567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$func_basename_result" 9577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 9597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_p file 9627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper script or wrapper executable 9637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out 9647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters. 9657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_p () 9667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_execute_cmds commands fail_cmd 9727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Execute tilde-delimited COMMANDS. 9737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If FAIL_CMD is given, eval that upon failure. 9747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FAIL_CMD may read-access the current command in variable CMD! 9757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_execute_cmds () 9767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 9787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs=$IFS; IFS='~' 9797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for cmd in $1; do 9807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=$save_ifs 9817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmd=\"$cmd\" 9827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$cmd" "${2-:}" 9837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 9847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=$save_ifs 9857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 9867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 9887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_source file 9897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Source FILE, adding directory component if necessary. 9907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Note that it is not necessary on cygwin/mingw to append a dot to 9917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# behavior happens only for exec(3), not for open(2)! Also, sourcing 9937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# `FILE.' does not work on cygwin managed mounts. 9947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_source () 9957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 9967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 9977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $1 in 9987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */* | *\\*) . "$1" ;; 9997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) . "./$1" ;; 10007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 10017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 10027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_infer_tag arg 10057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Infer tagged configuration to use if any are available and 10067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if one wasn't chosen via the "--tag" command line option. 10077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Only attempt this if the compiler in the base compile 10087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# command doesn't match the default compiler. 10097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# arg is usually of the form 'gcc ...' 10107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_infer_tag () 10117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 10127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 10137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$available_tags" && test -z "$tagname"; then 10147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CC_quoted= 10157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg in $CC; do 10167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 10177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CC_quoted="$CC_quoted $func_quote_for_eval_result" 10187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 10197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $@ in 10207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Blanks in the command may have been stripped by the calling shell, 10217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # but not from the CC environment variable when configure was run. 10227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Blanks at the start of $base_compile will cause this to fail 10247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # if we don't check for them as well. 10257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 10267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for z in $available_tags; do 10277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Evaluate the configuration. 10297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CC_quoted= 10317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg in $CC; do 10327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Double-quote args containing other shell metacharacters. 10337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 10347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet CC_quoted="$CC_quoted $func_quote_for_eval_result" 10357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 10367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$@ " in 10377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The compiler in the base compile command matches 10397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the one in the tagged configuration. 10407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Assume this is the tagged configuration we want. 10417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tagname=$z 10427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 10437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 10447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 10457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 10467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 10477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If $tagname still isn't set, then no tagged configuration 10487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # was found and let the user know that the "--tag" command 10497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # line option must be used. 10507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$tagname"; then 10517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_echo "unable to infer tagged configuration" 10527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "specify a tag with \`--tag'" 10537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# else 10547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_verbose "using $tagname tagged configuration" 10557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 10567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 10577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 10587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 10597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 10607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_write_libtool_object output_name pic_name nonpic_name 10647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Create a libtool object file (analogous to a ".la" file), 10657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but don't create it if we're doing a dry run. 10667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_write_libtool_object () 10677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 10687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet write_libobj=${1} 10697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 10707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet write_lobj=\'${2}\' 10717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 10727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet write_lobj=none 10737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 10747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes; then 10767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet write_oldobj=\'${3}\' 10777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 10787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet write_oldobj=none 10797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 10807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 10827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat >${write_libobj}T <<EOF 10837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $write_libobj - a libtool object file 10847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 10867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Please DO NOT delete this file! 10877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# It is necessary for linking the library. 10887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Name of the PIC object. 10907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpic_object=$write_lobj 10917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Name of the non-PIC object 10937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnon_pic_object=$write_oldobj 10947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10957c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 10967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV "${write_libobj}T" "${write_libobj}" 10977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 10987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 10997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_compile arg... 11017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_compile () 11027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 11037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 11047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Get the compilation command and the source file. 11057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet base_compile= 11067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet suppress_opt=yes 11087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet suppress_output= 11097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg_mode=normal 11107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj= 11117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet later= 11127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pie_flag= 11137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg 11157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 11167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg_mode in 11177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg ) 11187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # do not "continue". Instead, add this to base_compile 11197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lastarg="$arg" 11207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg_mode=normal 11217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet target ) 11247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj="$arg" 11257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg_mode=normal 11267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet normal ) 11307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Accept any command-line options. 11317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 11327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -o) 11337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$libobj" && \ 11347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "you cannot specify \`-o' more than once" 11357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg_mode=target 11367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -pie | -fpie | -fPIE) 11407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pie_flag="$pie_flag $arg" 11417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared | -static | -prefer-pic | -prefer-non-pic) 11457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet later="$later $arg" 11467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-suppress) 11507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet suppress_opt=no 11517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Xcompiler) 11557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg_mode=arg # the next one goes into the "base_compile" arg list 11567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue # The current "srcfile" will either be retained or 11577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; # replaced later. I would guess that would be a bug. 11587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Wc,*) 11607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-Wc,' '' "$arg" 11617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet args=$func_stripname_result 11627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lastarg= 11637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS=',' 11647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg in $args; do 11657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 11667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 11677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lastarg="$lastarg $func_quote_for_eval_result" 11687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 11697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 11707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname ' ' '' "$lastarg" 11717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lastarg=$func_stripname_result 11727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the arguments to base_compile. 11747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet base_compile="$base_compile $lastarg" 11757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 11767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 11797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Accept the current argument as the source file. 11807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The previous "srcfile" becomes the current argument. 11817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # 11827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lastarg="$srcfile" 11837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet srcfile="$arg" 11847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # case $arg 11867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # case $arg_mode 11887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Aesthetically quote the previous argument. 11907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$lastarg" 11917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet base_compile="$base_compile $func_quote_for_eval_result" 11927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # for arg 11937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 11947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg_mode in 11957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg) 11967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "you must specify an argument for -Xcompile" 11977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 11987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet target) 11997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "you must specify a target with \`-o'" 12007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 12027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Get the name of the library object. 12037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libobj" && { 12047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$srcfile" 12057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj="$func_basename_result" 12067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 12077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 12097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Recognize several different file suffixes. 12117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the user specifies -o file.o, it is replaced with file.lo 12127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $libobj in 12137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.[cCFSifmso] | \ 12147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.ada | *.adb | *.ads | *.asm | \ 12157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_xform "$libobj" 12187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj=$func_xform_result 12197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 12217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $libobj in 12237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 12247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 12257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot determine name of library object from \`$libobj'" 12267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 12287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_infer_tag $base_compile 12307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg in $later; do 12327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 12337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared) 12347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_libtool_libs" != yes && \ 12357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "can not build a shared library" 12367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=no 12377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 12387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static) 12417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 12427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 12437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 12447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -prefer-pic) 12477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_mode=yes 12487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 12497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -prefer-non-pic) 12527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_mode=no 12537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 12547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 12567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 12577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$libobj" 12597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobj" != "X$func_quote_for_eval_result" \ 12607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && func_warning "libobj name \`$libobj' may not contain shell special characters." 12627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_and_basename "$obj" "/" "" 12637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objname="$func_basename_result" 12647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xdir="$func_dirname_result" 12657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lobj=${xdir}$objdir/$objname 12667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$base_compile" && \ 12687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify a compilation command" 12697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete any leftover library objects. 12717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes; then 12727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist="$obj $lobj $libobj ${libobj}T" 12737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 12747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist="$lobj $libobj ${libobj}T" 12757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 12767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # On Cygwin there's no "real" PIC flag so we must build both object types 12787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host_os in 12797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cygwin* | mingw* | pw32* | os2* | cegcc*) 12807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_mode=default 12817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 12827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 12837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 12847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # non-PIC code in shared libraries is not supported 12857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_mode=default 12867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 12877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Calculate the filename of the output object if compiler does 12897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # not support -o with -c 12907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$compiler_c_o" = no; then 12917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 12927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lockfile="$output_obj.lock" 12937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 12947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_obj= 12957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet need_locks=no 12967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lockfile= 12977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 12987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 12997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Lock this critical section if it is needed 13007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We use this script file to make the link, it avoids creating a new file 13017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_locks" = yes; then 13027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_echo "Waiting for $lockfile to be removed" 13047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sleep 2 13057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 13067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$need_locks" = warn; then 13077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$lockfile"; then 13087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 13097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile exists and contains: 13107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null` 13117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13127c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same 13137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because 13147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together. If you 13157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better 13167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better 13177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler." 13187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $removelist 13207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 13217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist="$removelist $output_obj" 13237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$srcfile" > "$lockfile" 13247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $removelist 13277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist="$removelist $lockfile" 13287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$fix_srcfile_path"; then 13317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval srcfile=\"$fix_srcfile_path\" 13327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$srcfile" 13347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet qsrcfile=$func_quote_for_eval_result 13357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only build a PIC object if we are building libtool libraries. 13377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 13387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Without this assignment, base_compile gets emptied. 13397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fbsd_hideous_sh_bug=$base_compile 13407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pic_mode" != no; then 13427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$base_compile $qsrcfile $pic_flag" 13437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 13447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't build PIC code 13457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$base_compile $qsrcfile" 13467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mkdir_p "$xdir$objdir" 13497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$output_obj"; then 13517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Place PIC objects in $objdir 13527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$command -o $lobj" 13537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval_locale "$command" \ 13567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 13577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_locks" = warn && 13597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 13617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile contains: 13627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null` 13637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbut it should contain: 13657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$srcfile 13667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13677c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same 13687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because 13697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together. If you 13707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better 13717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better 13727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler." 13737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $removelist 13757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 13767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just move the object if needed, then go on to compile the next one 13797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$MV "$output_obj" "$lobj"' \ 13817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 13827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Allow error messages only from the first compilation. 13857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$suppress_opt" = yes; then 13867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet suppress_output=' >/dev/null 2>&1' 13877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 13907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only build a position-dependent object if we build old libraries. 13917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes; then 13927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pic_mode" != yes; then 13937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't build PIC code 13947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$base_compile $qsrcfile$pie_flag" 13957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 13967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$base_compile $qsrcfile $pic_flag" 13977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 13987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$compiler_c_o" = yes; then 13997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$command -o $obj" 14007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 14017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Suppress compiler output if we already did a PIC compilation. 14037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet command="$command$suppress_output" 14047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval_locale "$command" \ 14057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 14067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_locks" = warn && 14087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 14107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile contains: 14117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null` 14127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbut it should contain: 14147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$srcfile 14157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14167c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same 14177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because 14187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together. If you 14197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better 14207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better 14217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler." 14227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $removelist 14247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 14257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 14267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just move the object if needed 14287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$MV "$output_obj" "$obj"' \ 14307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 14317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 14327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 14337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 14357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 14367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Unlock the critical section if it was locked 14387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_locks" != no; then 14397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist=$lockfile 14407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM "$lockfile" 14417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 14427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 14437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 14457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 14467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$opt_help || { 14487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = compile && func_mode_compile ${1+"$@"} 14497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 14507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_help () 14527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 14537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need to display help for each of the modes. 14547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $mode in 14557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet "") 14567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Generic help is extracted from the usage comments 14577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # at the start of this file. 14587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_help 14597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 14607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet clean) 14627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 14637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 14647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14657c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRemove files from the build directory. 14667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14677c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRM is the name of the program to use to delete files associated with each FILE 14687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetto RM. 14707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14717c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf FILE is a libtool library, object or program, all the files associated 14727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetwith it are deleted. Otherwise, only FILE itself is deleted using RM." 14737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 14747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile) 14767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 14777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 14787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14797c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetCompile a source file into a libtool library object. 14807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14817c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode accepts the following additional options: 14827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-suppress do not suppress compiler output for multiple passes 14857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -prefer-pic try to building PIC objects only 14867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -prefer-non-pic try to building non-PIC objects only 14877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared do not build a \`.o' file suitable for static linking 14887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static only build a \`.o' file suitable for static linking 14897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14907c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 14917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfrom the given SOURCEFILE. 14927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14937c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe output file name is determined by removing the directory component from 14947c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetSOURCEFILE, then substituting the C source code suffix \`.c' with the 14957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibrary object suffix, \`.lo'." 14967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 14977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 14987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet execute) 14997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 15007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 15017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15027c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetAutomatically set library path, then run a program. 15037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15047c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode accepts the following additional options: 15057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlopen FILE add the directory containing FILE to the library path 15077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15087c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode sets the library path environment variable according to \`-dlopen' 15097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetflags. 15107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15117c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf any of the ARGS are libtool executable wrappers, then they are translated 15127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinto their corresponding uninstalled binary, and any of their required library 15137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdirectories are added to the library path. 15147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15157c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThen, COMMAND is executed, with ARGS as arguments." 15167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 15177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finish) 15197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 15207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 15217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15227c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetComplete the installation of libtool libraries. 15237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15247c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEach LIBDIR is a directory that contains libtool libraries. 15257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15267c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe commands that this mode executes may require superuser privileges. Use 15277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetthe \`--dry-run' option if you just want to see what would be executed." 15287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 15297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install) 15317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 15327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 15337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15347c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetInstall executables or libraries. 15357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetINSTALL-COMMAND is the installation command. The first component should be 15377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheteither the \`install' or \`cp' program. 15387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15397c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe following components of INSTALL-COMMAND are treated specially: 15407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 15427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15437c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe rest of the components are interpreted as arguments to that command (only 15447c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBSD-compatible install options are recognized)." 15457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 15467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link) 15487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 15497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 15507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15517c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetLink object files or libraries together to form another library, or to 15527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcreate an executable program. 15537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15547c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetLINK-COMMAND is a command using the C compiler that you would use to create 15557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheta program from several object files. 15567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15577c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe following components of LINK-COMMAND are treated specially: 15587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -all-static do not do any dynamic linking at all 15607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -avoid-version do not add a version suffix if possible 15617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -export-symbols SYMFILE 15657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet try to export only the symbols listed in SYMFILE 15667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -export-symbols-regex REGEX 15677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet try to export only the symbols matching REGEX 15687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -LLIBDIR search LIBDIR for required installed libraries 15697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -lNAME OUTPUT-FILE requires the installed library libNAME 15707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -module build a library that can dlopened 15717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-fast-install disable the fast-install mode 15727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-install link a not-installable executable 15737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-undefined declare that a library does not refer to external symbols 15747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -objectlist FILE Use a list of object files found in FILE to specify objects 15767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -precious-files-regex REGEX 15777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet don't remove output files matching REGEX 15787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -release RELEASE specify package release information 15797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -rpath LIBDIR the created library will eventually be installed in LIBDIR 15807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared only do dynamic linking of libtool libraries 15827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shrext SUFFIX override the standard shared library file extension 15837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static do not do any dynamic linking of uninstalled libtool libraries 15847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static-libtool-libs 15857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do not do any dynamic linking of libtool libraries 15867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -version-info CURRENT[:REVISION[:AGE]] 15877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet specify library version info [each variable defaults to 0] 15887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -weak LIBNAME declare that the target provides the LIBNAME interface 15897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15907c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetAll other options (arguments beginning with \`-') are ignored. 15917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15927c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEvery other argument is treated as a filename. Files ending in \`.la' are 15937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettreated as uninstalled libtool libraries, other files are standard or library 15947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetobject files. 15957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 15967c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetonly library objects (\`.lo' files) may be specified, and \`-rpath' is 15987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrequired, except when creating a convenience library. 15997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16007c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetusing \`ar' and \`ranlib', or on Windows using \`lib'. 16027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16037c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetis created, otherwise an executable program is created." 16057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet uninstall) 16087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \ 16097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 16107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16117c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRemove libraries from an installation directory. 16127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16137c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRM is the name of the program to use to delete files associated with each FILE 16147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetto RM. 16167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16177c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf FILE is a libtool library, all the files associated with it are deleted. 16187c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetOtherwise, only FILE itself is deleted using RM." 16197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 16227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "invalid operation mode \`$mode'" 16237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 16257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 16277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "Try \`$progname --help' for more information about other modes." 16287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $? 16307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 16317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now that we've collected a possible --mode arg, show help if necessary 16337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_help && func_mode_help 16347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_execute arg... 16377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_execute () 16387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 16397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 16407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The first argument is the command name. 16417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmd="$nonopt" 16427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$cmd" && \ 16437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify a COMMAND" 16447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Handle -dlopen flags immediately. 16467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $execute_dlfiles; do 16477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$file" \ 16487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet || func_fatal_help "\`$file' is not a file" 16497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir= 16517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 16527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 16537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that this really is a libtool archive. 16547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lalib_unsafe_p "$file" \ 16557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet || func_fatal_help "\`$lib' is not a valid libtool archive" 16567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Read the libtool library. 16587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlname= 16597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet library_names= 16607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$file" 16617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Skip this library if it cannot be dlopened. 16637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dlname"; then 16647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Warn if it was a shared library. 16657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$library_names" && \ 16667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`$file' was not linked with \`-export-dynamic'" 16677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 16687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 16697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$file" "" "." 16717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$func_dirname_result" 16727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$dir/$objdir/$dlname"; then 16747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$dir/$objdir" 16757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 16767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -f "$dir/$dlname"; then 16777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 16797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 16807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 16837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just add the directory containing the .lo file. 16847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$file" "" "." 16857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$func_dirname_result" 16867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 16897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 16907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 16917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 16927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 16937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Get the absolute pathname. 16957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir=`cd "$dir" && pwd` 16967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$absdir" && dir="$absdir" 16977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 16987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now add the directory to shlibpath_var. 16997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval "test -z \"\$$shlibpath_var\""; then 17007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$shlibpath_var=\"\$dir\"" 17017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 17027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 17057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This variable tells wrapper scripts just to set shlibpath_var 17077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # rather than running their programs. 17087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libtool_execute_magic="$magic" 17097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check if any of the arguments is a wrapper script. 17117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet args= 17127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file 17137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 17147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 17157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) ;; 17167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 17177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do a test to see if this is really a libtool program. 17187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_script_p "$file"; then 17197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$file" 17207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform arg to wrapped name. 17217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file="$progdir/$program" 17227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif func_ltwrapper_executable_p "$file"; then 17237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname "$file" 17247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$func_ltwrapper_scriptname_result" 17257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform arg to wrapped name. 17267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file="$progdir/$program" 17277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 17297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 17307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Quote arguments (to preserve shell metacharacters). 17317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$file" 17327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet args="$args $func_quote_for_eval_result" 17337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 17347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$opt_dry_run" = Xfalse; then 17367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath_var"; then 17377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Export the shlibpath_var. 17387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "export $shlibpath_var" 17397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restore saved environment variables 17427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 17447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "if test \"\${save_$lt_var+set}\" = set; then 17457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $lt_var=\$save_$lt_var; export $lt_var 17467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 17477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $lt_unset $lt_var 17487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi" 17497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 17507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now prepare to actually exec the command. 17527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec_cmd="\$cmd$args" 17537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 17547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Display what would be done. 17557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath_var"; then 17567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "export $shlibpath_var" 17587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$cmd$args" 17607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 17617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 17637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = execute && func_mode_execute ${1+"$@"} 17657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_finish arg... 17687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_finish () 17697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 17707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 17717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdirs="$nonopt" 17727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet admincmds= 17737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir 17767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 17777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdirs="$libdirs $dir" 17787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 17797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $libdirs; do 17817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$finish_cmds"; then 17827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the finish commands. 17837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet'"$cmd"'"' 17857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$finish_eval"; then 17877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do the single finish_eval. 17887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmds=\"$finish_eval\" 17897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $cmds" 17917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 17937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 17947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Exit here if they wanted silent mode. 17967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_silent && exit $EXIT_SUCCESS 17977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 17987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "X----------------------------------------------------------------------" | $Xsed 17997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "Libraries have been installed in:" 18007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $libdirs; do 18017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " $libdir" 18027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 18037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 18047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "If you ever happen to want to link against installed libraries" 18057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "flag during linking and do at least one of the following:" 18087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath_var"; then 18097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " during execution" 18117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$runpath_var"; then 18137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " during linking" 18157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_flag_spec"; then 18177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir=LIBDIR 18187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval flag=\"$hardcode_libdir_flag_spec\" 18197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " - use the \`$flag' linker flag" 18217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$admincmds"; then 18237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " - have your system administrator run these commands:$admincmds" 18247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f /etc/ld.so.conf; then 18267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 18297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "See any operating system documentation about shared libraries for" 18317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 18327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet solaris2.[6789]|solaris2.1[0-9]) 18337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "pages." 18357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 18367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 18377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 18397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 18407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "X----------------------------------------------------------------------" | $Xsed 18417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 18427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 18437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = finish && func_mode_finish ${1+"$@"} 18457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_install arg... 18487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_install () 18497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 18507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 18517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # There may be an optional sh(1) argument at the beginning of 18527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # install_prog (especially on Windows NT). 18537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Allow the use of GNU shtool's install command. 18557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Aesthetically quote it. 18577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$nonopt" 18587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_prog="$func_quote_for_eval_result " 18597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$1 18607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 18617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 18627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_prog= 18637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$nonopt 18647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The real first argument should be the name of the installation program. 18677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Aesthetically quote it. 18687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 18697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_prog="$install_prog$func_quote_for_eval_result" 18707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need to accept at least all the BSD install flags. 18727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dest= 18737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet files= 18747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet opts= 18757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 18767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_type= 18777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet isdir=no 18787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet stripme= 18797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg 18807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 18817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dest"; then 18827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet files="$files $dest" 18837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dest=$arg 18847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 18857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 18867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 18877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 18887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -d) isdir=yes ;; 18897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -f) 18907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $install_prog " in 18917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\\\ /]cp\ *) ;; 18927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) prev=$arg ;; 18937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 18947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 18957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -g | -m | -o) 18967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=$arg 18977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 18987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -s) 18997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet stripme=" -s" 19007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 19017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) 19037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 19057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the previous option needed an argument, then skip it. 19067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$prev"; then 19077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 19087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 19097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dest=$arg 19107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 19117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 19127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 19147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Aesthetically quote the argument. 19167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 19177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_prog="$install_prog $func_quote_for_eval_result" 19187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 19197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$install_prog" && \ 19217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify an install program" 19227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$prev" && \ 19247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "the \`$prev' option requires an argument" 19257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$files"; then 19277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dest"; then 19287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "no file or destination specified" 19297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 19307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify a destination" 19317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 19327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 19337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Strip any trailing slash from the destination. 19357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '/' "$dest" 19367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dest=$func_stripname_result 19377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that the destination is a directory. 19397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -d "$dest" && isdir=yes 19407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$isdir" = yes; then 19417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destdir="$dest" 19427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destname= 19437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 19447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_and_basename "$dest" "" "." 19457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destdir="$func_dirname_result" 19467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destname="$func_basename_result" 19477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Not a directory, so check to see that there is only one file specified. 19497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $files; shift 19507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$#" -gt 1 && \ 19517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "\`$dest' is not a directory" 19527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 19537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $destdir in 19547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) ;; 19557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 19567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $files; do 19577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 19587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) ;; 19597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 19607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "\`$destdir' must be an absolute directory name" 19617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 19637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 19647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 19667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This variable tells wrapper scripts just to set variables rather 19687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # than running their programs. 19697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libtool_install_magic="$magic" 19707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet staticlibs= 19727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet future_libdirs= 19737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet current_libdirs= 19747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $files; do 19757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each installation. 19777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 19787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$libext) 19797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do the static libraries later. 19807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet staticlibs="$staticlibs $file" 19817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 19827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 19847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that this really is a libtool archive. 19857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lalib_unsafe_p "$file" \ 19867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet || func_fatal_help "\`$file' is not a valid libtool archive" 19877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet library_names= 19897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_library= 19907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 19917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$file" 19927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 19937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the libdir to current_libdirs if it is the destination. 19947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$destdir" = "X$libdir"; then 19957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$current_libdirs " in 19967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 19977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) current_libdirs="$current_libdirs $libdir" ;; 19987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 19997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 20007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Note the libdir as a future libdir. 20017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$future_libdirs " in 20027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 20037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) future_libdirs="$future_libdirs $libdir" ;; 20047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 20057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$file" "/" "" 20087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$func_dirname_result" 20097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$dir$objdir" 20107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$relink_command"; then 20127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Determine the prefix the user has applied to our future dir. 20137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't allow the user to place us outside of our expected 20167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # location b/c this prevents finding dependent libraries that 20177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # are installed to the same prefix. 20187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # At present, this check doesn't affect windows .dll's that 20197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # are installed into $libdir/../bin (currently, that works fine) 20207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # but it's something to keep an eye on. 20217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$inst_prefix_dir" = "$destdir" && \ 20227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$inst_prefix_dir"; then 20257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Stick the inst_prefix_dir data into the link command. 20267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 20287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "relinking \`$file'" 20327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$relink_command" \ 20337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # See the names of the shared library. 20377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $library_names; shift 20387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1"; then 20397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet realname="$1" 20407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 20417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet srcname="$realname" 20437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$relink_command" && srcname="$realname"T 20447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install the shared library and build the symlinks. 20467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 'exit $?' 20487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tstripme="$stripme" 20497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host_os in 20507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cygwin* | mingw* | pw32* | cegcc*) 20517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $realname in 20527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.dll.a) 20537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tstripme="" 20547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 20557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 20567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 20577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 20587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$tstripme" && test -n "$striplib"; then 20597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$striplib $destdir/$realname" 'exit $?' 20607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$#" -gt 0; then 20637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the old symlinks, and create new ones. 20647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try `ln -sf' first, because the `ln' binary might depend on 20657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the symlink we replace! Solaris /bin/ln does not understand -f, 20667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # so we also need to try rm && ln -s. 20677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for linkname 20687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 20697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$linkname" != "$realname" \ 20707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 20717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 20727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the postinstall commands. 20757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib="$destdir/$realname" 20767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$postinstall_cmds" 'exit $?' 20777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 20787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install the pseudo-library for information purposes. 20807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file" 20817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 20827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet instname="$dir/$name"i 20837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 20847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Maybe install the static library, too. 20867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 20887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 20907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install (i.e. copy) a libtool object. 20917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 20927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Figure out destination file name, if it wasn't already specified. 20937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$destname"; then 20947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$destdir/$destname" 20957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 20967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file" 20977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$func_basename_result" 20987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$destdir/$destfile" 20997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Deduce the name of the destination old-style object file. 21027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $destfile in 21037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 21047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lo2o "$destfile" 21057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet staticdest=$func_lo2o_result 21067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$objext) 21087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet staticdest="$destfile" 21097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile= 21107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 21127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "cannot copy a libtool object to \`$destfile'" 21137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 21157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install the libtool object if requested. 21177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$destfile" && \ 21187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog $file $destfile" 'exit $?' 21197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install the old object if enabled. 21217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes; then 21227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Deduce the name of the old-style object file. 21237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lo2o "$file" 21247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet staticobj=$func_lo2o_result 21257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 21267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 21287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 21317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Figure out destination file name, if it wasn't already specified. 21327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$destname"; then 21337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$destdir/$destname" 21347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 21357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file" 21367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$func_basename_result" 21377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile="$destdir/$destfile" 21387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the file is missing, and there is a .exe on the end, strip it 21417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # because it is most likely a libtool script we actually want to 21427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # install 21437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet stripped_ext="" 21447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 21457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe) 21467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -f "$file"; then 21477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$file" 21487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=$func_stripname_result 21497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet stripped_ext=".exe" 21507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 21537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do a test to see if this is really a libtool program. 21557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 21567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw*) 21577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_executable_p "$file"; then 21587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname "$file" 21597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrapper=$func_ltwrapper_scriptname_result 21607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 21617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$file" 21627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrapper=$func_stripname_result 21637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 21667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrapper=$file 21677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 21687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 21697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_script_p "$wrapper"; then 21707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_deplibs= 21717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 21727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$wrapper" 21747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check the variables that should have been set. 21767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$generated_by_libtool_version" && \ 21777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize=yes 21807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $notinst_deplibs; do 21817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that each library is installed. 21827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir= 21837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$lib"; then 21847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$lib" 21857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$libdir" && test ! -f "$libfile"; then 21887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`$lib' has not been installed in \`$libdir'" 21897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize=no 21907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 21917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 21927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 21947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$wrapper" 21957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 21967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet outputname= 21977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" = no && test -n "$relink_command"; then 21987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 21997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$finalize" = yes; then 22007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmpdir=`func_mktempdir` 22017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file$stripped_ext" 22027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file="$func_basename_result" 22037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet outputname="$tmpdir/$file" 22047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Replace the output file specification. 22057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_silent || { 22087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand "$relink_command" 22097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "func_echo $func_quote_for_expand_result" 22107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 22117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval "$relink_command"; then : 22127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 22137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "error: relink \`$file' with the above command before installing it" 22147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || ${RM}r "$tmpdir" 22157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 22167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file="$outputname" 22187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 22197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "cannot relink \`$file'" 22207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 22227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 22237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Install the binary that we compiled earlier. 22247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 22257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # remove .exe since cygwin /usr/bin/install will append another 22297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # one anyway 22307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $install_prog,$host in 22317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */usr/bin/install*,*cygwin*) 22327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file:$destfile in 22337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe:*.exe) 22347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # this is ok 22357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 22367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe:*) 22377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile=$destfile.exe 22387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 22397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *:*.exe) 22407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$destfile" 22417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destfile=$func_stripname_result 22427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 22437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 22447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 22457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 22467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || if test -n "$outputname"; then 22487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ${RM}r "$tmpdir" 22497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 22517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 22527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 22537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $staticlibs; do 22557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file" 22567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 22577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Set up the ranlib parameters. 22597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlib="$destdir/$name" 22607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$stripme" && test -n "$old_striplib"; then 22647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$old_striplib $oldlib" 'exit $?' 22657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the postinstall commands. 22687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 22707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$future_libdirs" && \ 22727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "remember to run \`$progname --finish$future_libdirs'" 22737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$current_libdirs"; then 22757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Maybe just do a dry run. 22767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run && current_libdirs=" -n$current_libdirs" 22777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 22797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 22807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 22817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 22827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = install && func_mode_install ${1+"$@"} 22847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_generate_dlsyms outputname originator pic_p 22877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Extract symbols from dlprefiles and create ${outputname}S.o with 22887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a dlpreopen symbol table. 22897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_generate_dlsyms () 22907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 22917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 22927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_outputname="$1" 22937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_originator="$2" 22947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_pic_p="${3-no}" 22957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_dlsyms= 22977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 22987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$NM" && test -n "$global_symbol_pipe"; then 23007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_dlsyms="${my_outputname}S.c" 23017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 23027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "not configured to extract global symbols from dlpreopened files" 23037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$my_dlsyms"; then 23077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $my_dlsyms in 23087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet "") ;; 23097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.c) 23107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Discover the nlist of each of the dlfiles. 23117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet nlist="$output_objdir/${my_outputname}.nm" 23127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Parse the name list into a source file. 23167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating $output_objdir/$my_dlsyms" 23177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __cplusplus 23237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextern \"C\" { 23247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 23257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* External symbol declarations for the compiler. */\ 23277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 23287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$dlself" = yes; then 23307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "generating symbol list for \`$output'" 23317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add our own program objects to the symbol list. 23357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for progfile in $progfiles; do 23377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "extracting global C symbols from \`$progfile'" 23387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 23407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$exclude_expsyms"; then 23427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$MV "$nlist"T "$nlist"' 23457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 23467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols_regex"; then 23497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$MV "$nlist"T "$nlist"' 23527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 23537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepare the list of exported symbols 23567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$export_symbols"; then 23577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols="$output_objdir/$outputname.exp" 23587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM $export_symbols 23607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 23627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* | *cegcc* ) 23637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 23667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 23677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 23687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 23697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$MV "$nlist"T "$nlist"' 23737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 23747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin | *mingw* | *cegcc* ) 23757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 23787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 23797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 23807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 23827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dlprefile in $dlprefiles; do 23847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "extracting global C symbols from \`$dlprefile'" 23857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$dlprefile" 23867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 23877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval '$ECHO ": $name " >> "$nlist"' 23897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 23917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 23927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 23947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure we have at least an empty file. 23957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$nlist" || : > "$nlist" 23967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 23977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$exclude_expsyms"; then 23987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV "$nlist"T "$nlist" 24007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 24017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try sorting and uniquifying the output. 24037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $GREP -v "^: " < "$nlist" | 24047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if sort -k 3 </dev/null >/dev/null 2>&1; then 24057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sort -k 3 24067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 24077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sort +2 24087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi | 24097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet uniq > "$nlist"S; then 24107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 24117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 24127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP -v "^: " < "$nlist" > "$nlist"S 24137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 24147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$nlist"S; then 24167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 24177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 24187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 24197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 24207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO >> "$output_objdir/$my_dlsyms" "\ 24227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* The mapping between symbol names and symbols. */ 24247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettypedef struct { 24257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *name; 24267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet void *address; 24277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} lt_dlsymlist; 24287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 24297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 24307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* | *cegcc* ) 24317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO >> "$output_objdir/$my_dlsyms" "\ 24327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* DATA imports from DLLs on WIN32 con't be const, because 24337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet runtime relocations are performed -- see ld's documentation 24347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet on pseudo-relocs. */" 24357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_dlsym_const= ;; 24367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *osf5*) 24377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet echo >> "$output_objdir/$my_dlsyms" "\ 24387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* This system does not cope well with relocations in const data */" 24397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_dlsym_const= ;; 24407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 24417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_dlsym_const=const ;; 24427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 24437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO >> "$output_objdir/$my_dlsyms" "\ 24457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextern $lt_dlsym_const lt_dlsymlist 24467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_${my_prefix}_LTX_preloaded_symbols[]; 24477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$lt_dlsym_const lt_dlsymlist 24487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_${my_prefix}_LTX_preloaded_symbols[] = 24497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{\ 24507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { \"$my_originator\", (void *) 0 }," 24517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $need_lib_prefix in 24537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet no) 24547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 24567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 24577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 24597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 24607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO >> "$output_objdir/$my_dlsyms" "\ 24617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet {0, (void *) 0} 24627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}; 24637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* This works around a problem in FreeBSD linker */ 24657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef FREEBSD_WORKAROUND 24667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const void *lt_preloaded_setup() { 24677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return lt_${my_prefix}_LTX_preloaded_symbols; 24687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 24697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 24707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __cplusplus 24727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 24737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif\ 24747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 24757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } # !$opt_dry_run 24767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 24777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_flag_for_symtable= 24787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$compile_command " in 24797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -static "*) ;; 24807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 24817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 24827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # compiling the symbol table file with pic_flag works around 24837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # a FreeBSD bug that causes programs to crash when -lm is 24847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # linked before any other PIC object. But we must not use 24857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # pic_flag when linking with -static. The problem exists in 24867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-hpux*) 24907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_flag_for_symtable=" $pic_flag" ;; 24917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 24927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$my_pic_p" != Xno; then 24937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_flag_for_symtable=" $pic_flag" 24947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 24957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 24967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 24977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 24987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 24997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet symtab_cflags= 25007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg in $LTCFLAGS; do 25017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 25027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -pie | -fpie | -fPIE) ;; 25037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) symtab_cflags="$symtab_cflags $arg" ;; 25047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 25067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now compile the dynamic symbol file. 25087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 25097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Clean up the generated files. 25117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 25127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform the symbol file into the correct name. 25147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet symfileobj="$output_objdir/${my_outputname}S.$objext" 25157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 25167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* | *cegcc* ) 25177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$output_objdir/$my_outputname.def"; then 25187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 25217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 25247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 25267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 25327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "unknown suffix for \`$my_dlsyms'" 25337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 25367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We keep going just in case the user didn't refer to 25377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # really was required. 25397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Nullify the symbol file. 25417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 25447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 25457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_win32_libid arg 25477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# return the library type of file 'arg' 25487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 25497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Need a lot of goo to handle *both* DLLs and import libs 25507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Has to be a shell function in order to 'eat' the argument 25517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# that is supplied when $file_magic_command is called. 25527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_win32_libid () 25537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 25547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 25557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_libid_type="unknown" 25567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_fileres=`file -L $1 2>/dev/null` 25577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $win32_fileres in 25587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *ar\ archive\ import\ library*) # definitely import 25597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_libid_type="x86 archive import" 25607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *ar\ archive*) # could be an import, or static 25627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_nmres=`eval $NM -f posix -A $1 | 25657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -n -e ' 25667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 1,100{ 25677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet / I /{ 25687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet s,.*,import, 25697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p 25707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet q 25717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 25727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet }'` 25737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $win32_nmres in 25747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet import*) win32_libid_type="x86 archive import";; 25757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) win32_libid_type="x86 archive static";; 25767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 25787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *DLL*) 25807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_libid_type="x86 DLL" 25817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *executable*) # but shell scripts are "executable" too... 25837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $win32_fileres in 25847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *MS\ Windows\ PE\ Intel*) 25857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet win32_libid_type="x86 DLL" 25867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 25897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 25907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$win32_libid_type" 25917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 25927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 25957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_extract_an_archive dir oldlib 25967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_extract_an_archive () 25977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 25987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 25997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet f_ex_an_ar_dir="$1"; shift 26007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet f_ex_an_ar_oldlib="$1" 26017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 26047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 26057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 26077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 26087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_extract_archives gentop oldlib ... 26117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_extract_archives () 26127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 26137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 26147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_gentop="$1"; shift 26157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_oldlibs=${1+"$@"} 26167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_oldobjs="" 26177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xlib="" 26187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xabs="" 26197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xdir="" 26207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for my_xlib in $my_oldlibs; do 26227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract the objects. 26237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $my_xlib in 26247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) my_xabs=`pwd`"/$my_xlib" ;; 26267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 26277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$my_xlib" 26287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xlib="$func_basename_result" 26297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xlib_u=$my_xlib 26307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while :; do 26317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $extracted_archives " in 26327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $my_xlib_u "*) 26337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $extracted_serial + 1 26347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet extracted_serial=$func_arith_result 26357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xlib_u=lt$extracted_serial-$my_xlib ;; 26367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) break ;; 26377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 26387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 26397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet extracted_archives="$extracted_archives $my_xlib_u" 26407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_xdir="$my_gentop/$my_xlib_u" 26417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mkdir_p "$my_xdir" 26437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 26457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-darwin*) 26467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "Extracting $my_xabs" 26477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do not bother doing anything if just a dry run 26487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 26497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_orig_dir=`pwd` 26507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cd $my_xdir || exit $? 26517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_archive=$my_xabs 26527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_curdir=`pwd` 26537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_base_archive=`basename "$darwin_archive"` 26547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$darwin_arches"; then 26567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_arch= 26587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for darwin_arch in $darwin_arches ; do 26607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cd "$darwin_curdir" 26657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # $darwin_arches 26677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_file= 26707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_files= 26717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for darwin_file in $darwin_filelist; do 26727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $LIPO -create -output "$darwin_file" $darwin_files 26747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # $darwin_filelist 26757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM -rf unfat-$$ 26767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cd "$darwin_orig_dir" 26777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 26787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cd $darwin_orig_dir 26797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_an_archive "$my_xdir" "$my_xabs" 26807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $darwin_arches 26817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } # !$opt_dry_run 26827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 26837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 26847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_an_archive "$my_xdir" "$my_xabs" 26857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 26867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 26877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 26897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives_result="$my_oldobjs" 26917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 26927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 26957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper_part1 [arg=no] 26967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 26977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit the first part of a libtool wrapper script on stdout. 26987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# For more information, see the description associated with 26997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper(), below. 27007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper_part1 () 27017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 27027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part1_arg1=no 27037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1" ; then 27047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part1_arg1=$1 27057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 27067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 27087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#! $SHELL 27097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $output - temporary wrapper script for $objdir/$outputname 27117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 27137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The $output program cannot be directly executed until all the libtool 27147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# libraries that it depends on are installed. 27157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 27167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This wrapper script should never be moved out of the build directory. 27177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If it is, it will not operate correctly. 27187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Sed substitution that helps us do robust quoting. It backslashifies 27207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# metacharacters that are still active within double-quoted strings. 27217c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetXsed='${SED} -e 1s/^X//' 27227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_quote_subst='$sed_quote_subst' 27237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Be Bourne compatible 27257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet emulate sh 27277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet NULLCMD=: 27287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # is contrary to our usage. Disable this feature. 27307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet alias -g '\${1+\"\$@\"}'='\"\$@\"' 27317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet setopt NO_GLOB_SUBST 27327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse 27337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi 27357c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBIN_SH=xpg4; export BIN_SH # for Tru64 27367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetDUALCASE=1; export DUALCASE # for MKS sh 27377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The HP-UX ksh and POSIX shell print the target directory to stdout 27397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if CDPATH is set. 27407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 27417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrelink_command=\"$relink_command\" 27437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This environment variable determines our operation mode. 27457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test \"\$libtool_install_magic\" = \"$magic\"; then 27467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # install mode needs the following variables: 27477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated_by_libtool_version='$macro_version' 27487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_deplibs='$notinst_deplibs' 27497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse 27507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # When we are sourced in execute mode, \$file and \$ECHO are already set. 27517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"\$libtool_execute_magic\" != \"$magic\"; then 27527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ECHO=\"$qecho\" 27537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=\"\$0\" 27547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure echo works. 27557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"X\$1\" = X--no-reexec; then 27567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Discard the --no-reexec flag, and continue. 27577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 27587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Yippee, \$ECHO works! 27607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 27617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 27627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restart under the correct shell, and then maybe \$ECHO will work. 27637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 27657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi\ 27667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 27677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 27687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Find the directory that this script lives in. 27707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test \"x\$thisdir\" = \"x\$file\" && thisdir=. 27727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Follow symbolic links until we get to the real thisdir. 27747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test -n \"\$file\"; do 27767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 27777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If there was a directory component, then change thisdir. 27797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"x\$destdir\" != \"x\$file\"; then 27807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case \"\$destdir\" in 27817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) thisdir=\"\$thisdir/\$destdir\" ;; 27837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 27847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 27857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 27897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 27907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 27917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_wrapper_part1 27927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 27937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper_part2 [arg=no] 27947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 27957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit the second part of a libtool wrapper script on stdout. 27967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# For more information, see the description associated with 27977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper(), below. 27987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper_part2 () 27997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 28007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part2_arg1=no 28017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1" ; then 28027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part2_arg1=$1 28037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Usually 'no', except on cygwin/mingw when embedded into 28087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the cwrapper. 28097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # special case for '.' 28127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"\$thisdir\" = \".\"; then 28137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet thisdir=\`pwd\` 28147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # remove .libs from thisdir 28167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case \"\$thisdir\" in 28177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $objdir ) thisdir=. ;; 28197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 28207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try to get the absolute directory name. 28237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir=\`cd \"\$thisdir\" && pwd\` 28247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n \"\$absdir\" && thisdir=\"\$absdir\" 28257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 28267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" = yes; then 28287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet program=lt-'$outputname'$exeext 28307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progdir=\"\$thisdir/$objdir\" 28317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -f \"\$progdir/\$program\" || 28337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=\"\$\$-\$program\" 28377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -d \"\$progdir\"; then 28397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MKDIR \"\$progdir\" 28407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 28417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM \"\$progdir/\$file\" 28427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi" 28437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # relink executable if necessary 28477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n \"\$relink_command\"; then 28487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 28507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \"\$relink_command_output\" >&2 28517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM \"\$progdir/\$file\" 28527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit 1 28537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { $RM \"\$progdir/\$program\"; 28587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM \"\$progdir/\$file\" 28607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi" 28617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 28627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet program='$outputname' 28647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet progdir=\"\$thisdir/$objdir\" 28657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 28667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f \"\$progdir/\$program\"; then" 28717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Export our shlibpath_var if we have one. 28737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add our own library path to $shlibpath_var 28767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Some systems cannot cope with colon-terminated $shlibpath_var 28797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The second colon is a workaround for a bug in BeOS R4 sed 28807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export $shlibpath_var 28837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 28847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # fixup the dll searchpath if we need to. 28877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dllsearchpath"; then 28887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the dll search path components to the executable PATH 28907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet PATH=$dllsearchpath:\$PATH 28917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 28927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 28937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 28947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 28957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test \"\$libtool_execute_magic\" != \"$magic\"; then 28967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Run the actual program with our arguments. 28977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 28987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 28997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Backslashes separate directories on plain windows 29007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-mingw | *-*-os2* | *-cegcc*) 29017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 29027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 29047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 29057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 29077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 29087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec \"\$progdir/\$program\" \${1+\"\$@\"} 29097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 29107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 29117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 29127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "\ 29137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit 1 29157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 29167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 29177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The program doesn't exist. 29187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit 1 29227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 29237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi\ 29247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet" 29257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 29267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_wrapper_part2 29277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper [arg=no] 29307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 29317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit a libtool wrapper script on stdout. 29327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Don't directly open a file because we may want to 29337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# incorporate the script contents within a cygwin/mingw 29347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# wrapper executable. Must ONLY be called from within 29357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_link because it depends on a number of variables 29367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# set therein. 29377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 29387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# variable will take. If 'yes', then the emitted script 29407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# will assume that the directory in which it is stored is 29417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the $objdir directory. This is a cygwin/mingw-specific 29427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# behavior. 29437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper () 29447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 29457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_arg1=no 29467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1" ; then 29477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_arg1=$1 29487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 29497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # split this up so that func_emit_cwrapperexe_src 29517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # can call each part independently. 29527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 29557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 29577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_to_host_path arg 29587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 29597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Convert paths to host format when used with build tools. 29607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Intended for use with "native" mingw (where libtool itself 29617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is running under the msys shell), or in the following cross- 29627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# build environments: 29637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $build $host 29647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# mingw (msys) mingw [e.g. native] 29657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# cygwin mingw 29667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# *nix + wine mingw 29677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# where wine is equipped with the `winepath' executable. 29687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# In the native mingw case, the (msys) shell automatically 29697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# converts paths for any non-msys applications it launches, 29707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but that facility isn't available from inside the cwrapper. 29717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Similar accommodations are necessary for $host mingw and 29727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $build cygwin. Calling this function does no harm for other 29737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $host/$build combinations not listed above. 29747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 29757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is the path (on $build) that should be converted to 29767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the proper representation for $host. The result is stored 29777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in $func_to_host_path_result. 29787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_to_host_path () 29797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 29807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result="$1" 29817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1" ; then 29827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 29837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *mingw* ) 29847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $build in 29867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *mingw* ) # actually, msys 29877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # awkward: cmd appends spaces to result 29887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_naive_backslashify"` 29937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 29947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* ) 29957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_tmp1=`cygpath -w "$1"` 29967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_naive_backslashify"` 29987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 29997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) 30007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Unfortunately, winepath does not exit with a non-zero 30017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # error code, so we are forced to check the contents of 30027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # stdout. On the other hand, if the command is not 30037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # found, the shell will set an exit code of 127 and print 30047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # *an error message* to stdout. So we must check for both 30057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # error code of zero AND non-empty stdout, which explains 30067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the odd construction: 30077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_naive_backslashify"` 30117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 30127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Allow warning below. 30137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result="" 30147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 30167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 30177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$func_to_host_path_result" ; then 30187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "Could not determine host path corresponding to" 30197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error " '$1'" 30207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "Continuing, but uninstalled executables may not work." 30217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Fallback: 30227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path_result="$1" 30237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 30257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 30267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 30287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_to_host_path 30297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 30307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_to_host_pathlist arg 30317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 30327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Convert pathlists to host format when used with build tools. 30337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# See func_to_host_path(), above. This function supports the 30347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# following $build/$host combinations (but does no harm for 30357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# combinations not listed here): 30367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $build $host 30377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# mingw (msys) mingw [e.g. native] 30387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# cygwin mingw 30397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# *nix + wine mingw 30407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 30417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Path separators are also converted from $build format to 30427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $host format. If ARG begins or ends with a path separator 30437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# character, it is preserved (but converted to $host format) 30447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# on output. 30457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 30467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is a pathlist (on $build) that should be converted to 30477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the proper representation on $host. The result is stored 30487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in $func_to_host_pathlist_result. 30497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_to_host_pathlist () 30507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 30517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result="$1" 30527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$1" ; then 30537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 30547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *mingw* ) 30557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remove leading and trailing path separator characters from 30577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # ARG. msys behavior is inconsistent here, cygpath turns them 30587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # into '.;' and ';.', and winepath ignores them completely. 30597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_tmp2="$1" 30607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Once set for this call, this variable should not be 30617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # reassigned. It is used in tha fallback case. 30627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e 's|^:*||' -e 's|:*$||'` 30647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $build in 30657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *mingw* ) # Actually, msys. 30667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Awkward: cmd appends spaces to result. 30677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_naive_backslashify"` 30727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 30737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* ) 30747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_sed_naive_backslashify"` 30777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 30787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) 30797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # unfortunately, winepath doesn't convert pathlists 30807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result="" 30817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_oldIFS=$IFS 30827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=: 30837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=$func_to_host_pathlist_oldIFS 30857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$func_to_host_pathlist_f" ; then 30867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_path "$func_to_host_pathlist_f" 30877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$func_to_host_path_result" ; then 30887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$func_to_host_pathlist_result" ; then 30897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result="$func_to_host_path_result" 30907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 30917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 30957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=: 30967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 30977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS=$func_to_host_pathlist_oldIFS 30987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 30997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 31007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$func_to_host_pathlist_result" ; then 31017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "Could not determine the host path(s) corresponding to" 31027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error " '$1'" 31037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "Continuing, but uninstalled executables may not work." 31047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Fallback. This may break if $1 contains DOS-style drive 31057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # specifications. The fix is not to complicate the expression 31067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # below, but for the user to provide a working wine installation 31077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # with winepath so that path translation in the cross-to-mingw 31087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # case works properly. 31097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_replace_pathsep_nix_to_dos="s|:|;|g" 31107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e "$lt_replace_pathsep_nix_to_dos"` 31127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 31137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now, add the leading and trailing path separators back 31147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$1" in 31157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 31177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 31187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$1" in 31197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 31217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 31227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 31237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 31247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 31257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 31267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_to_host_pathlist 31277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_cwrapperexe_src 31297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# emit the source code for a wrapper executable on stdout 31307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Must ONLY be called from within func_mode_link because 31317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# it depends on a number of variable set therein. 31327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_cwrapperexe_src () 31337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 31347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 31357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet The $output program cannot be directly executed until all the libtool 31407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libraries that it depends on are installed. 31417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet This wrapper executable should never be moved out of the build directory. 31437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet If it is, it will not operate correctly. 31447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet Currently, it simply execs the wrapper *script* "$SHELL $output", 31467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet but could eventually absorb all of the scripts functionality and 31477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exec $objdir/$outputname directly. 31487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*/ 31497c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 31507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 31517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdio.h> 31527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdlib.h> 31537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef _MSC_VER 31547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <direct.h> 31557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <process.h> 31567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <io.h> 31577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define setmode _setmode 31587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else 31597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <unistd.h> 31607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <stdint.h> 31617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifdef __CYGWIN__ 31627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <io.h> 31637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define HAVE_SETENV 31647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifdef __STRICT_ANSI__ 31657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *realpath (const char *, char *); 31667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint putenv (char *); 31677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint setenv (const char *, const char *, int); 31687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif 31697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif 31707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 31717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <malloc.h> 31727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdarg.h> 31737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <assert.h> 31747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <string.h> 31757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <ctype.h> 31767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <errno.h> 31777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <fcntl.h> 31787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <sys/stat.h> 31797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined(PATH_MAX) 31817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX PATH_MAX 31827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#elif defined(MAXPATHLEN) 31837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX MAXPATHLEN 31847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else 31857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX 1024 31867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 31877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_IXOTH 31897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXOTH 0 31907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 31917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_IXGRP 31927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXGRP 0 31937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 31947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 31957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef _MSC_VER 31967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXUSR _S_IEXEC 31977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define stat _stat 31987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef _INTPTR_T_DEFINED 31997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define intptr_t int 32007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif 32017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef DIR_SEPARATOR 32047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define DIR_SEPARATOR '/' 32057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define PATH_SEPARATOR ':' 32067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet defined (__OS2__) 32107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define HAVE_DOS_BASED_FILE_SYSTEM 32117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "wb" 32127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef DIR_SEPARATOR_2 32137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define DIR_SEPARATOR_2 '\\' 32147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif 32157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef PATH_SEPARATOR_2 32167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define PATH_SEPARATOR_2 ';' 32177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif 32187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef DIR_SEPARATOR_2 32217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else /* DIR_SEPARATOR_2 */ 32237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_DIR_SEPARATOR(ch) \ 32247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif /* DIR_SEPARATOR_2 */ 32267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef PATH_SEPARATOR_2 32287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else /* PATH_SEPARATOR_2 */ 32307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif /* PATH_SEPARATOR_2 */ 32327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __CYGWIN__ 32347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "wb" 32357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef FOPEN_WB 32387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "w" 32397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef _O_BINARY 32417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define _O_BINARY 0 32427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define XFREE(stale) do { \ 32467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (stale) { free ((void *) stale); stale = 0; } \ 32477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} while (0) 32487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#undef LTWRAPPER_DEBUGPRINTF 32507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined DEBUGWRAPPER 32517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic void 32537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetltwrapper_debugprintf (const char *fmt, ...) 32547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 32557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_list args; 32567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_start (args, fmt); 32577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (void) vfprintf (stderr, fmt, args); 32587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_end (args); 32597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 32607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else 32617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LTWRAPPER_DEBUGPRINTF(args) 32627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 32637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char *program_name = NULL; 32657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid *xmalloc (size_t num); 32677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *xstrdup (const char *string); 32687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char *base_name (const char *name); 32697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *find_executable (const char *wrapper); 32707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *chase_symlinks (const char *pathspec); 32717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint make_executable (const char *path); 32727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint check_executable (const char *path); 32737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *strendzap (char *str, const char *pat); 32747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_fatal (const char *message, ...); 32757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_setenv (const char *name, const char *value); 32767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 32777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_set (const char *arg); 32787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_prepend (const char *arg); 32797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_append (const char *arg); 32807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint lt_split_name_value (const char *arg, char** name, char** value); 32817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_update_exe_path (const char *name, const char *value); 32827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_update_lib_path (const char *name, const char *value); 32837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *script_text_part1 = 32857c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 32867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part1 yes | 32887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e 's/\([\\"]\)/\\\1/g' \ 32897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -e 's/^/ "/' -e 's/$/\\n"/' 32907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet echo ";" 32917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 32927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 32937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *script_text_part2 = 32947c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 32957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper_part2 yes | 32967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e 's/\([\\"]\)/\\\1/g' \ 32977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -e 's/^/ "/' -e 's/$/\\n"/' 32987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet echo ";" 32997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 33017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * MAGIC_EXE = "$magic_exe"; 33027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 33037c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist "$temp_rpath" 33077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 33087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33097c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 33117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 33127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VALUE = ""; 33137c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 33157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dllsearchpath"; then 33177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_to_host_pathlist "$dllsearchpath:" 33187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 33197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VARNAME = "PATH"; 33207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33217c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 33237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 33247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VARNAME = ""; 33257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VALUE = ""; 33267c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 33287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" = yes; then 33307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 33317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 33347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 33357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 33387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 33417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define LTWRAPPER_OPTION_PREFIX "--lt-" 33437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint 33637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmain (int argc, char *argv[]) 33647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 33657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char **newargz; 33667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int newargc; 33677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *tmp_pathspec; 33687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *actual_cwrapper_path; 33697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *actual_cwrapper_name; 33707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *target_name; 33717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *lt_argv_zero; 33727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet intptr_t rval = 127; 33737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int i; 33757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet program_name = (char *) xstrdup (base_name (argv[0])); 33777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* very simple arg parsing; don't want to rely on getopt */ 33817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (i = 1; i < argc; i++) 33827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 33837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strcmp (argv[i], dumpscript_opt) == 0) 33847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 33857c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 33867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$host" in 33877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *mingw* | *cygwin* ) 33887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # make stdout use "unix" line endings 33897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet echo " setmode(1,_O_BINARY);" 33907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 33917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 33927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 33937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 33947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet printf ("%s", script_text_part1); 33957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet printf ("%s", script_text_part2); 33967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 0; 33977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 33987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 33997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newargz = XMALLOC (char *, argc + 1); 34017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = find_executable (argv[0]); 34027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (tmp_pathspec == NULL) 34037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("Couldn't find %s", argv[0]); 34047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec)); 34067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet actual_cwrapper_path)); 34107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (tmp_pathspec); 34117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strendzap (actual_cwrapper_path, actual_cwrapper_name); 34147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* wrapper name transforms */ 34167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strendzap (actual_cwrapper_name, ".exe"); 34177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (actual_cwrapper_name); 34197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet actual_cwrapper_name = tmp_pathspec; 34207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = 0; 34217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* target_name transforms -- use actual target program name; might have lt- prefix */ 34237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strendzap (target_name, ".exe"); 34257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (target_name); 34277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet target_name = tmp_pathspec; 34287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = 0; 34297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet target_name)); 34327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 34337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<EOF 34357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newargz[0] = 34367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XMALLOC (char, (strlen (actual_cwrapper_path) + 34377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (newargz[0], actual_cwrapper_path); 34397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcat (newargz[0], "$objdir"); 34407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcat (newargz[0], "/"); 34417c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 34427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 34447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* stop here, and copy so we don't have to do this twice */ 34457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = xstrdup (newargz[0]); 34467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcat (newargz[0], actual_cwrapper_name); 34497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* DO want the lt- prefix here if it exists, so use target_name */ 34517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (tmp_pathspec); 34537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = NULL; 34547c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 34557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host_os in 34577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet mingw*) 34587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 34597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char* p; 34617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while ((p = strchr (newargz[0], '\\')) != NULL) 34627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *p = '/'; 34647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 34657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *p = '/'; 34687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 34697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 34707c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 34717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 34727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 34737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 34757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (target_name); 34767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (actual_cwrapper_path); 34777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (actual_cwrapper_name); 34787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 34837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 34847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newargc=0; 34857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (i = 1; i < argc; i++) 34867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (argv[i][env_set_opt_len] == '=') 34907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p = argv[i] + env_set_opt_len + 1; 34927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_set (p); 34937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 34947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 34967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_set (argv[++i]); /* don't copy */ 34977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 34987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 34997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("%s missing required argument", env_set_opt); 35007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue; 35017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (argv[i][env_prepend_opt_len] == '=') 35057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p = argv[i] + env_prepend_opt_len + 1; 35077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_prepend (p); 35087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 35147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("%s missing required argument", env_prepend_opt); 35157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue; 35167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (argv[i][env_append_opt_len] == '=') 35207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p = argv[i] + env_append_opt_len + 1; 35227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_append (p); 35237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_opt_process_env_append (argv[++i]); /* don't copy */ 35277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 35297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("%s missing required argument", env_append_opt); 35307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue; 35317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet namespace, but it is not one of the ones we know about and 35367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet have already dealt with, above (inluding dump-script), then 35377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet report an error. Otherwise, targets might begin to believe 35387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet namespace. The first time any user complains about this, we'll 35407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet or a configure.ac-settable value. 35427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */ 35437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("Unrecognized option in %s namespace: '%s'", 35447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ltwrapper_option_prefix, argv[i]); 35457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* otherwise ... */ 35477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newargz[++newargc] = xstrdup (argv[i]); 35487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newargz[++newargc] = NULL; 35507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (i = 0; i < newargc; i++) 35537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35577c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 35587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host_os in 35607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet mingw*) 35617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 35627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* execv doesn't actually work on mingw as expected on unix */ 35637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (rval == -1) 35657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 35667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* failed to start process */ 35677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 127; 35697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 35707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return rval; 35717c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 35727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 35737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 35747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 35757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet execv (lt_argv_zero, newargz); 35767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return rval; /* =127, but avoids unused variable warning */ 35777c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 35787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 35797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 35807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat <<"EOF" 35827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 35837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid * 35857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetxmalloc (size_t num) 35867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 35877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet void *p = (void *) malloc (num); 35887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (!p) 35897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("Memory exhausted"); 35907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return p; 35927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 35937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 35947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar * 35957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetxstrdup (const char *string) 35967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 35977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet string) : NULL; 35997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 36007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * 36027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbase_name (const char *name) 36037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 36047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *base; 36057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* Skip over the disk name in MSDOS pathnames. */ 36087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name += 2; 36107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 36117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (base = name; *name; name++) 36137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (IS_DIR_SEPARATOR (*name)) 36147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet base = name + 1; 36157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return base; 36167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 36177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint 36197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcheck_executable (const char *path) 36207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 36217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet struct stat st; 36227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path ? (*path ? path : "EMPTY!") : "NULL!")); 36257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ((!path) || (!*path)) 36267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 0; 36277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ((stat (path, &st) >= 0) 36297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 1; 36317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 36327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 0; 36337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 36347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint 36367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmake_executable (const char *path) 36377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 36387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int rval = 0; 36397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet struct stat st; 36407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path ? (*path ? path : "EMPTY!") : "NULL!")); 36437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ((!path) || (!*path)) 36447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 0; 36457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (stat (path, &st) >= 0) 36477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 36487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 36507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return rval; 36517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 36527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* Searches for the full path of the wrapper. Returns 36547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newly allocated full path name if found, NULL otherwise 36557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet Does not chase symlinks, even on platforms that support them. 36567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*/ 36577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar * 36587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfind_executable (const char *wrapper) 36597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 36607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int has_slash = 0; 36617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p; 36627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p_next; 36637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* static buffer for getcwd */ 36647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char tmp[LT_PATHMAX + 1]; 36657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int tmp_len; 36667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *concat_name; 36677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 36707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ((wrapper == NULL) || (*wrapper == '\0')) 36727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return NULL; 36737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* Absolute path? */ 36757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 36787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name = xstrdup (wrapper); 36797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (check_executable (concat_name)) 36807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return concat_name; 36817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (concat_name); 36827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 36837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 36847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 36857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 36867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (IS_DIR_SEPARATOR (wrapper[0])) 36877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 36887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name = xstrdup (wrapper); 36897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (check_executable (concat_name)) 36907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return concat_name; 36917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (concat_name); 36927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 36937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 36957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 36967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 36977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (p = wrapper; *p; p++) 36987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (*p == '/') 36997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet has_slash = 1; 37017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break; 37027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (!has_slash) 37047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* no slashes; search PATH */ 37067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *path = getenv ("PATH"); 37077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (path != NULL) 37087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (p = path; *p; p = p_next) 37107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *q; 37127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet size_t p_len; 37137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for (q = p; *q; q++) 37147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (IS_PATH_SEPARATOR (*q)) 37157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break; 37167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p_len = q - p; 37177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p_next = (*q == '\0' ? q : q + 1); 37187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (p_len == 0) 37197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* empty path: current directory */ 37217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (getcwd (tmp, LT_PATHMAX) == NULL) 37227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("getcwd failed"); 37237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_len = strlen (tmp); 37247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name = 37257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet memcpy (concat_name, tmp, tmp_len); 37277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name[tmp_len] = '/'; 37287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (concat_name + tmp_len + 1, wrapper); 37297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 37317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name = 37337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet memcpy (concat_name, p, p_len); 37357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name[p_len] = '/'; 37367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (concat_name + p_len + 1, wrapper); 37377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (check_executable (concat_name)) 37397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return concat_name; 37407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (concat_name); 37417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* not found in PATH; assume curdir */ 37447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* Relative path | not found in path: prepend cwd */ 37467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (getcwd (tmp, LT_PATHMAX) == NULL) 37477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("getcwd failed"); 37487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_len = strlen (tmp); 37497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet memcpy (concat_name, tmp, tmp_len); 37517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_name[tmp_len] = '/'; 37527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (concat_name + tmp_len + 1, wrapper); 37537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 37547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (check_executable (concat_name)) 37557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return concat_name; 37567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (concat_name); 37577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return NULL; 37587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 37597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 37607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar * 37617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchase_symlinks (const char *pathspec) 37627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 37637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_ISLNK 37647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return xstrdup (pathspec); 37657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else 37667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char buf[LT_PATHMAX]; 37677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet struct stat s; 37687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *tmp_pathspec = xstrdup (pathspec); 37697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *p; 37707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int has_symlinks = 0; 37717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while (strlen (tmp_pathspec) && !has_symlinks) 37727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec)); 37757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (lstat (tmp_pathspec, &s) == 0) 37767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (S_ISLNK (s.st_mode) != 0) 37787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet has_symlinks = 1; 37807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break; 37817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 37837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* search backwards for last DIR_SEPARATOR */ 37847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p--; 37877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* no more DIR_SEPARATORS left */ 37907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break; 37917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *p = '\0'; 37937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 37957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 37967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *errstr = strerror (errno); 37977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 37997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (tmp_pathspec); 38017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (!has_symlinks) 38037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return xstrdup (pathspec); 38057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_pathspec = realpath (pathspec, buf); 38087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (tmp_pathspec == 0) 38097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("Could not follow symlinks for %s", pathspec); 38117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return xstrdup (tmp_pathspec); 38137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 38147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 38157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar * 38177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstrendzap (char *str, const char *pat) 38187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 38197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet size_t len, patlen; 38207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet assert (str != NULL); 38227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet assert (pat != NULL); 38237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len = strlen (str); 38257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet patlen = strlen (pat); 38267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (patlen <= len) 38287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet str += len - patlen; 38307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (strcmp (str, pat) == 0) 38317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *str = '\0'; 38327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return str; 38347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 38357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic void 38377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_error_core (int exit_status, const char *mode, 38387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *message, va_list ap) 38397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 38407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fprintf (stderr, "%s: %s: ", program_name, mode); 38417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vfprintf (stderr, message, ap); 38427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fprintf (stderr, ".\n"); 38437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (exit_status >= 0) 38457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit (exit_status); 38467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 38477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 38497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_fatal (const char *message, ...) 38507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 38517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_list ap; 38527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_start (ap, message); 38537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet va_end (ap); 38557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 38567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 38587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_setenv (const char *name, const char *value) 38597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 38607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (name ? name : "<NULL>"), 38627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (value ? value : "<NULL>"))); 38637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef HAVE_SETENV 38657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* always make a copy, for consistency with !HAVE_SETENV */ 38667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *str = xstrdup (value); 38677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet setenv (name, str, 1); 38687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else 38697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int len = strlen (name) + 1 + strlen (value) + 1; 38707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *str = XMALLOC (char, len); 38717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sprintf (str, "%s=%s", name, value); 38727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (putenv (str) != EXIT_SUCCESS) 38737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (str); 38757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif 38777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 38797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 38807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar * 38817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_extend_str (const char *orig_value, const char *add, int to_end) 38827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 38837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *new_value; 38847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (orig_value && *orig_value) 38857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int orig_value_len = strlen (orig_value); 38877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int add_len = strlen (add); 38887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_value = XMALLOC (char, add_len + orig_value_len + 1); 38897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (to_end) 38907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (new_value, orig_value); 38927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (new_value + orig_value_len, add); 38937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 38957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 38967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (new_value, add); 38977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strcpy (new_value + add_len, orig_value); 38987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 38997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 39007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 39017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 39027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_value = xstrdup (add); 39037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 39047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return new_value; 39057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 39067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint 39087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_split_name_value (const char *arg, char** name, char** value) 39097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 39107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet const char *p; 39117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int len; 39127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (!arg || !*arg) 39137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 1; 39147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet p = strchr (arg, (int)'='); 39167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (!p) 39187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 1; 39197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *value = xstrdup (++p); 39217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len = strlen (arg) - strlen (*value); 39237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *name = XMALLOC (char, len); 39247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet strncpy (*name, arg, len-1); 39257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (*name)[len - 1] = '\0'; 39267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet return 0; 39287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 39297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 39317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_set (const char *arg) 39327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 39337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *name = NULL; 39347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *value = NULL; 39357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (lt_split_name_value (arg, &name, &value) != 0) 39377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 39387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 39427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv (name, value); 39447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 39477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 39497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_prepend (const char *arg) 39507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 39517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *name = NULL; 39527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *value = NULL; 39537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *new_value = NULL; 39547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (lt_split_name_value (arg, &name, &value) != 0) 39567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 39577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 39617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_value = lt_extend_str (getenv (name), value, 0); 39637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv (name, new_value); 39647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (new_value); 39657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 39687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 39707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_append (const char *arg) 39717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 39727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *name = NULL; 39737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *value = NULL; 39747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *new_value = NULL; 39757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (lt_split_name_value (arg, &name, &value) != 0) 39777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 39787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 39827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_value = lt_extend_str (getenv (name), value, 1); 39847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv (name, new_value); 39857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (new_value); 39867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (name); 39877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (value); 39887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 39897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 39917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_update_exe_path (const char *name, const char *value) 39927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 39937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (name ? name : "<NULL>"), 39957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (value ? value : "<NULL>"))); 39967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 39977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (name && *name && value && *value) 39987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 39997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *new_value = lt_extend_str (getenv (name), value, 0); 40007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet /* some systems can't cope with a ':'-terminated path #' */ 40017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int len = strlen (new_value); 40027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 40047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_value[len-1] = '\0'; 40057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 40067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv (name, new_value); 40077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (new_value); 40087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 40097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 40107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid 40127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_update_lib_path (const char *name, const char *value) 40137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 40147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (name ? name : "<NULL>"), 40167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet (value ? value : "<NULL>"))); 40177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (name && *name && value && *value) 40197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { 40207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet char *new_value = lt_extend_str (getenv (name), value, 0); 40217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_setenv (name, new_value); 40227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet XFREE (new_value); 40237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 40247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 40257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40277c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 40287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 40297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_cwrapperexe_src 40307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_link arg... 40327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_link () 40337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 40347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 40357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 40367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # It is impossible to link a dll without this setting, and 40387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # we shouldn't force the makefile maintainer to figure out 40397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # which system we are compiling for in order to pass an extra 40407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # flag for every libtool invocation. 40417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # allow_undefined=no 40427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: Unfortunately, there are problems with the above when trying 40447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # to make a dll which has undefined symbols, in which case not 40457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # even a static library is built. For now, we need to specify 40467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -no-undefined on the libtool link line when we can be certain 40477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # that all symbols are satisfied, otherwise we get a static library. 40487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet allow_undefined=yes 40497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 40507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 40517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet allow_undefined=yes 40527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 40537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 40547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libtool_args=$nonopt 40557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet base_compile="$nonopt $@" 40567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=$nonopt 40577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=$nonopt 40587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_rpath= 40607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_rpath= 40617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_shlibpath= 40627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_shlibpath= 40637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet convenience= 40647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_convenience= 40657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs= 40667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_deplibs= 40677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags= 40687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags= 40697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dllsearchpath= 40707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_search_path=`pwd` 40717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet inst_prefix_dir= 40727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_inherited_linker_flags= 40737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 40747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet avoid_version=no 40757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles= 40767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles= 40777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlself=no 40787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_dynamic=no 40797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols= 40807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols_regex= 40817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated= 40827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs= 40837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ltlibs= 40847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet module=no 40857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet no_install=no 40867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objs= 40877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_objects= 40887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet precious_files_regex= 40897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prefer_static_libs=no 40907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet preload=no 40917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 40927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prevarg= 40937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release= 40947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 40957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xrpath= 40967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet perm_rpath= 40977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet temp_rpath= 40987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet thread_safe=no 40997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vinfo= 41007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vinfo_number=no 41017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet weak_libs= 41027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet single_module="${wl}-single_module" 41037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_infer_tag $base_compile 41047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 41057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need to know -static, to get the right output filenames. 41067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg 41077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 41087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 41097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared) 41107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_libtool_libs" != yes && \ 41117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "can not build a shared library" 41127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=no 41137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 41147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -all-static | -static | -static-libtool-libs) 41167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 41177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -all-static) 41187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "complete static linking is impossible in this configuration" 41207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$link_static_flag"; then 41227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopen_self=$dlopen_self_static 41237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prefer_static_libs=yes 41257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static) 41277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_flag" && test -n "$link_static_flag"; then 41287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopen_self=$dlopen_self_static 41297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prefer_static_libs=built 41317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static-libtool-libs) 41337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_flag" && test -n "$link_static_flag"; then 41347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopen_self=$dlopen_self_static 41357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prefer_static_libs=yes 41377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 41397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 41407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 41417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 41427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 41447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 41457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 41467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # See if our shared archives depend on static archives. 41477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$old_archive_from_new_cmds" && build_old_libs=yes 41487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 41497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Go through the arguments, transforming them on the way. 41507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test "$#" -gt 0; do 41517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$1" 41527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 41537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 41547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet qarg=$func_quote_for_eval_unquoted_result 41557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append libtool_args " $func_quote_for_eval_result" 41567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 41577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the previous option needs an argument, assign it. 41587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$prev"; then 41597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $prev in 41607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output) 41617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " @OUTPUT@" 41627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " @OUTPUT@" 41637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 41657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 41667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $prev in 41677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles|dlprefiles) 41687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$preload" = no; then 41697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the symbol object into the linking commands. 41707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " @SYMFILE@" 41717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " @SYMFILE@" 41727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet preload=yes 41737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 41757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la | *.lo) ;; # We handle these cases below. 41767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet force) 41777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$dlself" = no; then 41787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlself=needless 41797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_dynamic=yes 41807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 41827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 41837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet self) 41857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlprefiles; then 41867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlself=yes 41877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlself=yes 41897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 41907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlself=needless 41917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_dynamic=yes 41927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 41937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 41947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 41957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 41967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 41977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlfiles; then 41987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$dlfiles $arg" 41997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 42007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$dlprefiles $arg" 42017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 42067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet expsyms) 42087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols="$arg" 42097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$arg" \ 42107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet || func_fatal_error "symbol file \`$arg' does not exist" 42117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet expsyms_regex) 42157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols_regex="$arg" 42167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet framework) 42207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 42217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-darwin*) 42227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$deplibs " in 42237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $qarg.ltframework "*) ;; 42247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 42277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 42297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet inst_prefix) 42337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet inst_prefix_dir="$arg" 42347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 42377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objectlist) 42387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$arg"; then 42397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_arg=$arg 42407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet moreargs= 42417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for fil in `cat "$save_arg"` 42427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 42437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# moreargs="$moreargs $fil" 42447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$fil 42457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A libtool-controlled object. 42467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that this really is a libtool object. 42487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_lalib_unsafe_p "$arg"; then 42497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object= 42507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object= 42517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Read the .lo file 42537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$arg" 42547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_object" || 42567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$non_pic_object" || 42577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$pic_object" = none && 42587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$non_pic_object" = none; then 42597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find name of object for \`$arg'" 42607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract subdirectory from the argument. 42637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$arg" "/" "" 42647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xdir="$func_dirname_result" 42657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pic_object" != none; then 42677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepend the subdirectory the object is found in. 42687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object="$xdir$pic_object" 42697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlfiles; then 42717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$dlfiles $pic_object" 42737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 42757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 42767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If libtool objects are unsupported, then we need to preload. 42777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=dlprefiles 42787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # CHECK ME: I think I busted this. -Ossama 42827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlprefiles; then 42837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Preload the old-style object. 42847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$dlprefiles $pic_object" 42857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 42867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A PIC object. 42897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append libobjs " $pic_object" 42907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$pic_object" 42917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 42927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Non-PIC object. 42947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$non_pic_object" != none; then 42957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepend the subdirectory the object is found in. 42967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object="$xdir$non_pic_object" 42977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 42987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A standard non-PIC object 42997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 43007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_object" || test "$pic_object" = none ; then 43017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$non_pic_object" 43027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 43047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the PIC object exists, use it instead. 43057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $xdir was prepended to $pic_object above. 43067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object="$pic_object" 43077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 43087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 43107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only an error if not doing a dry-run. 43117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_dry_run; then 43127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract subdirectory from the argument. 43137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$arg" "/" "" 43147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xdir="$func_dirname_result" 43157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 43167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lo2o "$arg" 43177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object=$xdir$objdir/$func_lo2o_result 43187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object=$xdir$func_lo2o_result 43197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append libobjs " $pic_object" 43207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 43217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 43227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$arg' is not a valid libtool object" 43237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 43267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 43277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "link input file \`$arg' does not exist" 43287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$save_arg 43307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet precious_regex) 43347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet precious_files_regex="$arg" 43357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release) 43397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release="-$arg" 43407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath | xrpath) 43447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need an absolute path. 43457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 43467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) ;; 43477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 43487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "only absolute run-paths are allowed" 43497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 43517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = rpath; then 43527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$rpath " in 43537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $arg "*) ;; 43547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) rpath="$rpath $arg" ;; 43557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 43567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 43577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$xrpath " in 43587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $arg "*) ;; 43597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) xrpath="$xrpath $arg" ;; 43607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 43617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 43627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shrext) 43667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shrext_cmds="$arg" 43677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet weak) 43717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet weak_libs="$weak_libs $arg" 43727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xcclinker) 43767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags="$linker_flags $qarg" 43777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $qarg" 43787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $qarg" 43807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $qarg" 43817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xcompiler) 43847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $qarg" 43857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $qarg" 43877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $qarg" 43887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xlinker) 43917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags="$linker_flags $qarg" 43927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $wl$qarg" 43937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 43947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $wl$qarg" 43957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $wl$qarg" 43967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 43977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 43987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 43997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$prev=\"\$arg\"" 44007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 44017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 44047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # test -n "$prev" 44057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prevarg="$arg" 44077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 44097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -all-static) 44107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$link_static_flag"; then 44117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # See comment for -static flag below, for more details. 44127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $link_static_flag" 44137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $link_static_flag" 44147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 44157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -allow-undefined) 44197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: remove this flag sometime in the future. 44207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -avoid-version) 44247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet avoid_version=yes 44257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlopen) 44297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=dlfiles 44307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -dlpreopen) 44347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=dlprefiles 44357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -export-dynamic) 44397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_dynamic=yes 44407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -export-symbols | -export-symbols-regex) 44447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "more than one -exported-symbols argument is not allowed" 44467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 44477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$arg" = "X-export-symbols"; then 44487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=expsyms 44497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 44507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=expsyms_regex 44517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 44527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -framework) 44567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=framework 44577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -inst-prefix-dir) 44617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=inst_prefix 44627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # so, if we see these flags be careful not to treat them like -L 44677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L[A-Z][A-Z]*:*) 44687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $with_gcc/$host in 44697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet no/*-*-irix* | /*-*-irix*) 44707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 44717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 44727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 44747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 44757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 44777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) 44787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-L' '' "$arg" 44797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir=$func_stripname_result 44807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dir"; then 44817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$#" -gt 0; then 44827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "require no space between \`-L' and \`$1'" 44837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 44847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "need path for \`-L' option" 44857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 44867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 44877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need an absolute path. 44887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $dir in 44897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) ;; 44907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 44917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir=`cd "$dir" && pwd` 44927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$absdir" && \ 44937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot determine absolute directory name of \`$dir'" 44947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$absdir" 44957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 44967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 44977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$deplibs " in 44987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -L$dir "*) ;; 44997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 45007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs -L$dir" 45017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_search_path="$lib_search_path $dir" 45027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 45057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$dllsearchpath: in 45087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$dir:"*) ;; 45097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ::) dllsearchpath=$dir;; 45107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dllsearchpath="$dllsearchpath:$dir";; 45117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$dllsearchpath: in 45137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$testbindir:"*) ;; 45147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ::) dllsearchpath=$testbindir;; 45157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dllsearchpath="$dllsearchpath:$testbindir";; 45167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 45237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 45257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # These systems don't actually have a C or math library (as such) 45277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-os2*) 45307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # These systems don't actually have a C library (as such) 45317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$arg" = "X-lc" && continue 45327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do not include libc due to us having libc/libc_r. 45357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$arg" = "X-lc" && continue 45367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-rhapsody* | *-*-darwin1.[012]) 45387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Rhapsody C and math libraries are in the System framework 45397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs System.ltframework" 45407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sco3.2v5* | *-*-sco5v6*) 45437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Causes problems with __ctype 45447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$arg" = "X-lc" && continue 45457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Compiler inserts libc in the correct place for threads to work 45487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$arg" = "X-lc" && continue 45497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "X$arg" = "X-lc_r"; then 45527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 45537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do not include libc_r directly, use -pthread flag. 45557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 45597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs $arg" 45607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -module) 45647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet module=yes 45657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # classes, name mangling, and exception handling. 45707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Darwin uses the -arch flag to determine output architecture. 45717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -model|-arch|-isysroot) 45727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $arg" 45737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 45747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 45757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=xcompiler 45767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $arg" 45817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 45827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 45837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$new_inherited_linker_flags " in 45847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $arg "*) ;; 45857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 45877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -multi_module) 45917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet single_module="${wl}-multi_module" 45927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 45957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-fast-install) 45967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fast_install=no 45977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 45987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 45997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-install) 46017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 46027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The PATH hackery in wrapper scripts is required on Windows 46047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # and Darwin in order for the loader to find any dlls it needs. 46057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-no-install' is ignored for $host" 46067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "assuming \`-no-fast-install' instead" 46077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fast_install=no 46087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) no_install=yes ;; 46107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 46117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -no-undefined) 46157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet allow_undefined=no 46167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -objectlist) 46207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=objectlist 46217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -o) prev=output ;; 46257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -precious-files-regex) 46277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=precious_regex 46287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -release) 46327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=release 46337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -rpath) 46377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=rpath 46387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R) 46427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=xrpath 46437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R*) 46477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-R' '' "$arg" 46487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir=$func_stripname_result 46497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need an absolute path. 46507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $dir in 46517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) ;; 46527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 46537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "only absolute run-paths are allowed" 46547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 46567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$xrpath " in 46577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $dir "*) ;; 46587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) xrpath="$xrpath $dir" ;; 46597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 46607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shared) 46647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The effects of -shared are defined in a previous loop. 46657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -shrext) 46697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=shrext 46707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -static | -static-libtool-libs) 46747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The effects of -static are defined in a previous loop. 46757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We used to do the same as -all-static on platforms that 46767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # didn't have a PIC flag, but the assumption that the effects 46777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # would be equivalent was wrong. It would break on at least 46787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Digital Unix and AIX. 46797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -thread-safe) 46837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet thread_safe=yes 46847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -version-info) 46887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=vinfo 46897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -version-number) 46937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=vinfo 46947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vinfo_number=yes 46957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 46967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 46977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 46987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -weak) 46997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=weak 47007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 47017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Wc,*) 47047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-Wc,' '' "$arg" 47057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet args=$func_stripname_result 47067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg= 47077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS=',' 47087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for flag in $args; do 47097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 47107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$flag" 47117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$arg $wl$func_quote_for_eval_result" 47127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $func_quote_for_eval_result" 47137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 47147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 47157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname ' ' '' "$arg" 47167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$func_stripname_result 47177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Wl,*) 47207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-Wl,' '' "$arg" 47217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet args=$func_stripname_result 47227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg= 47237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS=',' 47247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for flag in $args; do 47257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 47267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$flag" 47277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$arg $wl$func_quote_for_eval_result" 47287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags="$linker_flags $func_quote_for_eval_result" 47307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 47317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 47327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname ' ' '' "$arg" 47337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg=$func_stripname_result 47347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Xcompiler) 47377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=xcompiler 47387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 47397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -Xlinker) 47427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=xlinker 47437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 47447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -XCClinker) 47477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=xcclinker 47487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 47497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -msg_* for osf cc 47527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -msg_*) 47537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 47547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$func_quote_for_eval_result" 47557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -r[0-9][0-9]* specifies the processor on the SGI compiler 47597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # +DA*, +DD* enable 64-bit mode on the HP compiler 47617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -q* pass through compiler args for the IBM compiler 47627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -m*, -t[45]*, -txscale* pass through architecture-specific 47637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # compiler args for GCC 47647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -F/path gives path to uninstalled frameworks, gcc on darwin 47657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # @file GCC response files 47677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 47707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$func_quote_for_eval_result" 47717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 47727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 47737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $arg" 47747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 47757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Some other compiler flag. 47787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -* | +*) 47797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 47807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$func_quote_for_eval_result" 47817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$objext) 47847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A standard object. 47857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objs="$objs $arg" 47867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 47877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 47897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A libtool-controlled object. 47907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that this really is a libtool object. 47927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_lalib_unsafe_p "$arg"; then 47937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object= 47947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object= 47957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Read the .lo file 47977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$arg" 47987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 47997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_object" || 48007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$non_pic_object" || 48017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$pic_object" = none && 48027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$non_pic_object" = none; then 48037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find name of object for \`$arg'" 48047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract subdirectory from the argument. 48077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$arg" "/" "" 48087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xdir="$func_dirname_result" 48097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pic_object" != none; then 48117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepend the subdirectory the object is found in. 48127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object="$xdir$pic_object" 48137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlfiles; then 48157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$dlfiles $pic_object" 48177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 48187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 48197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 48207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If libtool objects are unsupported, then we need to preload. 48217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev=dlprefiles 48227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # CHECK ME: I think I busted this. -Ossama 48267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlprefiles; then 48277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Preload the old-style object. 48287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$dlprefiles $pic_object" 48297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 48307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A PIC object. 48337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append libobjs " $pic_object" 48347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$pic_object" 48357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Non-PIC object. 48387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$non_pic_object" != none; then 48397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepend the subdirectory the object is found in. 48407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object="$xdir$non_pic_object" 48417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A standard non-PIC object 48437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 48447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$pic_object" || test "$pic_object" = none ; then 48457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$non_pic_object" 48467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 48487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the PIC object exists, use it instead. 48497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $xdir was prepended to $pic_object above. 48507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object="$pic_object" 48517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 48527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 48547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only an error if not doing a dry-run. 48557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_dry_run; then 48567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract subdirectory from the argument. 48577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$arg" "/" "" 48587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xdir="$func_dirname_result" 48597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lo2o "$arg" 48617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pic_object=$xdir$objdir/$func_lo2o_result 48627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet non_pic_object=$xdir$func_lo2o_result 48637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append libobjs " $pic_object" 48647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append non_pic_objects " $non_pic_object" 48657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 48667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$arg' is not a valid libtool object" 48677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 48707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$libext) 48727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # An archive. 48737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs $arg" 48747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_deplibs="$old_deplibs $arg" 48757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 48767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 48777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 48797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # A libtool-controlled library. 48807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$prev" = dlfiles; then 48827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This library was specified with -dlopen. 48837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$dlfiles $arg" 48847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 48857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$prev" = dlprefiles; then 48867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The library was specified with -dlpreopen. 48877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$dlprefiles $arg" 48887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prev= 48897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 48907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs $arg" 48917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 48927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 48937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 48947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 48957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Some other compiler argument. 48967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 48977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Unknown arguments in both finalize_command and compile_command need 48987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # to be aesthetically quoted because they are evaled later. 48997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$arg" 49007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet arg="$func_quote_for_eval_result" 49017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 49027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # arg 49037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now actually substitute the argument into the commands. 49057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$arg"; then 49067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 49077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 49087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # argument parsing loop 49107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$prev" && \ 49127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "the \`$prevarg' option requires an argument" 49137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval arg=\"$export_dynamic_flag_spec\" 49167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append compile_command " $arg" 49177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append finalize_command " $arg" 49187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs= 49217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # calculate the name of the file, without its directory 49227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$output" 49237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet outputname="$func_basename_result" 49247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs_save="$libobjs" 49257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath_var"; then 49277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # get the directories listed in $shlibpath_var 49287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 49307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shlib_search_path= 49317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$output" "/" "" 49367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_objdir="$func_dirname_result$objdir" 49377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Create the object directory. 49387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mkdir_p "$output_objdir" 49397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Determine the type of output 49417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $output in 49427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet "") 49437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify an output file" 49447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 49457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$libext) linkmode=oldlib ;; 49467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo | *.$objext) linkmode=obj ;; 49477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) linkmode=lib ;; 49487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) linkmode=prog ;; # Anything else should be a program. 49497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 49507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet specialdeplibs= 49527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs= 49547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Find all interdependent deplibs by searching for libraries 49557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # that are linked more than once (e.g. -la -lb -la) 49567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $deplibs; do 49577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_duplicate_deps ; then 49587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$libs " in 49597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 49617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs="$libs $deplib" 49637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 49647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib; then 49667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs="$predeps $libs $compiler_lib_search_path $postdeps" 49677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Compute libraries that are listed more than once in $predeps 49697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $postdeps and mark them as special (i.e., whose duplicates are 49707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # not to be eliminated). 49717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pre_post_deps= 49727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_duplicate_compiler_generated_deps; then 49737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for pre_post_dep in $predeps $postdeps; do 49747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$pre_post_deps " in 49757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 49777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pre_post_deps="$pre_post_deps $pre_post_dep" 49787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 49797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pre_post_deps= 49817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 49827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs= 49847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs= 49857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path= 49867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet need_relink=no # whether we're linking any uninstalled libtool libraries 49877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_deplibs= # not-installed libtool libraries 49887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_path= # paths that contain not-installed libtool libraries 49897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 49907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $linkmode in 49917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib) 49927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet passes="conv dlpreopen link" 49937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $dlfiles $dlprefiles; do 49947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 49957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) ;; 49967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 49977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 49997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 50017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 50027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prog) 50037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs= 50047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs= 50057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet alldeplibs=no 50067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles= 50077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles= 50087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet passes="conv scan dlopen dlpreopen link" 50097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 50107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) passes="conv" 50117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 50127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 50147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for pass in $passes; do 50157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The preopen pass in lib mode reverses $deplibs; put it back here 50167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # so that -L comes before libs that need it for instance... 50177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "lib,link"; then 50187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ## FIXME: Find the place where the list is rebuilt in the wrong 50197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ## order, and fix it there properly 50207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs= 50217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $deplibs; do 50227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs="$deplib $tmp_deplibs" 50237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 50247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$tmp_deplibs" 50257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 50277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "lib,link" || 50287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$linkmode,$pass" = "prog,scan"; then 50297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs="$deplibs" 50307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs= 50317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog; then 50337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $pass in 50347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopen) libs="$dlfiles" ;; 50357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlpreopen) libs="$dlprefiles" ;; 50367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link) 50377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs="$deplibs %DEPLIBS%" 50387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 50397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 50407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "lib,dlpreopen"; then 50437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Collect and forward deplibs of preopened libtool libs 50447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $dlprefiles; do 50457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Ignore non-libtool-libs 50467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs= 50477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $lib in 50487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) func_source "$lib" ;; 50497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 50517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Collect preopened libtool deplibs, except any this library 50527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # has declared as weak libs 50537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 50547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $weak_libs " in 50567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib_base "*) ;; 50577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) deplibs="$deplibs $deplib" ;; 50587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 50607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 50617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libs="$dlprefiles" 50627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = dlopen; then 50647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Collect dlpreopened libraries 50657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_deplibs="$deplibs" 50667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs= 50677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 50697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $libs; do 50707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib= 50717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet found=no 50727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 50737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "prog,link"; then 50757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 50767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 50777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 50787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags $deplib" 50797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib ; then 50807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$new_inherited_linker_flags " in 50817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 50827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 50847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 50877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 50887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 50897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" != lib && test "$linkmode" != prog; then 50907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-l' is ignored for archives/objects" 50917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 50927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 50937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-l' '' "$deplib" 50947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 50957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib; then 50967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 50987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for searchdir in $searchdirs; do 51017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for search_ext in .la $std_shrext .so .a; do 51027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Search the libtool library 51037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib="$searchdir/lib${name}${search_ext}" 51047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$lib"; then 51057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$search_ext" = ".la"; then 51067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet found=yes 51077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 51087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet found=no 51097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 2 51117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 51137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 51147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$found" != yes; then 51157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # deplib doesn't seem to be a libtool library 51167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "prog,link"; then 51177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 51187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 51197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 51207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 51247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else # deplib is a libtool library 51257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need to do some special things here, and not later. 51277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps " in 51297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) 51307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_lalib_p "$lib"; then 51317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet library_names= 51327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_library= 51337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$lib" 51347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for l in $old_library $library_names; do 51357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ll="$l" 51367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 51377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$ll" = "X$old_library" ; then # only static version available 51387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet found=no 51397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$lib" "" "." 51407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ladir="$func_dirname_result" 51417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib=$ladir/$old_library 51427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "prog,link"; then 51437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 51447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 51457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 51467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 51507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 51537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) ;; 51547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 51557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; # -l 51587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.ltframework) 51597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "prog,link"; then 51607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 51617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 51627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 51637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib ; then 51657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$new_inherited_linker_flags " in 51667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 51677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 51697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 51727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 51737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) 51747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $linkmode in 51757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib) 51767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$pass" = conv && continue 51787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs="$deplib $newdependency_libs" 51797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-L' '' "$deplib" 51807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path="$newlib_search_path $func_stripname_result" 51817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 51827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prog) 51837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = conv; then 51847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 51867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = scan; then 51887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 51897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 51907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 51917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 51927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 51937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-L' '' "$deplib" 51947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path="$newlib_search_path $func_stripname_result" 51957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 51967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 51977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-L' is ignored for archives/objects" 51987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 51997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # linkmode 52007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; # -L 52027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R*) 52037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = link; then 52047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '-R' '' "$deplib" 52057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir=$func_stripname_result 52067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure the xrpath contains only unique directories. 52077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$xrpath " in 52087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $dir "*) ;; 52097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) xrpath="$xrpath $dir" ;; 52107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 52117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 52137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) lib="$deplib" ;; 52167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$libext) 52177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = conv; then 52187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 52197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $linkmode in 52227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib) 52237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Linking convenience modules into shared libraries is allowed, 52247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # but linking other static libraries is non-portable. 52257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $dlpreconveniencelibs " in 52267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 52277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 52287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet valid_a_lib=no 52297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplibs_check_method in 52307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet match_pattern*) 52317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $deplibs_check_method; shift 52327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet | $EGREP "$match_pattern_regex" > /dev/null; then 52357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet valid_a_lib=yes 52367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pass_all) 52397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet valid_a_lib=yes 52407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 52427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$valid_a_lib" != yes; then 52437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 52447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 52467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 52477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which you do not appear to have" 52487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** that it is just a static archive that I should not use here." 52507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 52517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 52527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: Linking the shared library $output against the" 52537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** static library $deplib is not portable!" 52547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 52557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 52587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prog) 52617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" != link; then 52627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 52637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 52647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 52657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 52667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # linkmode 52707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; # *.$libext 52717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo | *.$objext) 52727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = conv; then 52737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 52747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$linkmode" = prog; then 52757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If there is no dlopen support or we're linking statically, 52777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # we need to preload. 52787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $deplib" 52797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$deplib $compile_deplibs" 52807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$deplib $finalize_deplibs" 52817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 52827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles="$newdlfiles $deplib" 52837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet %DEPLIBS%) 52887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet alldeplibs=yes 52897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 52907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 52917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac # case $deplib 52927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 52937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$found" = yes || test -f "$lib"; then : 52947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 52957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 52977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 52987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see that this really is a libtool archive. 52997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lalib_unsafe_p "$lib" \ 53007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet || func_fatal_error "\`$lib' is not a valid libtool archive" 53017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$lib" "" "." 53037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ladir="$func_dirname_result" 53047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlname= 53067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopen= 53077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlpreopen= 53087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir= 53097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet library_names= 53107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_library= 53117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet inherited_linker_flags= 53127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the library was installed with an old release of libtool, 53137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # it will not redefine variables installed, or shouldnotlink 53147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet installed=yes 53157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shouldnotlink=no 53167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet avoidtemprpath= 53177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Read the .la file 53207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source "$lib" 53217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Convert "-framework foo" to "foo.ltframework" 53237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$inherited_linker_flags"; then 53247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_inherited_linker_flags " in 53277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $tmp_inherited_linker_flag "*) ;; 53287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 53307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 53317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "lib,link" || 53347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$linkmode,$pass" = "prog,scan" || 53357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = conv; then 53417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only check for convenience libraries 53427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$lib $deplibs" 53437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$libdir"; then 53447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$old_library"; then 53457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find name of link library for \`$lib'" 53467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # It is a libtool convenience library, so add in its objects. 53487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet convenience="$convenience $ladir/$objdir/$old_library" 53497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_convenience="$old_convenience $ladir/$objdir/$old_library" 53507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs= 53517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 53527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 53537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_duplicate_deps ; then 53547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$tmp_libs " in 53557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 53577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs="$tmp_libs $deplib" 53597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 53607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$linkmode" != prog && test "$linkmode" != lib; then 53617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$lib' is not a convenience library" 53627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 53647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $pass = conv 53657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Get the name of the library we link against. 53687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linklib= 53697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for l in $old_library $library_names; do 53707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linklib="$l" 53717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 53727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$linklib"; then 53737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot find name of link library for \`$lib'" 53747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This library was specified with -dlopen. 53777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = dlopen; then 53787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$libdir"; then 53797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dlname" || 53827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$dlopen_support" != yes || 53837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_libtool_libs" = no; then 53847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If there is no dlname, no dlopen support or we're linking 53857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # statically, we need to preload. We also need to preload any 53867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # dependent libraries so libltdl's deplib preloader doesn't 53877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # bomb out in the load deplibs phase. 53887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$dlprefiles $lib $dependency_libs" 53897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 53907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles="$newdlfiles $lib" 53917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 53927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 53937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $pass = dlopen 53947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 53957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need an absolute path. 53967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $ladir in 53977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 53997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet abs_ladir=`cd "$ladir" && pwd` 54007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$abs_ladir"; then 54017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "cannot determine absolute directory name of \`$ladir'" 54027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "passing it literally to the linker, although it might fail" 54037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet abs_ladir="$ladir" 54047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 54067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 54077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$lib" 54087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet laname="$func_basename_result" 54097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Find the relevant object directory and library name. 54117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$installed" = Xyes; then 54127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "library \`$lib' was moved." 54147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$ladir" 54157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir="$abs_ladir" 54167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir="$abs_ladir" 54177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$libdir" 54197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir="$libdir" 54207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$ladir" 54257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir="$abs_ladir" 54267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remove this search path later 54277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_path="$notinst_path $abs_ladir" 54287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$ladir/$objdir" 54307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir="$abs_ladir/$objdir" 54317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remove this search path later 54327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_path="$notinst_path $abs_ladir" 54337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $installed = yes 54357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname 'lib' '.la' "$laname" 54367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 54377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This library was specified with -dlpreopen. 54397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = dlpreopen; then 54407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$libdir" && test "$linkmode" = prog; then 54417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prefer using a static library (so that no silly _DYNAMIC symbols 54447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # are required to link). 54457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$old_library"; then 54467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $dir/$old_library" 54477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Keep a list of preopened convenience libraries to check 54487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # that they are being used correctly in the link pass. 54497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libdir" && \ 54507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Otherwise, use the dlname, so that lt_dlopen finds it. 54527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$dlname"; then 54537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $dir/$dlname" 54547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $dir/$linklib" 54567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $pass = dlpreopen 54587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$libdir"; then 54607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Link the convenience library 54617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib; then 54627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$dir/$old_library $deplibs" 54637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$linkmode,$pass" = "prog,link"; then 54647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$dir/$old_library $compile_deplibs" 54657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$dir/$old_library $finalize_deplibs" 54667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$lib $deplibs" # used for prog,scan pass 54687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 54707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog && test "$pass" != link; then 54747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path="$newlib_search_path $ladir" 54757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$lib $deplibs" 54767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linkalldeplibs=no 54787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$link_all_deplibs" != no || test -z "$library_names" || 54797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_libtool_libs" = no; then 54807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linkalldeplibs=yes 54817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 54837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs= 54847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 54857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 54867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) func_stripname '-L' '' "$deplib" 54877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path="$newlib_search_path $func_stripname_result" 54887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 54897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 54907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Need to link against all dependency_libs? 54917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkalldeplibs" = yes; then 54927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 54937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 54947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Need to hardcode shared library paths 54957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # or/and link against static libraries 54967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs="$deplib $newdependency_libs" 54977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 54987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_duplicate_deps ; then 54997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$tmp_libs " in 55007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 55017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs="$tmp_libs $deplib" 55047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # for deplib 55057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 55067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $linkmode = prog... 55077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 55087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" = "prog,link"; then 55097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$library_names" && 55107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { { test "$prefer_static_libs" = no || 55117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$prefer_static_libs,$installed" = "built,yes"; } || 55127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$old_library"; }; then 55137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need to hardcode the library path 55147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure the rpath contains only unique directories. 55167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$temp_rpath:" in 55177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *"$absdir:"*) ;; 55187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) temp_rpath="$temp_rpath$absdir:" ;; 55197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 55227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Hardcode the library path. 55237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Skip directories that are in the system default run-time 55247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # search path. 55257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $sys_lib_dlsearch_path " in 55267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $absdir "*) ;; 55277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 55287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$compile_rpath " in 55297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $absdir "*) ;; 55307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) compile_rpath="$compile_rpath $absdir" 55317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 55337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $sys_lib_dlsearch_path " in 55357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 55367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 55377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$finalize_rpath " in 55387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 55397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_rpath="$finalize_rpath $libdir" 55407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 55427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # $linkmode,$pass = prog,link... 55447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 55457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$alldeplibs" = yes && 55467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test "$deplibs_check_method" = pass_all || 55477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test "$build_libtool_libs" = yes && 55487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$library_names"; }; }; then 55497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We only need to search for static libraries 55507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 55517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 55547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_static=no # Whether the deplib will be linked statically 55557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet use_static_libs=$prefer_static_libs 55567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$use_static_libs" = built && test "$installed" = yes; then 55577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet use_static_libs=no 55587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$library_names" && 55607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test "$use_static_libs" = no || test -z "$old_library"; }; then 55617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 55627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* | *cegcc*) 55637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # No point in relinking DLLs because paths are not encoded 55647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_deplibs="$notinst_deplibs $lib" 55657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet need_relink=no 55667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 55677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 55687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$installed" = no; then 55697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet notinst_deplibs="$notinst_deplibs $lib" 55707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet need_relink=yes 55717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 55737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 55747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This is a shared library 55757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 55767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Warn about portability, can't link against -module's on some 55777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # systems (darwin). Don't bleat about dlopened modules though! 55787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopenmodule="" 55797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dlpremoduletest in $dlprefiles; do 55807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$dlpremoduletest" = "X$lib"; then 55817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlopenmodule="$dlpremoduletest" 55827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 55837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 55857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 55877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog; then 55887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: Linking the executable $output against the loadable module" 55897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 55907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** $linklib is not portable!" 55937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 55947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib && 55957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$hardcode_into_libs" = yes; then 55967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Hardcode the library path. 55977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Skip directories that are in the system default run-time 55987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # search path. 55997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $sys_lib_dlsearch_path " in 56007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $absdir "*) ;; 56017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 56027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$compile_rpath " in 56037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $absdir "*) ;; 56047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) compile_rpath="$compile_rpath $absdir" 56057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 56067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 56077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 56087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $sys_lib_dlsearch_path " in 56097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 56107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 56117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$finalize_rpath " in 56127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 56137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_rpath="$finalize_rpath $libdir" 56147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 56157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 56167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 56177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 56197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$old_archive_from_expsyms_cmds"; then 56207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # figure out the soname 56217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $library_names 56227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 56237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet realname="$1" 56247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 56257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=`eval "\\$ECHO \"$libname_spec\""` 56267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # use dlname if we got it. it's perfectly good, no? 56277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlname"; then 56287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet soname="$dlname" 56297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$soname_spec"; then 56307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # bleh windows 56317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 56327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | mingw* | *cegcc*) 56337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 56347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=$func_arith_result 56357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="-$major" 56367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 56377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 56387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval soname=\"$soname_spec\" 56397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 56407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet soname="$realname" 56417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 56437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make a new name for the extract_expsyms_cmds to use 56447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet soroot="$soname" 56457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$soroot" 56467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet soname="$func_basename_result" 56477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname 'lib' '.dll' "$soname" 56487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib=libimp-$func_stripname_result.a 56497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 56507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the library has no export list, then create one now 56517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$output_objdir/$soname-def"; then : 56527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 56537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "extracting exported symbol list from \`$soname'" 56547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 56577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Create $newlib 56587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$output_objdir/$newlib"; then :; else 56597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "generating import library for \`$soname'" 56607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # make sure the library variables are pointing to the new library 56637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir=$output_objdir 56647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linklib=$newlib 56657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # test -n "$old_archive_from_expsyms_cmds" 56667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 56677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog || test "$mode" != relink; then 56687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_shlibpath= 56697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir= 56707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add= 56717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_linked=yes 56727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $hardcode_action in 56737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet immediate | unsupported) 56747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_direct" = no; then 56757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$dir/$linklib" 56767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 56777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-unixware7*) add_dir="-L$dir" ;; 56817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-darwin* ) 56827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # if the lib is a (non-dlopened) module then we can not 56837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # link against it, someone is ignoring the earlier warnings 56847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if /usr/bin/file -L $add 2> /dev/null | 56857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP ": [^:]* bundle" >/dev/null ; then 56867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$dlopenmodule" != "X$lib"; then 56877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$old_library" ; then 56897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 56907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** And there doesn't seem to be a static archive available" 56917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** The link will probably fail, sorry" 56927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 56937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$dir/$old_library" 56947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$old_library"; then 56967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$dir/$old_library" 56977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 56997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_minus_L" = no; then 57017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 57027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sunos*) add_shlibpath="$dir" ;; 57037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="-L$dir" 57057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_shlibpath_var" = no; then 57077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_shlibpath="$dir" 57087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 57107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_linked=no 57117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 57137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink) 57147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_direct" = yes && 57157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$hardcode_direct_absolute" = no; then 57167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$dir/$linklib" 57177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_minus_L" = yes; then 57187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="-L$dir" 57197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try looking first in the location we're being installed to. 57207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$inst_prefix_dir"; then 57217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $libdir in 57227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]*) 57237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="$add_dir -L$inst_prefix_dir$libdir" 57247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 57257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_shlibpath_var" = yes; then 57297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_shlibpath="$dir" 57307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 57327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_linked=no 57337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 57357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) lib_linked=no ;; 57367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 57387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$lib_linked" != yes; then 57397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "unsupported hardcode properties" 57407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 57427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$add_shlibpath"; then 57437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$compile_shlibpath: in 57447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$add_shlibpath:"*) ;; 57457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog; then 57497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add" && compile_deplibs="$add $compile_deplibs" 57517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 57527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add_dir" && deplibs="$add_dir $deplibs" 57537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add" && deplibs="$add $deplibs" 57547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_direct" != yes && 57557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$hardcode_minus_L" != yes && 57567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$hardcode_shlibpath_var" = yes; then 57577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$finalize_shlibpath: in 57587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$libdir:"*) ;; 57597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 57657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog || test "$mode" = relink; then 57667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_shlibpath= 57677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir= 57687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add= 57697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Finalize command for both is simple: just hardcode it. 57707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_direct" = yes && 57717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$hardcode_direct_absolute" = no; then 57727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$libdir/$linklib" 57737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_minus_L" = yes; then 57747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="-L$libdir" 57757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_shlibpath_var" = yes; then 57777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$finalize_shlibpath: in 57787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$libdir:"*) ;; 57797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 57827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$hardcode_automatic" = yes; then 57837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$inst_prefix_dir" && 57847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$inst_prefix_dir$libdir/$linklib" ; then 57857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$inst_prefix_dir$libdir/$linklib" 57867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 57877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="$libdir/$linklib" 57887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 57897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 57907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We cannot seem to hardcode it, guess we'll fake it. 57917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="-L$libdir" 57927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try looking first in the location we're being installed to. 57937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$inst_prefix_dir"; then 57947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $libdir in 57957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]*) 57967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add_dir="$add_dir -L$inst_prefix_dir$libdir" 57977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 57987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 57997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet add="-l$name" 58017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 58037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog; then 58047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 58077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add_dir" && deplibs="$add_dir $deplibs" 58087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$add" && deplibs="$add $deplibs" 58097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$linkmode" = prog; then 58127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Here we assume that one of hardcode_direct or hardcode_minus_L 58137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # is not unsupported. This is valid on all known static and 58147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # shared platforms. 58157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_direct" != unsupported; then 58167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$old_library" && linklib="$old_library" 58177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$dir/$linklib $compile_deplibs" 58187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$dir/$linklib $finalize_deplibs" 58197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 58207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="-l$name -L$dir $compile_deplibs" 58217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$build_libtool_libs" = yes; then 58247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Not a shared library 58257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$deplibs_check_method" != pass_all; then 58267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We're trying link a shared library against a static one 58277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # but the system doesn't support it. 58287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 58297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just print a warning and add the library to dependency_libs so 58307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # that the program can be linked against the static library. 58317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 58327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: This system can not link to static lib archive $lib." 58337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 58347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 58357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which you do not appear to have." 58367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$module" = yes; then 58377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** But as you try to build a module library, libtool will still create " 58387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** a static module, that should work as long as the dlopening application" 58397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$global_symbol_pipe"; then 58417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 58427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** However, this would only work if libtool was able to extract symbol" 58437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** not find such a program. So, this module is probably useless." 58457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = no; then 58487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=module 58497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 58507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 58517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 58527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 58557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$dir/$old_library $deplibs" 58567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_static=yes 58577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # link shared/static library? 58597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 58607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = lib; then 58617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dependency_libs" && 58627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test "$hardcode_into_libs" != yes || 58637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_old_libs" = yes || 58647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$link_static" = yes; }; then 58657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Extract -R from dependency_libs 58667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet temp_deplibs= 58677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $dependency_libs; do 58687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $libdir in 58697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R*) func_stripname '-R' '' "$libdir" 58707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet temp_xrpath=$func_stripname_result 58717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $xrpath " in 58727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $temp_xrpath "*) ;; 58737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) xrpath="$xrpath $temp_xrpath";; 58747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac;; 58757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) temp_deplibs="$temp_deplibs $libdir";; 58767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 58777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 58787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs="$temp_deplibs" 58797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 58817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path="$newlib_search_path $absdir" 58827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Link against this library 58837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # ... and its dependency_libs 58857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs= 58867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 58877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs="$deplib $newdependency_libs" 58887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $opt_duplicate_deps ; then 58897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$tmp_libs " in 58907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 58927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 58937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs="$tmp_libs $deplib" 58947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 58957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 58967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$link_all_deplibs" != no; then 58977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the search paths of all dependency libraries 58987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 58997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path= 59007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 59017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) path="$deplib" ;; 59027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 59037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$deplib" "" "." 59047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$func_dirname_result" 59057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We need an absolute path. 59067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $dir in 59077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 59097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir=`cd "$dir" && pwd` 59107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$absdir"; then 59117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "cannot determine absolute directory name of \`$dir'" 59127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet absdir="$dir" 59137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 59157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 59167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $GREP "^installed=no" $deplib > /dev/null; then 59177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 59187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-darwin*) 59197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet depdepl= 59207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$deplibrary_names" ; then 59227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for tmp in $deplibrary_names ; do 59237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet depdepl=$tmp 59247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 59257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$absdir/$objdir/$depdepl" ; then 59267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet depdepl="$absdir/$objdir/$depdepl" 59277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$darwin_install_name"; then 59297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path= 59347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 59377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 59387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path="-L$absdir/$objdir" 59397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 59407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 59417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 59427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libdir" && \ 59447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$deplib' is not a valid libtool archive" 59457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$absdir" != "$libdir" && \ 59467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`$deplib' seems to be moved" 59477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 59487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet path="-L$absdir" 59497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 59517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 59527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $deplibs " in 59537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $path "*) ;; 59547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) deplibs="$path $deplibs" ;; 59557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 59567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 59577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # link_all_deplibs != no 59587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi # linkmode = lib 59597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # for deplib in $libs 59607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = link; then 59617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = "prog"; then 59627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 59657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs="$newdependency_libs" 59697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" = dlpreopen; then 59707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Link the dlpreopened libraries before other libraries 59717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $save_deplibs; do 59727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplib $deplibs" 59737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 59747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" != dlopen; then 59767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$pass" != conv; then 59777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure lib_search_path contains only unique directories. 59787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib_search_path= 59797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir in $newlib_search_path; do 59807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$lib_search_path " in 59817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $dir "*) ;; 59827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) lib_search_path="$lib_search_path $dir" ;; 59837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 59847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 59857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newlib_search_path= 59867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 59887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode,$pass" != "prog,link"; then 59897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vars="deplibs" 59907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 59917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet vars="compile_deplibs finalize_deplibs" 59927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 59937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for var in $vars dependency_libs; do 59947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add libraries to $var in reverse order 59957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval tmp_libs=\"\$$var\" 59967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_libs= 59977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $tmp_libs; do 59987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: Pedantically, this is the right thing to do, so 59997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # that some nasty dependency loop isn't accidentally 60007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # broken: 60017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet #new_libs="$deplib $new_libs" 60027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Pragmatically, this seems to cause very few problems in 60037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # practice: 60047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 60057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) new_libs="$deplib $new_libs" ;; 60067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -R*) ;; 60077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 60087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # And here is the reason: when a library appears more 60097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # than once as an explicit dependence of a library, or 60107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # is implicitly linked in more than once by the 60117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # compiler, it is considered special, and multiple 60127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # occurrences thereof are not removed. Compare this 60137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # with having the same library being listed as a 60147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # dependency of multiple other libraries: in this case, 60157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # we know (pedantically, we assume) the library does not 60167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # need to be listed more than once, so we keep only the 60177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # last copy. This is not always right, but it is rare 60187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # enough that we require users that really mean to play 60197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # such unportable linking tricks to link the library 60207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # using -Wl,-lname, so that libtool does not consider it 60217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # for duplicate removal. 60227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $specialdeplibs " in 60237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) new_libs="$deplib $new_libs" ;; 60247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 60257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_libs " in 60267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 60277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_libs="$deplib $new_libs" ;; 60287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 60307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 60327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 60347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs= 60357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $new_libs; do 60367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 60377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) 60387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $tmp_libs " in 60397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 60407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) tmp_libs="$tmp_libs $deplib" ;; 60417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 60437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) tmp_libs="$tmp_libs $deplib" ;; 60447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 60467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval $var=\"$tmp_libs\" 60477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # for var 60487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 60497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Last step: remove runtime libs from dependency_libs 60507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # (they stay in deplibs) 60517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs= 60527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $dependency_libs ; do 60537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps $compiler_lib_search_path " in 60547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $i "*) 60557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet i="" 60567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 60577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$i" ; then 60597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_libs="$tmp_libs $i" 60607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 60617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 60627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs=$tmp_libs 60637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # for pass 60647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog; then 60657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$newdlfiles" 60667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 60677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$linkmode" = prog || test "$linkmode" = lib; then 60687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$newdlprefiles" 60697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 60707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $linkmode in 60727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlib) 60737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-dlopen' is ignored for archives" 60757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 60767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $deplibs" in 60787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *\ -l* | *\ -L*) 60797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-l' and \`-L' are ignored for archives" ;; 60807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 60817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$rpath" && \ 60837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-rpath' is ignored for archives" 60847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$xrpath" && \ 60867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-R' is ignored for archives" 60877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$vinfo" && \ 60897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-version-info/-version-number' is ignored for archives" 60907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$release" && \ 60927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-release' is ignored for archives" 60937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$export_symbols$export_symbols_regex" && \ 60957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-export-symbols' is ignored for archives" 60967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 60977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now set the variables for building old libraries. 60987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 60997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs="$output" 61007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objs="$objs$old_deplibs" 61017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 61027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib) 61047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure we only generate libraries of the form `libNAME.la'. 61057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $outputname in 61067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib*) 61077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname 'lib' '.la' "$outputname" 61087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 61097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval shared_ext=\"$shrext_cmds\" 61107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libname=\"$libname_spec\" 61117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 61127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 61137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$module" = no && \ 61147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "libtool library \`$output' must begin with \`lib'" 61157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_lib_prefix" != no; then 61177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add the "lib" prefix for modules if required 61187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.la' "$outputname" 61197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 61207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval shared_ext=\"$shrext_cmds\" 61217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libname=\"$libname_spec\" 61227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 61237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.la' "$outputname" 61247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=$func_stripname_result 61257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 61267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 61277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 61287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$objs"; then 61307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$deplibs_check_method" != pass_all; then 61317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 61337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 61347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** objects $objs is not portable!" 61367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs="$libobjs $objs" 61377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 61387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 61397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$dlself" != no && \ 61417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-dlopen self' is ignored for libtool libraries" 61427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $rpath 61447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 61457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$#" -gt 1 && \ 61467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "ignoring multiple \`-rpath's for a libtool library" 61477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet install_libdir="$1" 61497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs= 61517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$rpath"; then 61527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 61537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Building a libtool convenience library. 61547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Some compilers have problems with a `.al' extension so 61557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # convenience libraries should have the same extension an 61567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # archive normally would. 61577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs="$output_objdir/$libname.$libext $oldlibs" 61587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=convenience 61597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 61607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 61617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$vinfo" && \ 61637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$release" && \ 61667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-release' is ignored for convenience libraries" 61677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 61687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Parse the version information argument. 61707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS=':' 61717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $vinfo 0 0 0 61727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 61737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 61747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$7" && \ 61767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "too many parameters to \`-version-info'" 61777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # convert absolute version numbers to libtool ages 61797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # this retains compatibility with .la files and attempts 61807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # to make the code below a bit more comprehensible 61817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 61827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $vinfo_number in 61837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet yes) 61847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet number_major="$1" 61857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet number_minor="$2" 61867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet number_revision="$3" 61877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # 61887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # There are really only two kinds -- those that 61897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # use the current revision as the major version 61907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # and those that subtract age and use age as 61917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # a minor version. But, then there is irix 61927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # which has an extra 1 added just for fun 61937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # 61947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $version_type in 61957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin|linux|osf|windows|none) 61967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $number_major + $number_minor 61977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet current=$func_arith_result 61987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet age="$number_minor" 61997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet revision="$number_revision" 62007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet freebsd-aout|freebsd-elf|sunos) 62027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet current="$number_major" 62037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet revision="$number_minor" 62047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet age="0" 62057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet irix|nonstopux) 62077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $number_major + $number_minor 62087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet current=$func_arith_result 62097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet age="$number_minor" 62107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet revision="$number_minor" 62117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_irix_increment=no 62127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 62147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "$modename: unknown library version type \`$version_type'" 62157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet no) 62197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet current="$1" 62207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet revision="$2" 62217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet age="$3" 62227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check that each of the things are valid numbers. 62267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $current in 62277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 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]) ;; 62287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 62297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "CURRENT \`$current' must be a nonnegative integer" 62307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$vinfo' is not valid version information" 62317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $revision in 62357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 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]) ;; 62367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 62377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "REVISION \`$revision' must be a nonnegative integer" 62387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$vinfo' is not valid version information" 62397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $age in 62437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 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]) ;; 62447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 62457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "AGE \`$age' must be a nonnegative integer" 62467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$vinfo' is not valid version information" 62477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$age" -gt "$current"; then 62517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_error "AGE \`$age' is greater than the current interface number \`$current'" 62527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$vinfo' is not valid version information" 62537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 62547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Calculate the version variables. 62567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major= 62577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix= 62587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring= 62597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $version_type in 62607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet none) ;; 62617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin) 62637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Like Linux, but with the current version available in 62647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # verstring for coding it into the library header 62657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 62667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=.$func_arith_result 62677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="$major.$age.$revision" 62687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Darwin ld doesn't like 0 for these options... 62697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current + 1 62707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet minor_current=$func_arith_result 62717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet freebsd-aout) 62767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=".$current" 62777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".$current.$revision"; 62787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet freebsd-elf) 62817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=".$current" 62827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".$current" 62837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 62847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet irix | nonstopux) 62867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$lt_irix_increment" = "Xno"; then 62877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 62887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 62897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age + 1 62907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 62917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=$func_arith_result 62927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $version_type in 62947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet nonstopux) verstring_prefix=nonstopux ;; 62957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) verstring_prefix=sgi ;; 62967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 62977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="$verstring_prefix$major.$revision" 62987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 62997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add in all the interfaces that we are compatible with. 63007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet loop=$revision 63017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test "$loop" -ne 0; do 63027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $revision - $loop 63037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet iface=$func_arith_result 63047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $loop - 1 63057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet loop=$func_arith_result 63067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="$verstring_prefix$major.$iface:$verstring" 63077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 63087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Before this point, $major must not contain `.'. 63107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=.$major 63117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="$major.$revision" 63127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linux) 63157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 63167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=.$func_arith_result 63177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="$major.$age.$revision" 63187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet osf) 63217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 63227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=.$func_arith_result 63237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".$current.$age.$revision" 63247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="$current.$age.$revision" 63257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add in all the interfaces that we are compatible with. 63277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet loop=$age 63287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test "$loop" -ne 0; do 63297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $loop 63307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet iface=$func_arith_result 63317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $loop - 1 63327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet loop=$func_arith_result 63337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="$verstring:${iface}.0" 63347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 63357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make executables depend on our current version. 63377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="$verstring:${current}.0" 63387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet qnx) 63417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=".$current" 63427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".$current" 63437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet sunos) 63467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=".$current" 63477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".$current.$revision" 63487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet windows) 63517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Use '-' rather than '.', since we only want one 63527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # extension on DOS 8.3 filesystems. 63537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $current - $age 63547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=$func_arith_result 63557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="-$major" 63567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 63597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_configuration "unknown library version type \`$version_type'" 63607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 63627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Clear the version info if we defaulted, and they specified a release. 63647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$vinfo" && test -n "$release"; then 63657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major= 63667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $version_type in 63677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet darwin) 63687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # we can't check for "0.0" in archive_cmds due to quoting 63697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # problems, so we reset it completely 63707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring= 63717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 63737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="0.0" 63747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 63757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 63767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_version" = no; then 63777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix= 63787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 63797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=".0.0" 63807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 63817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 63827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remove version info from name if versioning should be avoided 63847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$avoid_version" = yes && test "$need_version" = no; then 63857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major= 63867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix= 63877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet verstring="" 63887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 63897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 63907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Check to see if the archive will have undefined symbols. 63917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$allow_undefined" = yes; then 63927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$allow_undefined_flag" = unsupported; then 63937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "undefined symbols not allowed in $host shared libraries" 63947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 63957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 63967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 63977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 63987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't allow undefined symbols. 63997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet allow_undefined_flag="$no_undefined_flag" 64007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_generate_dlsyms "$libname" "$libname" "yes" 64057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs="$libobjs $symfileobj" 64067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 64077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" != relink; then 64097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remove our outputs, but don't remove object files since they 64107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # may have been created when compiling PIC objects. 64117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist= 64127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tempremovelist=`$ECHO "$output_objdir/*"` 64137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for p in $tempremovelist; do 64147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $p in 64157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.$objext | *.gcno) 64167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$precious_files_regex" != "X"; then 64197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet then 64217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 64227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet removelist="$removelist $p" 64257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) ;; 64277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 64287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 64297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$removelist" && \ 64307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "${RM}r \$removelist" 64317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now set the variables for building old libraries. 64347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs="$oldlibs $output_objdir/$libname.$libext" 64367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform .lo files to .o files. 64387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Eliminate all temporary directories. 64427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet #for path in $notinst_path; do 64437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet #done 64477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$xrpath"; then 64497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the user specified any rpath flags, then add them. 64507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet temp_xrpath= 64517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $xrpath; do 64527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet temp_xrpath="$temp_xrpath -R$libdir" 64537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$finalize_rpath " in 64547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 64557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_rpath="$finalize_rpath $libdir" ;; 64567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 64577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 64587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs="$temp_xrpath $dependency_libs" 64607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 64627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure dlfiles contains only unique files that won't be dlpreopened 64647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_dlfiles="$dlfiles" 64657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles= 64667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $old_dlfiles; do 64677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $dlprefiles $dlfiles " in 64687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $lib "*) ;; 64697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dlfiles="$dlfiles $lib" ;; 64707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 64717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 64727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure dlprefiles contains only unique files 64747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_dlprefiles="$dlprefiles" 64757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles= 64767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $old_dlprefiles; do 64777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$dlprefiles " in 64787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $lib "*) ;; 64797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dlprefiles="$dlprefiles $lib" ;; 64807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 64817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 64827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 64837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 64847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$rpath"; then 64857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 64867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # these systems don't actually have a c library (as such)! 64887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-rhapsody* | *-*-darwin1.[012]) 64907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Rhapsody C library is in the System framework 64917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs System.ltframework" 64927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-netbsd*) 64947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't link with libc until the a.out ld.so is fixed. 64957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do not include libc due to us having libc/libc_r. 64987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 64997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sco3.2v5* | *-*-sco5v6*) 65007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Causes problems with __ctype 65017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 65037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Compiler inserts libc in the correct place for threads to work 65047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 65067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add libc to deplibs on all other systems if necessary. 65077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_need_lc" = "yes"; then 65087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$deplibs -lc" 65097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 65107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 65127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 65137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 65147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform deplibs into only deplibs that can be linked in shared. 65157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name_save=$name 65167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname_save=$libname 65177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release_save=$release 65187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix_save=$versuffix 65197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major_save=$major 65207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # I'm not sure if I'm treating the release correctly. I think 65217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # release should show up in the -l (ie -lgmp5) so we don't want to 65227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # add it in twice. Is that correct? 65237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release="" 65247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix="" 65257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major="" 65267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs= 65277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=no 65287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplibs_check_method in 65297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet pass_all) 65307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't check for shared/static. Everything works. 65317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This might be a little naive. We might want to check 65327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # whether the library exists or not. But this is on 65337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # osf3 & osf4 and I'm not really sure... Just 65347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # implementing what was already the behavior. 65357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs=$deplibs 65367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test_compile) 65387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This code stresses the "libraries are programs" paradigm to its 65397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # limits. Maybe even breaks it. We compile a program, linking it 65407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # against the deplibs as a proxy for the library. Then we can check 65417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # whether they linked in statically or dynamically with ldd. 65427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM conftest.c 65437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cat > conftest.c <<EOF 65447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet int main() { return 0; } 65457c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF 65467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM conftest 65477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ldd_output=`ldd conftest` 65497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $deplibs; do 65507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $i in 65517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 65527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname -l '' "$i" 65537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 65547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps " in 65567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $i "*) 65577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 65587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet i="" 65597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 65617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 65627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$i" ; then 65637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=`eval "\\$ECHO \"$libname_spec\""` 65647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $deplib_matches; shift 65667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplib_match=$1 65677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 65697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 65707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 65717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 65727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 65747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 65757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which I believe you do not have" 65767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 65797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 65807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 65827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 65837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 65847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 65857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 65867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 65877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Error occurred in the first compile. Let's try to salvage 65887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the situation: Compile a separate program for each library. 65897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $deplibs; do 65907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $i in 65917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 65927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname -l '' "$i" 65937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 65947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM conftest 65957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ldd_output=`ldd conftest` 65977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps " in 65997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $i "*) 66007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 66017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet i="" 66027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 66037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 66047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$i" ; then 66067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=`eval "\\$ECHO \"$libname_spec\""` 66077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $deplib_matches; shift 66097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplib_match=$1 66107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 66127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 66137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 66147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 66157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 66177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 66187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which you do not appear to have" 66197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 66247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 66257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 66267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** make it link in! You will probably need to install it or some" 66287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** library that it depends on before this library will be fully" 66297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** functional. Installing it before continuing would be even better." 66307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 66327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 66337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $i" 66347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 66357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 66367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 66377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 66397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file_magic*) 66407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $deplibs_check_method; shift 66417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for a_deplib in $deplibs; do 66437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $a_deplib in 66447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 66457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname -l '' "$a_deplib" 66467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 66477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps " in 66497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $a_deplib "*) 66507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 66517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet a_deplib="" 66527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 66537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 66547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$a_deplib" ; then 66567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=`eval "\\$ECHO \"$libname_spec\""` 66577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for potent_lib in $potential_libs; do 66607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Follow soft links. 66617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ls -lLd "$potent_lib" 2>/dev/null | 66627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP " -> " >/dev/null; then 66637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 66647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The statement above tries to avoid entering an 66667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # endless loop below, in case of cyclic links. 66677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We might still enter an endless loop, since a link 66687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # loop can be closed while we follow links, 66697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # but so what? 66707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet potlib="$potent_lib" 66717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while test -h "$potlib" 2>/dev/null; do 66727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $potliblink in 66747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 66777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 66787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $SED -e 10q | 66807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $EGREP "$file_magic_regex" > /dev/null; then 66817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 66827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet a_deplib="" 66837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 2 66847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 66867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 66877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 66887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$a_deplib" ; then 66897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 66907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 66917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 66937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 66947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which you do not appear to have" 66957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because I did check the linker path looking for a file starting" 66967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$potlib" ; then 66977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 66997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** with $libname and none of the candidates passed a file format test" 67007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** using a file magic. Last file checked: $potlib" 67017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 67057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add a -L argument. 67067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 67077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 67097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # Gone through all deplibs. 67107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet match_pattern*) 67127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $deplibs_check_method; shift 67137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for a_deplib in $deplibs; do 67157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $a_deplib in 67167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -l*) 67177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname -l '' "$a_deplib" 67187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$func_stripname_result 67197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $predeps $postdeps " in 67217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $a_deplib "*) 67227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 67237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet a_deplib="" 67247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 67267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$a_deplib" ; then 67287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=`eval "\\$ECHO \"$libname_spec\""` 67297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for potent_lib in $potential_libs; do 67327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet potlib="$potent_lib" # see symlink-check above in file_magic test 67337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $EGREP "$match_pattern_regex" > /dev/null; then 67357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 67367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet a_deplib="" 67377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 2 67387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 67407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 67417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$a_deplib" ; then 67437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 67447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 67457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** I have the capability to make that library automatically link in when" 67477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** you link to this library. But I can only do this if you have a" 67487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** shared version of the library, which you do not appear to have" 67497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because I did check the linker path looking for a file starting" 67507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$potlib" ; then 67517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 67537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** with $libname and none of the candidates passed a file format test" 67547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** using a regex pattern. Last file checked: $potlib" 67557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 67597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add a -L argument. 67607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="$newdeplibs $a_deplib" 67617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 67637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done # Gone through all deplibs. 67647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet none | unknown | *) 67667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs="" 67677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for i in $predeps $postdeps ; do 67717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # can't use Xsed below, because $i might contain '/' 67727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 67747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $GREP . >/dev/null; then 67777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 67787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$deplibs_check_method" = "Xnone"; then 67797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 67817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** All declared inter-library dependencies are being dropped." 67847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet droppeddeps=yes 67857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 67867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 67887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet versuffix=$versuffix_save 67897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet major=$major_save 67907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet release=$release_save 67917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libname=$libname_save 67927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name=$name_save 67937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 67947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 67957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-rhapsody* | *-*-darwin1.[012]) 67967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # On Rhapsody replace the C library with the System framework 67977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 67997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 68017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$droppeddeps" = yes; then 68027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$module" = yes; then 68037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 68047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 68057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 68067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** a static module, that should work as long as the dlopening" 68077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** application is linked with the -dlopen flag." 68087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$global_symbol_pipe"; then 68097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 68107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** However, this would only work if libtool was able to extract symbol" 68117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** not find such a program. So, this module is probably useless." 68137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = no; then 68167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs="$output_objdir/$libname.$libext" 68177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=module 68187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 68197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 68207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 68217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 68237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** The inter-library dependencies that have been dropped here will be" 68247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** automatically added whenever a program is linked with this library" 68257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** or is declared to -dlopen it." 68267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 68277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$allow_undefined" = no; then 68287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 68297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** Since this library must not contain undefined symbols," 68307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** because either the platform does not support them or" 68317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** it was explicitly requested with -no-undefined," 68327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "*** libtool will only create a static version of it." 68337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_old_libs" = no; then 68347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldlibs="$output_objdir/$libname.$libext" 68357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=module 68367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_old_libs=yes 68377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 68387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 68397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Done checking deplibs! 68447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs=$newdeplibs 68457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 68467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 68487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-darwin*) 68497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 68537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 68557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # move library search paths that coincide with paths to not yet 68567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # installed libraries to the beginning of the library search list 68577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_libs= 68587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for path in $notinst_path; do 68597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_libs " in 68607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -L$path/$objdir "*) ;; 68617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 68627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $deplibs " in 68637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -L$path/$objdir "*) 68647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_libs="$new_libs -L$path/$objdir" ;; 68657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 68677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 68697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $deplibs; do 68707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 68717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) 68727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_libs " in 68737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 68747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_libs="$new_libs $deplib" ;; 68757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 68777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_libs="$new_libs $deplib" ;; 68787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 68797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 68807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$new_libs" 68817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 68827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # All the library-specific variables (install_libdir is set above). 68837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet library_names= 68847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_library= 68857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlname= 68867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 68877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Test again, we may have decided not to build it any more 68887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = yes; then 68897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_into_libs" = yes; then 68907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Hardcode the library paths 68917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs= 68927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dep_rpath= 68937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$finalize_rpath" 68947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$mode" != relink && rpath="$compile_rpath$rpath" 68957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $rpath; do 68967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_flag_spec"; then 68977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator"; then 68987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$hardcode_libdirs"; then 68997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$libdir" 69007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 69017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just accumulate the unique libdirs. 69027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 69037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 69047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 69057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 69067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 69087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 69097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 69117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval flag=\"$hardcode_libdir_flag_spec\" 69127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dep_rpath="$dep_rpath $flag" 69137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$runpath_var"; then 69157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$perm_rpath " in 69167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 69177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) perm_rpath="$perm_rpath $libdir" ;; 69187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 69197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 69217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Substitute the hardcoded libdirs into the rpath. 69227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator" && 69237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$hardcode_libdirs"; then 69247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir="$hardcode_libdirs" 69257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_flag_spec_ld"; then 69267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 69287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$runpath_var" && test -n "$perm_rpath"; then 69327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We should set the runpath_var. 69337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 69347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir in $perm_rpath; do 69357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$rpath$dir:" 69367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 69377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 69407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shlibpath="$finalize_shlibpath" 69437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$shlibpath"; then 69457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Get the real and link names of the library. 69497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval shared_ext=\"$shrext_cmds\" 69507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval library_names=\"$library_names_spec\" 69517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set dummy $library_names 69527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 69537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet realname="$1" 69547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 69557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$soname_spec"; then 69577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval soname=\"$soname_spec\" 69587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 69597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet soname="$realname" 69607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$dlname"; then 69627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlname=$soname 69637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lib="$output_objdir/$realname" 69667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linknames= 69677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for link 69687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 69697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linknames="$linknames $link" 69707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 69717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Use standard objects if they are pic 69737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 69757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles= 69777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$include_expsyms"; then 69787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols="$output_objdir/$libname.uexp" 69807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $export_symbols" 69817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 69837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet orig_export_symbols= 69847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host_os in 69857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cygwin* | mingw* | cegcc*) 69867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # exporting using user supplied symfile 69887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # and it's NOT already a .def file. Must figure out 69907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # which of the given symbols are data symbols and tag 69917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # them as such. So, trigger use of export_symbols_cmds. 69927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # export_symbols gets reassigned inside the "prepare 69937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the list of exported symbols" if statement, so the 69947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # include_expsyms logic still works. 69957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet orig_export_symbols="$export_symbols" 69967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols= 69977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet always_export_symbols=yes 69987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 69997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 70017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 70027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Prepare the list of exported symbols 70047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$export_symbols"; then 70057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 70067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "generating symbol list for \`$libname.la'" 70077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols="$output_objdir/$libname.exp" 70087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $export_symbols 70097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$export_symbols_cmds 70107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS='~' 70117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for cmd in $cmds; do 70127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 70137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmd=\"$cmd\" 70147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $cmd" 70157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_len_result 70167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$cmd" 'exit $?' 70187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet skipped_export=false 70197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 70207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The command line is too long to execute in one step. 70217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "using reloadable object file for export list..." 70227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet skipped_export=: 70237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Break out early, otherwise skipped_export may be 70247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # set to false by a later but shorter cmd. 70257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 70267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 70287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 70297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$include_expsyms"; then 70377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_export_symbols="$export_symbols" 70387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The given exports_symbols file has to be filtered, so filter it. 70447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: $output_objdir/$libname.filter potentially contains lots of 70467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # 's' commands which not all seds can handle. GNU sed should be fine 70477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # though. Also, the filter scales superlinearly with the number of 70487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # global variables. join(1) would be nice here, but unfortunately 70497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # isn't a blessed tool. 70507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols=$output_objdir/$libname.def 70537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs= 70577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for test_deplib in $deplibs; do 70587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $convenience " in 70597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $test_deplib "*) ;; 70607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 70617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_deplibs="$tmp_deplibs $test_deplib" 70627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 70637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 70647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 70657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet deplibs="$tmp_deplibs" 70667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$convenience"; then 70687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$whole_archive_flag_spec" && 70697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$compiler_needs_object" = yes && 70707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libobjs"; then 70717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # extract the archives, so we have objects to list. 70727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # TODO: could optimize this to just extract one archive. 70737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet whole_archive_flag_spec= 70747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$whole_archive_flag_spec"; then 70767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_libobjs=$libobjs 70777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 70797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 70807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${outputname}x" 70817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 70827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives $gentop $convenience 70847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs="$libobjs $func_extract_archives_result" 70857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 70867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval flag=\"$thread_safe_flag_spec\" 70917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet linker_flags="$linker_flags $flag" 70927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make a backup of the uninstalled library when relinking 70957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = relink; then 70967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 70987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 70997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each of the archive commands. 71007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$module" = yes && test -n "$module_cmds" ; then 71017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 71027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$module_expsym_cmds\" 71037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$module_expsym_cmds 71047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$module_cmds\" 71067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$module_cmds 71077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 71087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$archive_expsym_cmds\" 71117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$archive_expsym_cmds 71127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$archive_cmds\" 71147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$archive_cmds 71157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 71167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 71177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 71187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$skipped_export" != "X:" && 71197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $test_cmds" && 71207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_len_result && 71217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 71237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The command line is too long to link in one step, link piecewise 71257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # or, if using GNU ld and skipped_export is not :, use a linker 71267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # script. 71277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 71287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Save the value of $output and $libobjs because we want to 71297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # use them later. If we have whole_archive_flag_spec, we 71307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # want to use save_libobjs as it was before 71317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # whole_archive_flag_spec was expanded, because we can't 71327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # assume the linker understands whole_archive_flag_spec. 71337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This may have to be revisited, in case too many 71347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # convenience libraries get linked in and end up exceeding 71357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the spec. 71367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_libobjs=$libobjs 71387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 71397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_output=$output 71407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 71417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 71427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Clear the reloadable object creation command queue and 71437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # initialize k to one. 71447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test_cmds= 71457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_cmds= 71467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objlist= 71477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet last_robj= 71487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet k=1 71497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 71507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=${output_objdir}/${output_la}.lnkscript 71527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating GNU ld script: $output" 71537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO 'INPUT (' > $output 71547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj in $save_libobjs 71557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 71567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$obj" >> $output 71577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 71587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO ')' >> $output 71597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $output" 71607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=${output_objdir}/${output_la}.lnk 71627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating linker input file list: $output" 71637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : > $output 71647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet set x $save_libobjs 71657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 71667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet firstobj= 71677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$compiler_needs_object" = yes; then 71687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet firstobj="$1 " 71697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet shift 71707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 71717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj 71727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 71737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$obj" >> $output 71747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 71757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $output" 71767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$firstobj\"$file_list_spec$output\" 71777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$save_libobjs"; then 71797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating reloadable object files..." 71807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$output_objdir/$output_la-${k}.$objext 71817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$reload_cmds\" 71827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $test_cmds" 71837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len0=$func_len_result 71847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$len0 71857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 71867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Loop over the list of objects to be linked. 71877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj in $save_libobjs 71887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 71897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $obj" 71907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $len + $func_len_result 71917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_arith_result 71927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$objlist" = X || 71937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$len" -lt "$max_cmd_len"; then 71947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append objlist " $obj" 71957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 71967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The command $test_cmds is almost too long, add a 71977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # command to the queue. 71987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$k" -eq 1 ; then 71997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The first file doesn't have a previous command to add. 72007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 72017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 72027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # All subsequent reloadable object files will link in 72037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the last one created. 72047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 72057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet last_robj=$output_objdir/$output_la-${k}.$objext 72077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $k + 1 72087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet k=$func_arith_result 72097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$output_objdir/$output_la-${k}.$objext 72107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objlist=$obj 72117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $last_robj" 72127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $len0 + $func_len_result 72137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_arith_result 72147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 72167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Handle the remaining objects by creating one last 72177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # reloadable object file. All subsequent reloadable object 72187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # files will link in the last one created. 72197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$last_robj"; then 72227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 72237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $output" 72257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 72277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output= 72287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ${skipped_export-false}; then 72317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "generating symbol list for \`$libname.la'" 72327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols="$output_objdir/$libname.exp" 72337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $export_symbols 72347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs=$output 72357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Append the command to create the export file. 72367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$last_robj"; then 72397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 72407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$save_libobjs" && 72447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating a temporary reloadable object file: $output" 72457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Loop through the commands generated above and execute them. 72477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS='~' 72487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for cmd in $concat_cmds; do 72497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 72507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_silent || { 72517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand "$cmd" 72527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "func_echo $func_quote_for_expand_result" 72537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 72547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval "$cmd" || { 72557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_exit=$? 72567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restore the uninstalled library and exit 72587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = relink; then 72597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ( cd "$output_objdir" && \ 72607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM "${realname}T" && \ 72617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV "${realname}U" "$realname" ) 72627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $lt_exit 72657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 72667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 72677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 72687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 72727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if ${skipped_export-false}; then 72767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$include_expsyms"; then 72777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tmp_export_symbols="$export_symbols" 72787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$orig_export_symbols"; then 72837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The given exports_symbols file has to be filtered, so filter it. 72847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: $output_objdir/$libname.filter potentially contains lots of 72867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # 's' commands which not all seds can handle. GNU sed should be fine 72877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # though. Also, the filter scales superlinearly with the number of 72887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # global variables. join(1) would be nice here, but unfortunately 72897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # isn't a blessed tool. 72907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet export_symbols=$output_objdir/$libname.def 72937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 72967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 72977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs=$output 72987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restore the value of output. 72997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$save_output 73007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 73027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 73037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 73047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Expand the library linking commands again to reset the 73067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # value of $libobjs for piecewise linking. 73077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each of the archive commands. 73097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$module" = yes && test -n "$module_cmds" ; then 73107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$module_expsym_cmds 73127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 73137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$module_cmds 73147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 73167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$archive_expsym_cmds 73187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 73197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$archive_cmds 73207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$delfiles"; then 73257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Append the command to remove temporary files to $cmds. 73267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmds=\"\$cmds~\$RM $delfiles\" 73277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add any objects from preloaded convenience libraries 73307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlprefiles"; then 73317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${outputname}x" 73327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 73337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives $gentop $dlprefiles 73357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobjs="$libobjs $func_extract_archives_result" 73367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "X$libobjs" = "X " && libobjs= 73377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_ifs="$IFS"; IFS='~' 73407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for cmd in $cmds; do 73417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 73427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmd=\"$cmd\" 73437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_silent || { 73447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_expand "$cmd" 73457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval "func_echo $func_quote_for_expand_result" 73467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 73477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval "$cmd" || { 73487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet lt_exit=$? 73497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restore the uninstalled library and exit 73517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = relink; then 73527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ( cd "$output_objdir" && \ 73537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM "${realname}T" && \ 73547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $MV "${realname}U" "$realname" ) 73557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $lt_exit 73587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 73597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 73607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet IFS="$save_ifs" 73617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Restore the uninstalled library and exit 73637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = relink; then 73647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 73657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$convenience"; then 73677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$whole_archive_flag_spec"; then 73687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '${RM}r "$gentop"' 73697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 73737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Create links to the real library. 73767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for linkname in $linknames; do 73777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$realname" != "$linkname"; then 73787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 73797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 73817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If -module or -export-dynamic was specified, set the dlname. 73837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$module" = yes || test "$export_dynamic" = yes; then 73847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # On all known operating systems, these are identical. 73857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlname="$soname" 73867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 73897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet obj) 73917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-dlopen' is ignored for objects" 73937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 73947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 73957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $deplibs" in 73967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *\ -l* | *\ -L*) 73977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-l' and \`-L' are ignored for objects" ;; 73987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 73997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$rpath" && \ 74017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-rpath' is ignored for objects" 74027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$xrpath" && \ 74047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-R' is ignored for objects" 74057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$vinfo" && \ 74077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-version-info' is ignored for objects" 74087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$release" && \ 74107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-release' is ignored for objects" 74117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $output in 74137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 74147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$objs$old_deplibs" && \ 74157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj=$output 74187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_lo2o "$libobj" 74197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet obj=$func_lo2o_result 74207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 74217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 74227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libobj= 74237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet obj="$output" 74247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 74257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 74267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the old objects. 74287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $obj $libobj 74297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Objects from convenience libraries. This assumes 74317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # single-version convenience libraries. Whenever we create 74327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # different ones for PIC/non-PIC, this we'll have to duplicate 74337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the extraction. 74347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet reload_conv_objs= 74357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop= 74367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # reload_cmds runs $LD directly, so let us get rid of 74377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # -Wl from whole_archive_flag_spec and hope we can get by with 74387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # turning comma into space.. 74397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wl= 74407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$convenience"; then 74427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$whole_archive_flag_spec"; then 74437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 74467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${obj}x" 74477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 74487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives $gentop $convenience 74507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet reload_conv_objs="$reload_objs $func_extract_archives_result" 74517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Create the old-style object. 74557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 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 74567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output="$obj" 74587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$reload_cmds" 'exit $?' 74597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Exit if we aren't doing a library object file. 74617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$libobj"; then 74627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$gentop"; then 74637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '${RM}r "$gentop"' 74647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 74677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" != yes; then 74707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$gentop"; then 74717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '${RM}r "$gentop"' 74727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Create an invalid libtool object if no PIC, so that we don't 74757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # accidentally link it into a program. 74767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $show "echo timestamp > $libobj" 74777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 74797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$pic_flag" || test "$pic_mode" != default; then 74827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only do commands if we really have different PIC objects. 74837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet reload_objs="$libobjs $reload_conv_objs" 74847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output="$libobj" 74857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$reload_cmds" 'exit $?' 74867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$gentop"; then 74897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '${RM}r "$gentop"' 74907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 74917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 74937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 74947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 74957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet prog) 74967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 74977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin*) func_stripname '' '.exe' "$output" 74987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$func_stripname_result.exe;; 74997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$vinfo" && \ 75017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-version-info' is ignored for programs" 75027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$release" && \ 75047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`-release' is ignored for programs" 75057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$preload" = yes \ 75077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && test "$dlopen_support" = unknown \ 75087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && test "$dlopen_self" = unknown \ 75097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet && test "$dlopen_self_static" = unknown && \ 75107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 75137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-rhapsody* | *-*-darwin1.[012]) 75147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # On Rhapsody replace the C library is the System framework 75157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 75217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-darwin*) 75227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't allow lazy linking, it breaks C++ global constructors 75237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # But is supposedly fixed on 10.4 or later (yay!). 75247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$tagname" = CXX ; then 75257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 10.[0123]) 75277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command="$compile_command ${wl}-bind_at_load" 75287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command="$finalize_command ${wl}-bind_at_load" 75297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 75327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # move library search paths that coincide with paths to not yet 75407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # installed libraries to the beginning of the library search list 75417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_libs= 75427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for path in $notinst_path; do 75437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_libs " in 75447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -L$path/$objdir "*) ;; 75457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 75467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $compile_deplibs " in 75477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" -L$path/$objdir "*) 75487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet new_libs="$new_libs -L$path/$objdir" ;; 75497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 75537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $compile_deplibs; do 75547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 75557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -L*) 75567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $new_libs " in 75577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $deplib "*) ;; 75587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_libs="$new_libs $deplib" ;; 75597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) new_libs="$new_libs $deplib" ;; 75627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 75647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_deplibs="$new_libs" 75657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command="$compile_command $compile_deplibs" 75687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command="$finalize_command $finalize_deplibs" 75697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$rpath$xrpath"; then 75717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # If the user specified any rpath flags, then add them. 75727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $rpath $xrpath; do 75737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This is the magic to use -rpath. 75747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$finalize_rpath " in 75757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 75767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_rpath="$finalize_rpath $libdir" ;; 75777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 75797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 75807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 75817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now hardcode the library paths 75827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 75837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs= 75847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $compile_rpath $finalize_rpath; do 75857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_flag_spec"; then 75867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator"; then 75877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$hardcode_libdirs"; then 75887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$libdir" 75897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 75907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just accumulate the unique libdirs. 75917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 75957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 75977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 75987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 75997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 76007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval flag=\"$hardcode_libdir_flag_spec\" 76017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$rpath $flag" 76027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$runpath_var"; then 76047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$perm_rpath " in 76057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 76067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) perm_rpath="$perm_rpath $libdir" ;; 76077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 76107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$dllsearchpath: in 76137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$libdir:"*) ;; 76147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ::) dllsearchpath=$libdir;; 76157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dllsearchpath="$dllsearchpath:$libdir";; 76167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case :$dllsearchpath: in 76187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *":$testbindir:"*) ;; 76197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ::) dllsearchpath=$testbindir;; 76207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) dllsearchpath="$dllsearchpath:$testbindir";; 76217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 76257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Substitute the hardcoded libdirs into the rpath. 76267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator" && 76277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$hardcode_libdirs"; then 76287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir="$hardcode_libdirs" 76297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval rpath=\" $hardcode_libdir_flag_spec\" 76307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_rpath="$rpath" 76327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 76337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 76347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs= 76357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for libdir in $finalize_rpath; do 76367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_flag_spec"; then 76377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator"; then 76387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$hardcode_libdirs"; then 76397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$libdir" 76407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 76417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Just accumulate the unique libdirs. 76427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 76467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 76517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval flag=\"$hardcode_libdir_flag_spec\" 76527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$rpath $flag" 76537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -n "$runpath_var"; then 76557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$finalize_perm_rpath " in 76567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $libdir "*) ;; 76577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 76617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Substitute the hardcoded libdirs into the rpath. 76627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$hardcode_libdir_separator" && 76637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$hardcode_libdirs"; then 76647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libdir="$hardcode_libdirs" 76657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval rpath=\" $hardcode_libdir_flag_spec\" 76667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_rpath="$rpath" 76687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 76697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$libobjs" && test "$build_old_libs" = yes; then 76707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Transform all the library objects into standard objects. 76717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 76757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 76767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 76777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # template prelinking step 76787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$prelink_cmds"; then 76797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$prelink_cmds" 'exit $?' 76807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 76827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrappers_required=yes 76837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 76847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* ) 76857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" != yes; then 76867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrappers_required=no 76877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cegcc) 76907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Disable wrappers for cegcc, we are cross compiling anyway. 76917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrappers_required=no 76927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 76947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet wrappers_required=no 76967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 76977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 76987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 76997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$wrappers_required" = no; then 77007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Replace the output file specification. 77017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command="$compile_command$compile_rpath" 77037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We have no uninstalled library dependencies, so finalize right now. 77057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit_status=0 77067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$link_command" 'exit_status=$?' 77077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the generated files. 77097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -f "$output_objdir/${outputname}S.${objext}"; then 77107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 77117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $exit_status 77147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$compile_shlibpath$finalize_shlibpath"; then 77177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$finalize_shlibpath"; then 77207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_var= 77247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_var= 77257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$runpath_var"; then 77267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$perm_rpath"; then 77277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We should set the runpath_var. 77287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 77297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir in $perm_rpath; do 77307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$rpath$dir:" 77317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 77327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 77337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$finalize_perm_rpath"; then 77357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We should set the runpath_var. 77367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath= 77377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir in $finalize_perm_rpath; do 77387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rpath="$rpath$dir:" 77397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 77407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 77417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$no_install" = yes; then 77457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # We don't need to create a wrapper script. 77467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command="$compile_var$compile_command$compile_rpath" 77477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Replace the output file specification. 77487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the old output file. 77507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $output 77517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Link the executable and exit 77527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$link_command" 'exit $?' 77537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 77547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_action" = relink; then 77577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Fast installation is not supported 77587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command="$compile_var$compile_command$compile_rpath" 77597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$finalize_var$finalize_command$finalize_rpath" 77607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "this platform does not like uninstalled shared libraries" 77627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_warning "\`$output' will be relinked during installation" 77637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 77647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" != no; then 77657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command="$finalize_var$compile_command$finalize_rpath" 77667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" = yes; then 77677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 77697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # fast_install is set to needless 77707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 77717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 77737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command="$compile_var$compile_command$compile_rpath" 77747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$finalize_var$finalize_command$finalize_rpath" 77757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 77777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Replace the output file specification. 77797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 77807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the old output files. 77827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 77837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$link_command" 'exit $?' 77857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now create the wrapper script. 77877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating $output" 77887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 77897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Quote the relink command for shipping. 77907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$relink_command"; then 77917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Preserve any variables that may affect compiler behavior 77927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for var in $variables_saved_for_relink; do 77937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval test -z \"\${$var+set}\"; then 77947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif eval var_value=\$$var; test -z "$var_value"; then 77967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$var=; export $var; $relink_command" 77977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 77987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$var_value" 77997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 78007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 78027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="(cd `pwd`; $relink_command)" 78037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 78047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Quote $ECHO for shipping. 78077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $progpath in 78097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 78117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 78127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 78147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only actually do things if not in dry run mode. 78187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 78197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # win32 will think the script is a binary if it has 78207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # a .exe suffix, so we strip it off here. 78217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $output in 78227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe) func_stripname '' '.exe' "$output" 78237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output=$func_stripname_result ;; 78247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 78257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # test for cygwin because mv fails w/o .exe extensions 78267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 78277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin*) 78287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exeext=.exe 78297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$outputname" 78307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet outputname=$func_stripname_result ;; 78317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) exeext= ;; 78327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 78337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host in 78347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin* | *mingw* ) 78357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname_and_basename "$output" "" "." 78367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_name=$func_basename_result 78377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output_path=$func_dirname_result 78387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cwrappersource="$output_path/$objdir/lt-$output_name.c" 78397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cwrapper="$output_path/$output_name.exe" 78407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM $cwrappersource $cwrapper 78417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_cwrapperexe_src > $cwrappersource 78447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # The wrapper executable is built using the $host compiler, 78467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # because it contains $host paths and files. If cross- 78477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # compiling, it, like the target executable, must be 78487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # executed on the $host or under an emulation environment. 78497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 78507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $STRIP $cwrapper 78527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 78537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now, create the wrapper script for func_source use: 78557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname $cwrapper 78567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM $func_ltwrapper_scriptname_result 78577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 78597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # note: this script will not be executed, so do not chmod. 78607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "x$build" = "x$host" ; then 78617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 78637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper no > $func_ltwrapper_scriptname_result 78647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 78667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 78677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * ) 78687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM $output 78697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 78707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_emit_wrapper no > $output 78727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet chmod +x $output 78737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 78747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 78757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 78767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 78777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 78787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 78797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # See if we need to build an old-fashioned archive. 78817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for oldlib in $oldlibs; do 78827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 78837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = convenience; then 78847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$libobjs_save $symfileobj" 78857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet addlibs="$convenience" 78867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 78877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 78887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$build_libtool_libs" = module; then 78897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$libobjs_save" 78907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet build_libtool_libs=no 78917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 78927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$old_deplibs $non_pic_objects" 78937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$preload" = yes && test -f "$symfileobj"; then 78947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$oldobjs $symfileobj" 78957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet addlibs="$old_convenience" 78987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 78997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$addlibs"; then 79017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${outputname}x" 79027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 79037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives $gentop $addlibs 79057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$oldobjs $func_extract_archives_result" 79067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 79077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the archive commands. 79097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$old_archive_from_new_cmds 79117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 79127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add any objects from preloaded convenience libraries 79147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$dlprefiles"; then 79157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${outputname}x" 79167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 79177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_extract_archives $gentop $dlprefiles 79197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$oldobjs $func_extract_archives_result" 79207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 79217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # POSIX demands no paths to be encoded in archives. We have 79237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # to avoid creating archives with duplicate basenames if we 79247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # might have to extract them afterwards, e.g., when creating a 79257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # static archive out of a convenience library, or when linking 79267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the entirety of a libtool archive into another (currently 79277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # not supported by libtool). 79287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if (for obj in $oldobjs 79297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 79307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$obj" 79317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "$func_basename_result" 79327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done | sort | sort -uc >/dev/null 2>&1); then 79337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 79347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 79357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO "copying selected object files to avoid basename conflicts..." 79367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet gentop="$output_objdir/${outputname}x" 79377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet generated="$generated $gentop" 79387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mkdir_p "$gentop" 79397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_oldobjs=$oldobjs 79407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs= 79417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet counter=1 79427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj in $save_oldobjs 79437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 79447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$obj" 79457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objbase="$func_basename_result" 79467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $oldobjs " in 79477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet " ") oldobjs=$obj ;; 79487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\ /]"$objbase "*) 79497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet while :; do 79507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Make sure we don't pick an alternate name that also 79517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # overlaps. 79527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newobj=lt$counter-$objbase 79537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $counter + 1 79547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet counter=$func_arith_result 79557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $oldobjs " in 79567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *[\ /]"$newobj "*) ;; 79577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 79597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 79607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs="$oldobjs $gentop/$newobj" 79627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 79637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) oldobjs="$oldobjs $obj" ;; 79647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 79657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 79667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 79677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmds=\"$old_archive_cmds\" 79687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 79697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $cmds" 79707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_len_result 79717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet cmds=$old_archive_cmds 79737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 79747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the command line is too long to link in one step, link in parts 79757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "using piecewise archive linking..." 79767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_RANLIB=$RANLIB 79777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet RANLIB=: 79787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objlist= 79797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet concat_cmds= 79807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet save_oldobjs=$oldobjs 79817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs= 79827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Is there a better way of finding the last object in the list? 79837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj in $save_oldobjs 79847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 79857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet last_oldobj=$obj 79867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 79877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval test_cmds=\"$old_archive_cmds\" 79887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $test_cmds" 79897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len0=$func_len_result 79907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$len0 79917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for obj in $save_oldobjs 79927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 79937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_len " $obj" 79947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_arith $len + $func_len_result 79957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$func_arith_result 79967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_append objlist " $obj" 79977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$len" -lt "$max_cmd_len"; then 79987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 79997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 80007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the above command should be used before it gets too long 80017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs=$objlist 80027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$obj" = "$last_oldobj" ; then 80037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet RANLIB=$save_RANLIB 80047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 80067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objlist= 80087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet len=$len0 80097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 80117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet RANLIB=$save_RANLIB 80127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet oldobjs=$objlist 80137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$oldobjs" = "X" ; then 80147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmds=\"\$concat_cmds\" 80157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 80167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$cmds" 'exit $?' 80217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 80227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 80237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$generated" && \ 80247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "${RM}r$generated" 80257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 80267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Now create the libtool archive. 80277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $output in 80287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 80297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet old_library= 80307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$build_old_libs" = yes && old_library="$libname.$libext" 80317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_verbose "creating $output" 80327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 80337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Preserve any variables that may affect compiler behavior 80347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for var in $variables_saved_for_relink; do 80357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if eval test -z \"\${$var+set}\"; then 80367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif eval var_value=\$$var; test -z "$var_value"; then 80387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$var=; export $var; $relink_command" 80397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 80407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_quote_for_eval "$var_value" 80417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 80427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 80447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Quote the link command for shipping. 80457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$hardcode_automatic" = yes ; then 80487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 80497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 80517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only create the output if not a dry run. 80527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_dry_run || { 80537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for installed in no yes; do 80547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$installed" = yes; then 80557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -z "$install_libdir"; then 80567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet break 80577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 80587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet output="$output_objdir/$outputname"i 80597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Replace all uninstalled libtool libraries with the installed ones 80607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs= 80617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for deplib in $dependency_libs; do 80627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $deplib in 80637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 80647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$deplib" 80657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 80667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libdir" && \ 80687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$deplib' is not a valid libtool archive" 80697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdependency_libs="$newdependency_libs $libdir/$name" 80707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 80717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) newdependency_libs="$newdependency_libs $deplib" ;; 80727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 80737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 80747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dependency_libs="$newdependency_libs" 80757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles= 80767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 80777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $dlfiles; do 80787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $lib in 80797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 80807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$lib" 80817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 80827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libdir" && \ 80847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$lib' is not a valid libtool archive" 80857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles="$newdlfiles $libdir/$name" 80867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 80877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) newdlfiles="$newdlfiles $lib" ;; 80887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 80897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 80907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$newdlfiles" 80917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles= 80927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $dlprefiles; do 80937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $lib in 80947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 80957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Only pass preopened files to the pseudo-archive (for 80967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # eventual linking with the app. that links it) if we 80977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # didn't already link the preopened objects directly into 80987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # the library: 80997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$lib" 81007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 81017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 81027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$libdir" && \ 81037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_error "\`$lib' is not a valid libtool archive" 81047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $libdir/$name" 81057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 81067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 81077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 81087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$newdlprefiles" 81097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 81107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles= 81117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $dlfiles; do 81127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $lib in 81137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) abs=`pwd`"/$lib" ;; 81157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 81167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlfiles="$newdlfiles $abs" 81177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 81187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlfiles="$newdlfiles" 81197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles= 81207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for lib in $dlprefiles; do 81217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $lib in 81227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) abs=`pwd`"/$lib" ;; 81247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 81257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet newdlprefiles="$newdlprefiles $abs" 81267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 81277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dlprefiles="$newdlprefiles" 81287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 81297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $RM $output 81307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # place dlname in correct position for cygwin 81317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet tdlname=$dlname 81327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $host,$output,$installed,$module,$dlname in 81337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 81357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO > $output "\ 81367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $outputname - a libtool library file 81377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 81397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Please DO NOT delete this file! 81407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# It is necessary for linking the library. 81417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name that we can dlopen(3). 81437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlname='$tdlname' 81447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Names of this library. 81467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibrary_names='$library_names' 81477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name of the static archive. 81497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetold_library='$old_library' 81507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Linker flags that can not go in dependency_libs. 81527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinherited_linker_flags='$new_inherited_linker_flags' 81537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Libraries that this one depends upon. 81557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdependency_libs='$dependency_libs' 81567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Names of additional weak libraries provided by this library 81587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetweak_library_names='$weak_libs' 81597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Version information for $libname. 81617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcurrent=$current 81627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetage=$age 81637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrevision=$revision 81647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Is this an already installed library? 81667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinstalled=$installed 81677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Should we warn about portability when linking against -modules? 81697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetshouldnotlink=$module 81707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Files to dlopen/dlpreopen 81727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlopen='$dlfiles' 81737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlpreopen='$dlprefiles' 81747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Directory that this library needs to be installed in: 81767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibdir='$install_libdir'" 81777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$installed" = no && test "$need_relink" = yes; then 81787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $ECHO >> $output "\ 81797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrelink_command=\"$relink_command\"" 81807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 81817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 81827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet } 81837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do a symbolic link so that the libtool archive can be found in 81857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # LD_LIBRARY_PATH before the program is installed. 81867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 81887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 81897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_SUCCESS 81907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 81917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ test "$mode" = link || test "$mode" = relink; } && 81937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mode_link ${1+"$@"} 81947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 81967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_uninstall arg... 81977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_uninstall () 81987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ 81997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet $opt_debug 82007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet RM="$nonopt" 82017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet files= 82027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmforce= 82037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit_status=0 82047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # This variable tells wrapper scripts just to set variables rather 82067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # than running their programs. 82077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet libtool_install_magic="$magic" 82087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for arg 82107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet do 82117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $arg in 82127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -f) RM="$RM $arg"; rmforce=yes ;; 82137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet -*) RM="$RM $arg" ;; 82147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) files="$files $arg" ;; 82157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 82167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 82177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -z "$RM" && \ 82197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify an RM program" 82207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmdirs= 82227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet origobjdir="$objdir" 82247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for file in $files; do 82257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_dirname "$file" "" "." 82267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet dir="$func_dirname_result" 82277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$dir" = X.; then 82287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objdir="$origobjdir" 82297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 82307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objdir="$dir/$origobjdir" 82317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_basename "$file" 82337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet name="$func_basename_result" 82347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$mode" = uninstall && objdir="$dir" 82357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Remember objdir for removal later, being careful to avoid duplicates 82377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = clean; then 82387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $rmdirs " in 82397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $objdir "*) ;; 82407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) rmdirs="$rmdirs $objdir" ;; 82417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 82427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Don't error if the file doesn't exist and rm -f was used. 82457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if { test -L "$file"; } >/dev/null 2>&1 || 82467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet { test -h "$file"; } >/dev/null 2>&1 || 82477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -f "$file"; then 82487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet : 82497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test -d "$file"; then 82507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit_status=1 82517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 82527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet elif test "$rmforce" = yes; then 82537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet continue 82547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$file" 82577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $name in 82597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.la) 82607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Possibly a libtool archive, so verify it. 82617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_lalib_p "$file"; then 82627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source $dir/$name 82637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Delete the libtool libraries and symlinks. 82657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for n in $library_names; do 82667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $objdir/$n" 82677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 82687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 82697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case "$mode" in 82717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet clean) 82727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case " $library_names " in 82737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # " " in the beginning catches empty $dlname 82747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *" $dlname "*) ;; 82757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) rmfiles="$rmfiles $objdir/$dlname" ;; 82767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 82777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 82787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 82797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet uninstall) 82807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$library_names"; then 82817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the postuninstall commands. 82827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$old_library"; then 82867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do each command in the old_postuninstall commands. 82877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 82887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # FIXME: should reinstall the best remaining shared library. 82907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 82917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 82927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 82937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 82947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.lo) 82967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Possibly a libtool object, so verify it. 82977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_lalib_p "$file"; then 82987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 82997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Read the .lo file 83007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source $dir/$name 83017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add PIC object to the list of files to remove. 83037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$pic_object" && 83047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$pic_object" != none; then 83057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $dir/$pic_object" 83067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Add non-PIC object to the list of files to remove. 83097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -n "$non_pic_object" && 83107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet test "$non_pic_object" != none; then 83117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $dir/$non_pic_object" 83127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 83157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *) 83177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$mode" = clean ; then 83187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet noexename=$name 83197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet case $file in 83207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *.exe) 83217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$file" 83227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet file=$func_stripname_result 83237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_stripname '' '.exe' "$name" 83247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet noexename=$func_stripname_result 83257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # $file with .exe has already been added to rmfiles, 83267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # add $file without .exe 83277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $file" 83287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 83297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 83307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Do a test to see if this is a libtool program. 83317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_p "$file"; then 83327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if func_ltwrapper_executable_p "$file"; then 83337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_ltwrapper_scriptname "$file" 83347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 83357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source $func_ltwrapper_scriptname_result 83367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet else 83387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet relink_command= 83397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_source $dir/$noexename 83407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # note $name still contains .exe if it was in $file originally 83437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # as does the version of $file that was added into $rmfiles 83447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 83457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "$fast_install" = yes && test -n "$relink_command"; then 83467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $objdir/lt-$name" 83477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test "X$noexename" != "X$name" ; then 83497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet rmfiles="$rmfiles $objdir/lt-${noexename}.c" 83507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet ;; 83547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet esac 83557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "$RM $rmfiles" 'exit_status=1' 83567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 83577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet objdir="$origobjdir" 83587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet # Try to remove the ${objdir}s in the directories where we deleted files 83607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet for dir in $rmdirs; do 83617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet if test -d "$dir"; then 83627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_show_eval "rmdir $dir >/dev/null 2>&1" 83637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet fi 83647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet done 83657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $exit_status 83677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 83687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ test "$mode" = uninstall || test "$mode" = clean; } && 83707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_mode_uninstall ${1+"$@"} 83717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest -z "$mode" && { 83737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet help="$generic_help" 83747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "you must specify a MODE" 83757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} 83767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest -z "$exec_cmd" && \ 83787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet func_fatal_help "invalid operation mode \`$mode'" 83797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n "$exec_cmd"; then 83817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet eval exec "$exec_cmd" 83827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet exit $EXIT_FAILURE 83837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi 83847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit $exit_status 83867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The TAGs below are defined such that we never get into a situation 83897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in which we disable both kinds of libraries. Given conflicting 83907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# choices, we go for a static library, that is the most portable, 83917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# since we can't tell whether shared libraries were disabled because 83927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the user asked for that or because the platform doesn't support 83937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# them. This is particularly important on AIX, because we don't 83947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# support having both static and shared libraries enabled at the same 83957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# time on that platform, so we default to a shared-only configuration. 83967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If a disable-shared tag is given, we'll fallback to a static-only 83977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# configuration. But we'll never go from static-only to shared-only. 83987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 83997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 84007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_libtool_libs=no 84017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_old_libs=yes 84027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### END LIBTOOL TAG CONFIG: disable-shared 84037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 84047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### BEGIN LIBTOOL TAG CONFIG: disable-static 84057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 84067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### END LIBTOOL TAG CONFIG: disable-static 84077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 84087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Local Variables: 84097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# mode:shell-script 84107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# sh-indentation:2 84117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# End: 84127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# vi:sw=2 84137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet 8414