1f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Generated from ltmain.m4sh. 2f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ltmain.sh (GNU libtool) 2.2.6 4f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 5f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 7f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This is free software; see the source for copying conditions. There is NO 8f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 10f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# GNU Libtool is free software; you can redistribute it and/or modify 11f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# it under the terms of the GNU General Public License as published by 12f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the Free Software Foundation; either version 2 of the License, or 13f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# (at your option) any later version. 14f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 15f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# As a special exception to the GNU General Public License, 16f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# if you distribute this file as part of a program or library that 17f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is built using GNU Libtool, you may include this file under the 18f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# same distribution terms that you use for the rest of that program. 19f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 20f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# GNU Libtool is distributed in the hope that it will be useful, but 21f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# WITHOUT ANY WARRANTY; without even the implied warranty of 22f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# General Public License for more details. 24f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 25f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# You should have received a copy of the GNU General Public License 26f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# along with GNU Libtool; see the file COPYING. If not, a copy 27f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# or obtained by writing to the Free Software Foundation, Inc., 29f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 31f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Usage: $progname [OPTION]... [MODE-ARG]... 32f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 33f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Provide generalized library-building support services. 34f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 35f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --config show all configuration variables 36f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --debug enable verbose shell tracing 37f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# -n, --dry-run display commands without modifying any files 38f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --features display basic configuration information and exit 39f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --mode=MODE use operation mode MODE 40f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --preserve-dup-deps don't remove duplicate dependency libraries 41f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --quiet, --silent don't print informational messages 42f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --tag=TAG use configuration variables from tag TAG 43f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# -v, --verbose print informational messages (default) 44f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# --version print version information 45f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# -h, --help print short or long help message 46f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 47f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# MODE must be one of the following: 48f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 49f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# clean remove files from the build directory 50f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# compile compile a source file into a libtool object 51f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# execute automatically set library path, then run a program 52f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# finish complete the installation of libtool libraries 53f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# install install libraries or executables 54f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# link create a library or an executable 55f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# uninstall remove libraries from an installed directory 56f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 57f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# MODE-ARGS vary depending on the MODE. 58f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 59f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 60f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# When reporting a bug, please describe a test case to reproduce it and 61f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include the following information: 62f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 63f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# host-triplet: $host 64f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# shell: $SHELL 65f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# compiler: $LTCC 66f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# compiler flags: $LTCFLAGS 67f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# linker: $LD (gnu? $with_gnu_ld) 68f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 69f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# automake: $automake_version 70f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# autoconf: $autoconf_version 71f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 72f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Report bugs to <bug-libtool@gnu.org>. 73f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 74f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsPROGRAM=ltmain.sh 75f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsPACKAGE=libtool 76f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsVERSION="2.2.6 Debian-2.2.6a-4" 77f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsTIMESTAMP="" 78f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelspackage_revision=1.3012 79f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 80f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Be Bourne compatible 81f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 82f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels emulate sh 83f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels NULLCMD=: 84f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 85f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # is contrary to our usage. Disable this feature. 86f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels alias -g '${1+"$@"}'='"$@"' 87f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels setopt NO_GLOB_SUBST 88f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselse 89f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 90f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi 91f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64 92f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh 93f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 94f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# NLS nuisances: We save the old values to restore during execute mode. 95f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Only set LANG and LC_ALL to C if already set. 96f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# These must not be set unconditionally because not all systems understand 97f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# e.g. LANG=C (notably SCO). 98f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_user_locale= 99f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_safe_locale= 100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdo 102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "if test \"\${$lt_var+set}\" = set; then 103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_$lt_var=\$$lt_var 104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $lt_var=C 105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export $lt_var 106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi" 109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdone 110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$lt_unset CDPATH 112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${CP="cp -f"} 118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${ECHO="echo"} 119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${EGREP="/bin/grep -E"} 120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${FGREP="/bin/grep -F"} 121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${GREP="/bin/grep"} 122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${LN_S="ln -s"} 123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${MAKE="make"} 124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${MKDIR="mkdir"} 125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${MV="mv -f"} 126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${RM="rm -f"} 127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${SED="/bin/sed"} 128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels: ${Xsed="$SED -e 1s/^X//"} 130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Global variables: 132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEXIT_SUCCESS=0 133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEXIT_FAILURE=1 134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsexit_status=$EXIT_SUCCESS 138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Make sure IFS has a sensible default 140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_nl=' 141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels' 142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIFS=" $lt_nl" 143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdirname="s,/[^/]*$,," 145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbasename="s,^.*/,," 146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_dirname_and_basename file append nondir_replacement 148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# perform func_basename and func_dirname in a single function 149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# call: 150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# dirname: Compute the dirname of FILE. If nonempty, 151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# add APPEND to the result, otherwise set result 152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# to NONDIR_REPLACEMENT. 153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# value returned in "$func_dirname_result" 154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# basename: Compute filename of FILE. 155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# value retuned in "$func_basename_result" 156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Implementation must be kept synchronized with func_dirname 157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# and func_basename. For efficiency, we do not delegate to 158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# those functions but instead duplicate the functionality here. 159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_dirname_and_basename () 160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract subdirectory from the argument. 162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$func_dirname_result" = "X${1}"; then 164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_result="${3}" 165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_result="$func_dirname_result${2}" 167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Generated shell functions inserted here. 172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is ksh but when the shell is invoked as "sh" and the current value of 175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the _XPG environment variable is not equal to 1 (one), the special 176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# positional parameter $0, within a function call, is the name of the 177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# function. 178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsprogpath="$0" 179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The name of this program: 181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# In the unlikely event $progname began with a '-', it would play havoc with 182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_echo (imagine progname=-n), so we prepend ./ in that case: 183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_dirname_and_basename "$progpath" 184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsprogname=$func_basename_result 185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscase $progname in 186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) progname=./$progname ;; 187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsesac 188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Make sure we have an absolute path for reexecution: 190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscase $progpath in 191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]*|[A-Za-z]:\\*) ;; 192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\\/]*) 193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progdir=$func_dirname_result 194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progdir=`cd "$progdir" && pwd` 195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progpath="$progdir/$progname" 196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_IFS="$IFS" 199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=: 200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for progdir in $PATH; do 201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_IFS" 202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -x "$progdir/$progname" && break 203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_IFS" 205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$progdir" || progdir=`pwd` 206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progpath="$progdir/$progname" 207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsesac 209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Sed substitution that helps us do robust quoting. It backslashifies 211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# metacharacters that are still active within double-quoted strings. 212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsXsed="${SED}"' -e 1s/^X//' 213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelssed_quote_subst='s/\([`"$\\]\)/\\\1/g' 214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Same as above, but do not quote variable references. 216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Re-`\' parameter expansions in output of double_quote_subst that were 219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# in input to double_quote_subst, that '$' was protected from expansion. 221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Since each input `\' is now two `\'s, look for any number of runs of 222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbs='\\' 224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbs2='\\\\' 225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbs4='\\\\\\\\' 226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdollar='\$' 227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelssed_double_backslash="\ 228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/$bs4/&\\ 229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/g 230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^$bs2$dollar/$bs&/ 231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\n//g" 233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Standard options: 235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_dry_run=false 236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_help=false 237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_quiet=false 238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_verbose=false 239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_warning=: 240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_echo arg... 242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message, along with the current mode 243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# name if it has been set yet. 244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_echo () 245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$progname${mode+: }$mode: $*" 247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_verbose arg... 250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message in verbose mode only. 251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_verbose () 252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_verbose && func_echo ${1+"$@"} 254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A bug in bash halts the script if the last line of a function 256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # fails when set -e is in force, so we need another command to 257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # work around that: 258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_error arg... 262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message to standard error. 263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_error () 264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_warning arg... 269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed warning message to standard error. 270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_warning () 271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # bash bug again: 275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_fatal_error arg... 279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message to standard error, and exit. 280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_fatal_error () 281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error ${1+"$@"} 283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_fatal_help arg... 287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message to standard error, followed by 288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# a help hint, and exit. 289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_fatal_help () 290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error ${1+"$@"} 292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "$help" 293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelshelp="Try \`$progname --help' for more information." ## default 295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_grep expression filename 298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Check whether EXPRESSION matches any line of FILENAME, without output. 299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_grep () 300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP "$1" "$2" >/dev/null 2>&1 302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mkdir_p directory-path 306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Make sure the entire path to DIRECTORY-PATH is available. 307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mkdir_p () 308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_directory_path="$1" 310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_dir_list= 311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Protect directory names starting with `-' 315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $my_directory_path in 316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) my_directory_path="./$my_directory_path" ;; 317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # While some portion of DIR does not yet exist... 320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test ! -d "$my_directory_path"; do 321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # ...make a list in topmost first order. Use a colon delimited 322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # list incase some portion of path contains whitespace. 323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_dir_list="$my_directory_path:$my_dir_list" 324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the last portion added has no slash in it, the list is done 326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $my_directory_path in */*) ;; *) break ;; esac 327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # ...otherwise throw away the child directory and loop 329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_mkdir_p_IFS="$IFS"; IFS=':' 334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for my_dir in $my_dir_list; do 335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_mkdir_p_IFS" 336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # mkdir can fail with a `File exist' error if two processes 337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # try to create one of the directories concurrently. Don't 338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # stop in that case! 339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MKDIR "$my_dir" 2>/dev/null || : 340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_mkdir_p_IFS" 342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Bail out if we (or some other process) failed to create a directory. 344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -d "$my_directory_path" || \ 345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "Failed to create \`$1'" 346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mktempdir [string] 351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Make a temporary directory that won't clash with other running 352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# libtool processes, and avoids race conditions if possible. If 353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# given, STRING is the basename for that directory. 354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mktempdir () 355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_template="${TMPDIR-/tmp}/${1-$progname}" 357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$opt_dry_run" = ":"; then 359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Return a directory name, but don't create it in dry-run mode 360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_tmpdir="${my_template}-$$" 361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If mktemp works, use that first and foremost 364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -d "$my_tmpdir"; then 367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Failing that, at least try and use $RANDOM to avoid a race 368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_tmpdir="${my_template}-${RANDOM-0}$$" 369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_mktempdir_umask=`umask` 371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels umask 0077 372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MKDIR "$my_tmpdir" 373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels umask $save_mktempdir_umask 374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If we're not in dry-run mode, bomb out on failure 377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -d "$my_tmpdir" || \ 378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "X$my_tmpdir" | $Xsed 382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_quote_for_eval arg 386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Aesthetically quote ARG to be evaled later. 387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is double-quoted, suitable for a subsequent eval, whereas 389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# which are still active within double quotes backslashified. 391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_quote_for_eval () 392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\\\`\"\$]*) 395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval_unquoted_result="$1" ;; 398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $func_quote_for_eval_unquoted_result in 401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Double-quote args containing shell metacharacters to delay 402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # word splitting, command substitution and and variable 403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # expansion for a subsequent eval. 404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Many Bourne shells cannot handle close brackets correctly 405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # in scan sets, so we specify it separately. 406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_quote_for_expand arg 416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Aesthetically quote ARG to be evaled later; same as above, 417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# but do not quote variable references. 418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_quote_for_expand () 419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\\\`\"]*) 422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_arg=`$ECHO "X$1" | $Xsed \ 423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_arg="$1" ;; 426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $my_arg in 429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Double-quote args containing shell metacharacters to delay 430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # word splitting and command substitution for a subsequent eval. 431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Many Bourne shells cannot handle close brackets correctly 432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # in scan sets, so we specify it separately. 433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_arg="\"$my_arg\"" 435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand_result="$my_arg" 439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_show_eval cmd [fail_exp] 443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is given, then evaluate it. 446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_show_eval () 447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_cmd="$1" 449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_fail_exp="${2-:}" 450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ${opt_silent-false} || { 452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand "$my_cmd" 453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ${opt_dry_run-false}; then :; else 457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$my_cmd" 458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_status=$? 459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$my_status" -eq 0; then :; else 460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "(exit $my_status); $my_fail_exp" 461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_show_eval_locale cmd [fail_exp] 467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is given, then evaluate it. Use the saved locale for evaluation. 470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_show_eval_locale () 471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_cmd="$1" 473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_fail_exp="${2-:}" 474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ${opt_silent-false} || { 476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand "$my_cmd" 477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ${opt_dry_run-false}; then :; else 481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$lt_user_locale 482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $my_cmd" 483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_status=$? 484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$lt_safe_locale" 485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$my_status" -eq 0; then :; else 486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "(exit $my_status); $my_fail_exp" 487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_version 496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo version message to standard output and exit. 497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_version () 498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# // 501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# *$// 502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p 504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels }' < "$progpath" 505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_usage 509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo short help message to standard output and exit. 510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_usage () 511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -n '/^# Usage:/,/# -h/ { 513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# // 514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# *$// 515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\$progname/'$progname'/ 516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p 517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels }' < "$progpath" 518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "run \`$progname --help | more' for full usage" 520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_help 524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo long help message to standard output and exit. 525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_help () 526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -n '/^# Usage:/,/# Report bugs to/ { 528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# // 529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/^# *$// 530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$progname*'$progname'* 531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$host*'"$host"'* 532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$SHELL*'"$SHELL"'* 533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$LTCC*'"$LTCC"'* 534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$LTCFLAGS*'"$LTCFLAGS"'* 535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s*\$LD*'"$LD"'* 536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\$with_gnu_ld/'"$with_gnu_ld"'/ 537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p 540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels }' < "$progpath" 541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_missing_arg argname 545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message to standard error and set global 546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# exit_cmd. 547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_missing_arg () 548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "missing argument for $1" 550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit_cmd=exit 551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsexit_cmd=: 554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Check that we have a working $ECHO. 560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test "X$1" = X--no-reexec; then 561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Discard the --no-reexec flag, and continue. 562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselif test "X$1" = X--fallback-echo; then 564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Avoid inline document here, it may be left over 565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Yippee, $ECHO works! 568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselse 570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restart under the correct shell, and then maybe $ECHO will work. 571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec $SHELL "$progpath" --no-reexec ${1+"$@"} 572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi 573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test "X$1" = X--fallback-echo; then 575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # used as fallback echo 576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$* 579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi 582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsmagic="%%%MAGIC variable%%%" 584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsmagic_exe="%%%MAGIC EXE variable%%%" 585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Global variables. 587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $mode is unset 588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsnonopt= 589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsexecute_dlfiles= 590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelspreserve_args= 591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslo2o="s/\\.lo\$/.${objext}/" 592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelso2lo="s/\\.${objext}\$/.lo/" 593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsextracted_archives= 594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsextracted_serial=0 595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_dry_run=false 597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_duplicate_deps=false 598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_silent=false 599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsopt_debug=: 600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# If this variable is set in any of the actions, the command in it 602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# will be execed at the end. This prevents here-documents from being 603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# left over by shells. 604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsexec_cmd= 605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_fatal_configuration arg... 607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Echo program name prefixed message to standard error, followed by 608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# a configuration failure hint, and exit. 609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_fatal_configuration () 610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error ${1+"$@"} 612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "See the $PACKAGE documentation for more information." 613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "Fatal configuration error." 614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_config 618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Display the configuration for all the tags in this script. 619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_config () 620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels re_begincf='^# ### BEGIN LIBTOOL' 622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels re_endcf='^# ### END LIBTOOL' 623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Default configuration. 625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now print the configurations for the tags. 628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for tagname in $taglist; do 629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_features 636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Display the features supported by this script. 637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_features () 638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "host: $host" 640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "enable shared libraries" 642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "disable shared libraries" 644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes; then 646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "enable static libraries" 647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "disable static libraries" 649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_enable_tag tagname 655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Verify that TAGNAME is valid, and either flag an error and exit, or 656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# variable here. 658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_enable_tag () 659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Global variable: 661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tagname="$1" 662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sed_extractcf="/$re_begincf/,/$re_endcf/p" 666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Validate tagname. 668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $tagname in 669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[!-_A-Za-z0-9,/]*) 670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "invalid tag name: $tagname" 671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't test for the "default" C tag, as we know it's 675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # there but not specially marked. 676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $tagname in 677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels CC) ;; 678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels taglist="$taglist $tagname" 681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Evaluate the configuration. Be careful to quote the path 683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # and the sed script, to avoid splitting on whitespace, but 684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # also don't use non-portable quotes within backquotes within 685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # quotes we have to do it in 2 steps: 686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$extractedcf" 688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "ignoring unknown tag $tagname" 690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Parse options once, thoroughly. This comes as soon as possible in 696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the script to make things like `libtool --version' happen quickly. 697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Shorthand for --mode=foo, only valid as the first argument 700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels clean|clea|cle|cl) 702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode clean ${1+"$@"}; shift 703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile|compil|compi|comp|com|co|c) 705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode compile ${1+"$@"}; shift 706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels execute|execut|execu|exec|exe|ex|e) 708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode execute ${1+"$@"}; shift 709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finish|finis|fini|fin|fi|f) 711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode finish ${1+"$@"}; shift 712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install|instal|insta|inst|ins|in|i) 714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode install ${1+"$@"}; shift 715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link|lin|li|l) 717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode link ${1+"$@"}; shift 718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift; set dummy --mode uninstall ${1+"$@"}; shift 721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Parse non-mode specific arguments: 725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test "$#" -gt 0; do 726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt="$1" 727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $opt in 730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --config) func_config ;; 731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --debug) preserve_args="$preserve_args $opt" 733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_echo "enabling shell trace mode" 734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_debug='set -x' 735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels execute_dlfiles="$execute_dlfiles $1" 740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --dry-run | -n) opt_dry_run=: ;; 744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --features) func_features ;; 745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --finish) mode="finish" ;; 746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Valid mode arguments: 750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels clean) ;; 751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile) ;; 752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels execute) ;; 753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finish) ;; 754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install) ;; 755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link) ;; 756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink) ;; 757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels uninstall) ;; 758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Catch anything else as an error 760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) func_error "invalid argument for $opt" 761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit_cmd=exit 762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels mode="$1" 767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --preserve-dup-deps) 771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_duplicate_deps=: ;; 772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --quiet|--silent) preserve_args="$preserve_args $opt" 774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_silent=: 775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --verbose| -v) preserve_args="$preserve_args $opt" 778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_silent=false 779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels preserve_args="$preserve_args $opt $1" 783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_enable_tag "$1" # tagname is set here 784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Separate optargs to long options: 788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlopen=*|--mode=*|--tag=*) 789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_opt_split "$opt" 790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -\?|-h) func_usage ;; 795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --help) opt_help=: ;; 796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels --version) func_version ;; 797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) func_fatal_help "unrecognized option \`$opt'" ;; 799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) nonopt="$opt" 801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* | *pw32* | *cegcc*) 809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # don't eliminate duplications in $postdeps and $predeps 810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_duplicate_compiler_generated_deps=: 811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Having warned about all mis-specified options, bail out if 818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # anything was wrong. 819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $exit_cmd $EXIT_FAILURE 820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_check_version_match 823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Ensure that we are using m4 macros, and libtool script from the same 824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# release of libtool. 825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_check_version_match () 826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$package_revision" != "$macro_revision"; then 828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$VERSION" != "$macro_version"; then 829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$macro_version"; then 830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat >&2 <<_LT_EOF 831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: definition of this LT_INIT comes from an older release. 833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: and run autoconf again. 835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels_LT_EOF 836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat >&2 <<_LT_EOF 838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: and run autoconf again. 842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels_LT_EOF 843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat >&2 <<_LT_EOF 846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: but the definition of this LT_INIT comes from revision $macro_revision. 848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from revision $package_revision 849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$progname: of $PACKAGE $VERSION and run autoconf again. 850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels_LT_EOF 851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_MISMATCH 854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels## ----------- ## 859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels## Main. ## 860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels## ----------- ## 861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$opt_help || { 863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Sanity checks first: 864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_check_version_match 865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "not configured to build any kind of library" 868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$mode" && func_fatal_error "error: you must specify a MODE." 871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Darwin sucks 874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval std_shrext=\"$shrext_cmds\" 875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only execute mode is allowed to have -dlopen flags. 878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$execute_dlfiles" && test "$mode" != execute; then 879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "unrecognized option \`-dlopen'" 880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$help" 1>&2 881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Change the help message to a mode-specific one. 885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generic_help="$help" 886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels help="Try \`$progname --help --mode=$mode' for more information." 887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_lalib_p file 891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file. 892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# determined imposters. 894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_lalib_p () 895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$1" && 897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e 4q "$1" 2>/dev/null \ 898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_lalib_unsafe_p file 902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file. 903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function implements the same check as func_lalib_p without 904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# resorting to external programs. To this end, it redirects stdin and 905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# closes it afterwards, without saving the original file descriptor. 906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# As a safety measure, use it only where a negative result would be 907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# fatal anyway. Works if `file' does not exist. 908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_lalib_unsafe_p () 909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lalib_p=no 911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lalib_p_l in 1 2 3 4 913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels read lalib_p_line 915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$lalib_p_line" in 916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec 0<&5 5<&- 920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$lalib_p" = yes 922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_ltwrapper_script_p file 925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# True iff FILE is a libtool wrapper script 926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# determined imposters. 928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_ltwrapper_script_p () 929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lalib_p "$1" 931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_ltwrapper_executable_p file 934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# True iff FILE is a libtool wrapper executable 935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# determined imposters. 937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_ltwrapper_executable_p () 938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_exec_suffix= 940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe) ;; 942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) func_ltwrapper_exec_suffix=.exe ;; 943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_ltwrapper_scriptname file 948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Assumes file is an ltwrapper_executable 949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# uses $file to determine the appropriate filename for a 950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# temporary ltwrapper_script. 951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_ltwrapper_scriptname () 952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname_result="" 954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_executable_p "$1"; then 955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_and_basename "$1" "" "." 956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$func_basename_result" 957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_ltwrapper_p file 962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# True iff FILE is a libtool wrapper script or wrapper executable 963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out 964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# determined imposters. 965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_ltwrapper_p () 966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_execute_cmds commands fail_cmd 972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Execute tilde-delimited COMMANDS. 973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# If FAIL_CMD is given, eval that upon failure. 974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# FAIL_CMD may read-access the current command in variable CMD! 975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_execute_cmds () 976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs=$IFS; IFS='~' 979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for cmd in $1; do 980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=$save_ifs 981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmd=\"$cmd\" 982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$cmd" "${2-:}" 983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=$save_ifs 985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_source file 989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Source FILE, adding directory component if necessary. 990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Note that it is not necessary on cygwin/mingw to append a dot to 991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# behavior happens only for exec(3), not for open(2)! Also, sourcing 993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# `FILE.' does not work on cygwin managed mounts. 994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_source () 995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $1 in 998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels */* | *\\*) . "$1" ;; 999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) . "./$1" ;; 1000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_infer_tag arg 1005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Infer tagged configuration to use if any are available and 1006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# if one wasn't chosen via the "--tag" command line option. 1007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Only attempt this if the compiler in the base compile 1008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# command doesn't match the default compiler. 1009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# arg is usually of the form 'gcc ...' 1010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_infer_tag () 1011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 1013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$available_tags" && test -z "$tagname"; then 1014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels CC_quoted= 1015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg in $CC; do 1016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 1017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels CC_quoted="$CC_quoted $func_quote_for_eval_result" 1018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $@ in 1020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Blanks in the command may have been stripped by the calling shell, 1021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # but not from the CC environment variable when configure was run. 1022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 1023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Blanks at the start of $base_compile will cause this to fail 1024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # if we don't check for them as well. 1025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for z in $available_tags; do 1027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Evaluate the configuration. 1029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels CC_quoted= 1031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg in $CC; do 1032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Double-quote args containing other shell metacharacters. 1033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 1034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels CC_quoted="$CC_quoted $func_quote_for_eval_result" 1035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$@ " in 1037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 1038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The compiler in the base compile command matches 1039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the one in the tagged configuration. 1040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Assume this is the tagged configuration we want. 1041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tagname=$z 1042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 1043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If $tagname still isn't set, then no tagged configuration 1048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # was found and let the user know that the "--tag" command 1049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # line option must be used. 1050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$tagname"; then 1051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_echo "unable to infer tagged configuration" 1052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "specify a tag with \`--tag'" 1053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# else 1054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_verbose "using $tagname tagged configuration" 1055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_write_libtool_object output_name pic_name nonpic_name 1064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Create a libtool object file (analogous to a ".la" file), 1065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# but don't create it if we're doing a dry run. 1066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_write_libtool_object () 1067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels write_libobj=${1} 1069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 1070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels write_lobj=\'${2}\' 1071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels write_lobj=none 1073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes; then 1076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels write_oldobj=\'${3}\' 1077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels write_oldobj=none 1079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 1082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat >${write_libobj}T <<EOF 1083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $write_libobj - a libtool object file 1084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 1086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Please DO NOT delete this file! 1087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# It is necessary for linking the library. 1088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Name of the PIC object. 1090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelspic_object=$write_lobj 1091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Name of the non-PIC object 1093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsnon_pic_object=$write_oldobj 1094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 1096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV "${write_libobj}T" "${write_libobj}" 1097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 1098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_compile arg... 1101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_compile () 1102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 1104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Get the compilation command and the source file. 1105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels base_compile= 1106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels suppress_opt=yes 1108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels suppress_output= 1109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg_mode=normal 1110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj= 1111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels later= 1112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pie_flag= 1113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg 1115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 1116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg_mode in 1117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg ) 1118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # do not "continue". Instead, add this to base_compile 1119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lastarg="$arg" 1120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg_mode=normal 1121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels target ) 1124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj="$arg" 1125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg_mode=normal 1126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels normal ) 1130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Accept any command-line options. 1131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 1132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -o) 1133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$libobj" && \ 1134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "you cannot specify \`-o' more than once" 1135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg_mode=target 1136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -pie | -fpie | -fPIE) 1140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pie_flag="$pie_flag $arg" 1141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared | -static | -prefer-pic | -prefer-non-pic) 1145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels later="$later $arg" 1146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-suppress) 1150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels suppress_opt=no 1151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Xcompiler) 1155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg_mode=arg # the next one goes into the "base_compile" arg list 1156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue # The current "srcfile" will either be retained or 1157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; # replaced later. I would guess that would be a bug. 1158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Wc,*) 1160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-Wc,' '' "$arg" 1161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels args=$func_stripname_result 1162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lastarg= 1163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS=',' 1164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg in $args; do 1165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 1166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 1167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lastarg="$lastarg $func_quote_for_eval_result" 1168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 1170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname ' ' '' "$lastarg" 1171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lastarg=$func_stripname_result 1172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the arguments to base_compile. 1174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels base_compile="$base_compile $lastarg" 1175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Accept the current argument as the source file. 1180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The previous "srcfile" becomes the current argument. 1181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # 1182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lastarg="$srcfile" 1183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels srcfile="$arg" 1184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # case $arg 1186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # case $arg_mode 1188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Aesthetically quote the previous argument. 1190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$lastarg" 1191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels base_compile="$base_compile $func_quote_for_eval_result" 1192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # for arg 1193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg_mode in 1195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg) 1196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "you must specify an argument for -Xcompile" 1197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels target) 1199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "you must specify a target with \`-o'" 1200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Get the name of the library object. 1203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libobj" && { 1204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$srcfile" 1205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj="$func_basename_result" 1206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 1207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Recognize several different file suffixes. 1211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the user specifies -o file.o, it is replaced with file.lo 1212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $libobj in 1213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.[cCFSifmso] | \ 1214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.ada | *.adb | *.ads | *.asm | \ 1215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 1216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.[fF][09]? | *.for | *.java | *.obj | *.sx) 1217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_xform "$libobj" 1218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj=$func_xform_result 1219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $libobj in 1223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 1224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot determine name of library object from \`$libobj'" 1226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_infer_tag $base_compile 1230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg in $later; do 1232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 1233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared) 1234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_libtool_libs" != yes && \ 1235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "can not build a shared library" 1236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=no 1237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static) 1241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 1242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 1243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -prefer-pic) 1247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_mode=yes 1248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -prefer-non-pic) 1252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_mode=no 1253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$libobj" 1259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobj" != "X$func_quote_for_eval_result" \ 1260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 1261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && func_warning "libobj name \`$libobj' may not contain shell special characters." 1262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_and_basename "$obj" "/" "" 1263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objname="$func_basename_result" 1264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xdir="$func_dirname_result" 1265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lobj=${xdir}$objdir/$objname 1266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$base_compile" && \ 1268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify a compilation command" 1269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete any leftover library objects. 1271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes; then 1272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist="$obj $lobj $libobj ${libobj}T" 1273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist="$lobj $libobj ${libobj}T" 1275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # On Cygwin there's no "real" PIC flag so we must build both object types 1278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host_os in 1279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cygwin* | mingw* | pw32* | os2* | cegcc*) 1280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_mode=default 1281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 1284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # non-PIC code in shared libraries is not supported 1285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_mode=default 1286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Calculate the filename of the output object if compiler does 1289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # not support -o with -c 1290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$compiler_c_o" = no; then 1291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 1292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lockfile="$output_obj.lock" 1293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_obj= 1295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels need_locks=no 1296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lockfile= 1297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Lock this critical section if it is needed 1300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We use this script file to make the link, it avoids creating a new file 1301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_locks" = yes; then 1302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 1303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_echo "Waiting for $lockfile to be removed" 1304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sleep 2 1305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$need_locks" = warn; then 1307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$lockfile"; then 1308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 1309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels*** ERROR, $lockfile exists and contains: 1310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels`cat $lockfile 2>/dev/null` 1311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis indicates that another process is trying to use the same 1313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstemporary object file, and libtool could not work around it because 1314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 1315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 1316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 1317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscompiler." 1318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $removelist 1320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 1321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist="$removelist $output_obj" 1323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$srcfile" > "$lockfile" 1324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $removelist 1327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist="$removelist $lockfile" 1328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 1329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$fix_srcfile_path"; then 1331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval srcfile=\"$fix_srcfile_path\" 1332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$srcfile" 1334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels qsrcfile=$func_quote_for_eval_result 1335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only build a PIC object if we are building libtool libraries. 1337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 1338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Without this assignment, base_compile gets emptied. 1339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fbsd_hideous_sh_bug=$base_compile 1340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pic_mode" != no; then 1342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$base_compile $qsrcfile $pic_flag" 1343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't build PIC code 1345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$base_compile $qsrcfile" 1346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mkdir_p "$xdir$objdir" 1349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$output_obj"; then 1351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Place PIC objects in $objdir 1352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$command -o $lobj" 1353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval_locale "$command" \ 1356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 1357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_locks" = warn && 1359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 1361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels*** ERROR, $lockfile contains: 1362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels`cat $lockfile 2>/dev/null` 1363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbut it should contain: 1365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$srcfile 1366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis indicates that another process is trying to use the same 1368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstemporary object file, and libtool could not work around it because 1369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 1370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 1371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 1372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscompiler." 1373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $removelist 1375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 1376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just move the object if needed, then go on to compile the next one 1379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 1380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$MV "$output_obj" "$lobj"' \ 1381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Allow error messages only from the first compilation. 1385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$suppress_opt" = yes; then 1386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels suppress_output=' >/dev/null 2>&1' 1387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only build a position-dependent object if we build old libraries. 1391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes; then 1392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pic_mode" != yes; then 1393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't build PIC code 1394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$base_compile $qsrcfile$pie_flag" 1395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$base_compile $qsrcfile $pic_flag" 1397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$compiler_c_o" = yes; then 1399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$command -o $obj" 1400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Suppress compiler output if we already did a PIC compilation. 1403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels command="$command$suppress_output" 1404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval_locale "$command" \ 1405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_locks" = warn && 1408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 1410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels*** ERROR, $lockfile contains: 1411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels`cat $lockfile 2>/dev/null` 1412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbut it should contain: 1414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$srcfile 1415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis indicates that another process is trying to use the same 1417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstemporary object file, and libtool could not work around it because 1418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together. If you 1419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better 1420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better 1421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscompiler." 1422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $removelist 1424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 1425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just move the object if needed 1428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$MV "$output_obj" "$obj"' \ 1430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 1435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 1436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Unlock the critical section if it was locked 1438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_locks" != no; then 1439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist=$lockfile 1440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM "$lockfile" 1441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 1443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 1445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$opt_help || { 1448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest "$mode" = compile && func_mode_compile ${1+"$@"} 1449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_help () 1452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need to display help for each of the modes. 1454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $mode in 1455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels "") 1456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Generic help is extracted from the usage comments 1457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # at the start of this file. 1458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_help 1459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels clean) 1462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 1464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsRemove files from the build directory. 1466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE 1468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsto RM. 1470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf FILE is a libtool library, object or program, all the files associated 1472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelswith it are deleted. Otherwise, only FILE itself is deleted using RM." 1473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile) 1476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsCompile a source file into a libtool library object. 1480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis mode accepts the following additional options: 1482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -o OUTPUT-FILE set the output file name to OUTPUT-FILE 1484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-suppress do not suppress compiler output for multiple passes 1485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -prefer-pic try to building PIC objects only 1486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -prefer-non-pic try to building non-PIC objects only 1487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared do not build a \`.o' file suitable for static linking 1488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static only build a \`.o' file suitable for static linking 1489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 1491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfrom the given SOURCEFILE. 1492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThe output file name is determined by removing the directory component from 1494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsSOURCEFILE, then substituting the C source code suffix \`.c' with the 1495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslibrary object suffix, \`.lo'." 1496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels execute) 1499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 1501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsAutomatically set library path, then run a program. 1503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis mode accepts the following additional options: 1505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlopen FILE add the directory containing FILE to the library path 1507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThis mode sets the library path environment variable according to \`-dlopen' 1509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsflags. 1510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf any of the ARGS are libtool executable wrappers, then they are translated 1512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsinto their corresponding uninstalled binary, and any of their required library 1513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdirectories are added to the library path. 1514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThen, COMMAND is executed, with ARGS as arguments." 1516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finish) 1519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsComplete the installation of libtool libraries. 1523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEach LIBDIR is a directory that contains libtool libraries. 1525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThe commands that this mode executes may require superuser privileges. Use 1527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsthe \`--dry-run' option if you just want to see what would be executed." 1528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install) 1531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsInstall executables or libraries. 1535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsINSTALL-COMMAND is the installation command. The first component should be 1537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelseither the \`install' or \`cp' program. 1538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThe following components of INSTALL-COMMAND are treated specially: 1540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThe rest of the components are interpreted as arguments to that command (only 1544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsBSD-compatible install options are recognized)." 1545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link) 1548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsLink object files or libraries together to form another library, or to 1552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscreate an executable program. 1553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsLINK-COMMAND is a command using the C compiler that you would use to create 1555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsa program from several object files. 1556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsThe following components of LINK-COMMAND are treated specially: 1558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -all-static do not do any dynamic linking at all 1560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -avoid-version do not add a version suffix if possible 1561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 1562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 1563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -export-symbols SYMFILE 1565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels try to export only the symbols listed in SYMFILE 1566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -export-symbols-regex REGEX 1567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels try to export only the symbols matching REGEX 1568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -LLIBDIR search LIBDIR for required installed libraries 1569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -lNAME OUTPUT-FILE requires the installed library libNAME 1570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -module build a library that can dlopened 1571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-fast-install disable the fast-install mode 1572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-install link a not-installable executable 1573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-undefined declare that a library does not refer to external symbols 1574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 1575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -objectlist FILE Use a list of object files found in FILE to specify objects 1576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -precious-files-regex REGEX 1577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels don't remove output files matching REGEX 1578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -release RELEASE specify package release information 1579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -rpath LIBDIR the created library will eventually be installed in LIBDIR 1580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 1581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared only do dynamic linking of libtool libraries 1582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shrext SUFFIX override the standard shared library file extension 1583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static do not do any dynamic linking of uninstalled libtool libraries 1584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static-libtool-libs 1585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do not do any dynamic linking of libtool libraries 1586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -version-info CURRENT[:REVISION[:AGE]] 1587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels specify library version info [each variable defaults to 0] 1588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -weak LIBNAME declare that the target provides the LIBNAME interface 1589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsAll other options (arguments beginning with \`-') are ignored. 1591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEvery other argument is treated as a filename. Files ending in \`.la' are 1593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstreated as uninstalled libtool libraries, other files are standard or library 1594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsobject files. 1595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 1597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsonly library objects (\`.lo' files) may be specified, and \`-rpath' is 1598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrequired, except when creating a convenience library. 1599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 1601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsusing \`ar' and \`ranlib', or on Windows using \`lib'. 1602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 1604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsis created, otherwise an executable program is created." 1605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels uninstall) 1608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \ 1609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsRemove libraries from an installation directory. 1612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE 1614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsto RM. 1616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsIf FILE is a libtool library, all the files associated with it are deleted. 1618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsOtherwise, only FILE itself is deleted using RM." 1619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "invalid operation mode \`$mode'" 1623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 1627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "Try \`$progname --help' for more information about other modes." 1628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $? 1630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now that we've collected a possible --mode arg, show help if necessary 1633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_help && func_mode_help 1634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_execute arg... 1637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_execute () 1638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 1640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The first argument is the command name. 1641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmd="$nonopt" 1642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$cmd" && \ 1643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify a COMMAND" 1644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Handle -dlopen flags immediately. 1646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $execute_dlfiles; do 1647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$file" \ 1648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels || func_fatal_help "\`$file' is not a file" 1649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir= 1651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 1652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 1653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that this really is a libtool archive. 1654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lalib_unsafe_p "$file" \ 1655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels || func_fatal_help "\`$lib' is not a valid libtool archive" 1656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Read the libtool library. 1658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlname= 1659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels library_names= 1660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$file" 1661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Skip this library if it cannot be dlopened. 1663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dlname"; then 1664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Warn if it was a shared library. 1665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$library_names" && \ 1666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`$file' was not linked with \`-export-dynamic'" 1667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$file" "" "." 1671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$func_dirname_result" 1672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$dir/$objdir/$dlname"; then 1674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$dir/$objdir" 1675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -f "$dir/$dlname"; then 1677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 1683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just add the directory containing the .lo file. 1684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$file" "" "." 1685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$func_dirname_result" 1686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 1690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Get the absolute pathname. 1695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir=`cd "$dir" && pwd` 1696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$absdir" && dir="$absdir" 1697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now add the directory to shlibpath_var. 1699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval "test -z \"\$$shlibpath_var\""; then 1700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$shlibpath_var=\"\$dir\"" 1701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 1703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This variable tells wrapper scripts just to set shlibpath_var 1707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # rather than running their programs. 1708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libtool_execute_magic="$magic" 1709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check if any of the arguments is a wrapper script. 1711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels args= 1712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file 1713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 1714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 1715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) ;; 1716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do a test to see if this is really a libtool program. 1718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_script_p "$file"; then 1719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$file" 1720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform arg to wrapped name. 1721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file="$progdir/$program" 1722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif func_ltwrapper_executable_p "$file"; then 1723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname "$file" 1724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$func_ltwrapper_scriptname_result" 1725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform arg to wrapped name. 1726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file="$progdir/$program" 1727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Quote arguments (to preserve shell metacharacters). 1731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$file" 1732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels args="$args $func_quote_for_eval_result" 1733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$opt_dry_run" = Xfalse; then 1736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath_var"; then 1737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Export the shlibpath_var. 1738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "export $shlibpath_var" 1739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restore saved environment variables 1742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 1744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "if test \"\${save_$lt_var+set}\" = set; then 1745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $lt_var=\$save_$lt_var; export $lt_var 1746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $lt_unset $lt_var 1748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi" 1749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now prepare to actually exec the command. 1752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec_cmd="\$cmd$args" 1753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Display what would be done. 1755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath_var"; then 1756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 1757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "export $shlibpath_var" 1758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$cmd$args" 1760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 1761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest "$mode" = execute && func_mode_execute ${1+"$@"} 1765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_finish arg... 1768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_finish () 1769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 1771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdirs="$nonopt" 1772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels admincmds= 1773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir 1776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 1777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdirs="$libdirs $dir" 1778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $libdirs; do 1781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$finish_cmds"; then 1782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the finish commands. 1783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 1784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels'"$cmd"'"' 1785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$finish_eval"; then 1787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do the single finish_eval. 1788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmds=\"$finish_eval\" 1789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval "$cmds" || admincmds="$admincmds 1790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $cmds" 1791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Exit here if they wanted silent mode. 1796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_silent && exit $EXIT_SUCCESS 1797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "X----------------------------------------------------------------------" | $Xsed 1799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "Libraries have been installed in:" 1800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $libdirs; do 1801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " $libdir" 1802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 1804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "If you ever happen to want to link against installed libraries" 1805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 1806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 1807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "flag during linking and do at least one of the following:" 1808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath_var"; then 1809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 1810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " during execution" 1811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$runpath_var"; then 1813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 1814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " during linking" 1815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 1817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir=LIBDIR 1818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 1819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " - use the \`$flag' linker flag" 1821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$admincmds"; then 1823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " - have your system administrator run these commands:$admincmds" 1824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f /etc/ld.so.conf; then 1826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 1827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 1829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "See any operating system documentation about shared libraries for" 1831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 1832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels solaris2.[6789]|solaris2.1[0-9]) 1833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 1834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "pages." 1835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 1838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "X----------------------------------------------------------------------" | $Xsed 1841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 1842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 1843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest "$mode" = finish && func_mode_finish ${1+"$@"} 1845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_install arg... 1848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_install () 1849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 1850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 1851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # There may be an optional sh(1) argument at the beginning of 1852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # install_prog (especially on Windows NT). 1853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 1854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Allow the use of GNU shtool's install command. 1855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 1856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Aesthetically quote it. 1857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$nonopt" 1858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_prog="$func_quote_for_eval_result " 1859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$1 1860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 1861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_prog= 1863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$nonopt 1864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The real first argument should be the name of the installation program. 1867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Aesthetically quote it. 1868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 1869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_prog="$install_prog$func_quote_for_eval_result" 1870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need to accept at least all the BSD install flags. 1872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dest= 1873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels files= 1874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels opts= 1875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 1876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_type= 1877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels isdir=no 1878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels stripme= 1879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg 1880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 1881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dest"; then 1882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels files="$files $dest" 1883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dest=$arg 1884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 1888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -d) isdir=yes ;; 1889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -f) 1890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $install_prog " in 1891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\\\ /]cp\ *) ;; 1892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) prev=$arg ;; 1893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -g | -m | -o) 1896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=$arg 1897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -s) 1899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels stripme=" -s" 1900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) 1903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the previous option needed an argument, then skip it. 1906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$prev"; then 1907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 1908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dest=$arg 1910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 1911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Aesthetically quote the argument. 1916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 1917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_prog="$install_prog $func_quote_for_eval_result" 1918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$install_prog" && \ 1921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify an install program" 1922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$prev" && \ 1924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "the \`$prev' option requires an argument" 1925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$files"; then 1927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dest"; then 1928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "no file or destination specified" 1929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify a destination" 1931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Strip any trailing slash from the destination. 1935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '/' "$dest" 1936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dest=$func_stripname_result 1937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that the destination is a directory. 1939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -d "$dest" && isdir=yes 1940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$isdir" = yes; then 1941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destdir="$dest" 1942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destname= 1943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 1944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_and_basename "$dest" "" "." 1945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destdir="$func_dirname_result" 1946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destname="$func_basename_result" 1947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Not a directory, so check to see that there is only one file specified. 1949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $files; shift 1950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$#" -gt 1 && \ 1951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "\`$dest' is not a directory" 1952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 1953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $destdir in 1954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 1955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $files; do 1957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 1958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) ;; 1959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 1960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "\`$destdir' must be an absolute directory name" 1961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 1964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This variable tells wrapper scripts just to set variables rather 1968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # than running their programs. 1969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libtool_install_magic="$magic" 1970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels staticlibs= 1972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels future_libdirs= 1973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels current_libdirs= 1974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $files; do 1975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each installation. 1977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 1978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$libext) 1979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do the static libraries later. 1980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels staticlibs="$staticlibs $file" 1981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 1982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 1984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that this really is a libtool archive. 1985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lalib_unsafe_p "$file" \ 1986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels || func_fatal_help "\`$file' is not a valid libtool archive" 1987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels library_names= 1989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_library= 1990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 1991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$file" 1992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the libdir to current_libdirs if it is the destination. 1994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$destdir" = "X$libdir"; then 1995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$current_libdirs " in 1996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 1997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) current_libdirs="$current_libdirs $libdir" ;; 1998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 1999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Note the libdir as a future libdir. 2001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$future_libdirs " in 2002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 2003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) future_libdirs="$future_libdirs $libdir" ;; 2004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$file" "/" "" 2008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$func_dirname_result" 2009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$dir$objdir" 2010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$relink_command"; then 2012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Determine the prefix the user has applied to our future dir. 2013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 2014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't allow the user to place us outside of our expected 2016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # location b/c this prevents finding dependent libraries that 2017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # are installed to the same prefix. 2018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # At present, this check doesn't affect windows .dll's that 2019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # are installed into $libdir/../bin (currently, that works fine) 2020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # but it's something to keep an eye on. 2021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$inst_prefix_dir" = "$destdir" && \ 2022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$inst_prefix_dir"; then 2025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Stick the inst_prefix_dir data into the link command. 2026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 2029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "relinking \`$file'" 2032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$relink_command" \ 2033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # See the names of the shared library. 2037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $library_names; shift 2038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1"; then 2039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels realname="$1" 2040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 2041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels srcname="$realname" 2043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$relink_command" && srcname="$realname"T 2044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install the shared library and build the symlinks. 2046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 2047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 'exit $?' 2048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tstripme="$stripme" 2049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host_os in 2050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cygwin* | mingw* | pw32* | cegcc*) 2051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $realname in 2052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.dll.a) 2053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tstripme="" 2054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$tstripme" && test -n "$striplib"; then 2059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$striplib $destdir/$realname" 'exit $?' 2060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$#" -gt 0; then 2063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the old symlinks, and create new ones. 2064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try `ln -sf' first, because the `ln' binary might depend on 2065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the symlink we replace! Solaris /bin/ln does not understand -f, 2066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # so we also need to try rm && ln -s. 2067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for linkname 2068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 2069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$linkname" != "$realname" \ 2070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 2071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the postinstall commands. 2075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib="$destdir/$realname" 2076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$postinstall_cmds" 'exit $?' 2077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install the pseudo-library for information purposes. 2080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file" 2081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 2082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels instname="$dir/$name"i 2083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Maybe install the static library, too. 2086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 2087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 2090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install (i.e. copy) a libtool object. 2091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Figure out destination file name, if it wasn't already specified. 2093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$destname"; then 2094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$destdir/$destname" 2095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file" 2097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$func_basename_result" 2098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$destdir/$destfile" 2099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Deduce the name of the destination old-style object file. 2102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $destfile in 2103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 2104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lo2o "$destfile" 2105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels staticdest=$func_lo2o_result 2106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$objext) 2108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels staticdest="$destfile" 2109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile= 2110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "cannot copy a libtool object to \`$destfile'" 2113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install the libtool object if requested. 2117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$destfile" && \ 2118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog $file $destfile" 'exit $?' 2119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install the old object if enabled. 2121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes; then 2122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Deduce the name of the old-style object file. 2123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lo2o "$file" 2124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels staticobj=$func_lo2o_result 2125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 2126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 2128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Figure out destination file name, if it wasn't already specified. 2132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$destname"; then 2133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$destdir/$destname" 2134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file" 2136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$func_basename_result" 2137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile="$destdir/$destfile" 2138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the file is missing, and there is a .exe on the end, strip it 2141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # because it is most likely a libtool script we actually want to 2142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # install 2143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels stripped_ext="" 2144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 2145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe) 2146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -f "$file"; then 2147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$file" 2148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=$func_stripname_result 2149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels stripped_ext=".exe" 2150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do a test to see if this is really a libtool program. 2155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw*) 2157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_executable_p "$file"; then 2158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname "$file" 2159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrapper=$func_ltwrapper_scriptname_result 2160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$file" 2162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrapper=$func_stripname_result 2163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrapper=$file 2167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_script_p "$wrapper"; then 2170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_deplibs= 2171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 2172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$wrapper" 2174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check the variables that should have been set. 2176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$generated_by_libtool_version" && \ 2177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "invalid libtool wrapper script \`$wrapper'" 2178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize=yes 2180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $notinst_deplibs; do 2181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that each library is installed. 2182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir= 2183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$lib"; then 2184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$lib" 2185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 2187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$libdir" && test ! -f "$libfile"; then 2188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`$lib' has not been installed in \`$libdir'" 2189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize=no 2190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 2194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$wrapper" 2195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels outputname= 2197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" = no && test -n "$relink_command"; then 2198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$finalize" = yes; then 2200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmpdir=`func_mktempdir` 2201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file$stripped_ext" 2202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file="$func_basename_result" 2203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels outputname="$tmpdir/$file" 2204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Replace the output file specification. 2205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 2206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_silent || { 2208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand "$relink_command" 2209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 2210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval "$relink_command"; then : 2212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "error: relink \`$file' with the above command before installing it" 2214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || ${RM}r "$tmpdir" 2215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 2216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file="$outputname" 2218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "cannot relink \`$file'" 2220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Install the binary that we compiled earlier. 2224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 2225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # remove .exe since cygwin /usr/bin/install will append another 2229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # one anyway 2230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $install_prog,$host in 2231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels */usr/bin/install*,*cygwin*) 2232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file:$destfile in 2233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe:*.exe) 2234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # this is ok 2235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe:*) 2237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile=$destfile.exe 2238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *:*.exe) 2240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$destfile" 2241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destfile=$func_stripname_result 2242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 2247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || if test -n "$outputname"; then 2248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ${RM}r "$tmpdir" 2249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $staticlibs; do 2255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file" 2256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 2257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Set up the ranlib parameters. 2259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlib="$destdir/$name" 2260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$stripme" && test -n "$old_striplib"; then 2264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$old_striplib $oldlib" 'exit $?' 2265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the postinstall commands. 2268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$old_postinstall_cmds" 'exit $?' 2269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$future_libdirs" && \ 2272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "remember to run \`$progname --finish$future_libdirs'" 2273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$current_libdirs"; then 2275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Maybe just do a dry run. 2276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run && current_libdirs=" -n$current_libdirs" 2277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 2278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 2280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest "$mode" = install && func_mode_install ${1+"$@"} 2284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_generate_dlsyms outputname originator pic_p 2287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Extract symbols from dlprefiles and create ${outputname}S.o with 2288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# a dlpreopen symbol table. 2289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_generate_dlsyms () 2290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 2292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_outputname="$1" 2293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_originator="$2" 2294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_pic_p="${3-no}" 2295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 2296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_dlsyms= 2297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$NM" && test -n "$global_symbol_pipe"; then 2300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_dlsyms="${my_outputname}S.c" 2301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "not configured to extract global symbols from dlpreopened files" 2303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$my_dlsyms"; then 2307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $my_dlsyms in 2308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels "") ;; 2309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.c) 2310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Discover the nlist of each of the dlfiles. 2311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels nlist="$output_objdir/${my_outputname}.nm" 2312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 2314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Parse the name list into a source file. 2316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating $output_objdir/$my_dlsyms" 2317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 2319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 2320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 2321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef __cplusplus 2323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsextern \"C\" { 2324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 2325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* External symbol declarations for the compiler. */\ 2327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$dlself" = yes; then 2330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "generating symbol list for \`$output'" 2331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 2333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add our own program objects to the symbol list. 2335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for progfile in $progfiles; do 2337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "extracting global C symbols from \`$progfile'" 2338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 2339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$exclude_expsyms"; then 2342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 2345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols_regex"; then 2349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 2352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepare the list of exported symbols 2356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$export_symbols"; then 2357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols="$output_objdir/$outputname.exp" 2358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM $export_symbols 2360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 2363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 2365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 2371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 2372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$MV "$nlist"T "$nlist"' 2373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin | *mingw* | *cegcc* ) 2375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 2377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dlprefile in $dlprefiles; do 2384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "extracting global C symbols from \`$dlprefile'" 2385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$dlprefile" 2386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 2387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval '$ECHO ": $name " >> "$nlist"' 2389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 2390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure we have at least an empty file. 2395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$nlist" || : > "$nlist" 2396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$exclude_expsyms"; then 2398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV "$nlist"T "$nlist" 2400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try sorting and uniquifying the output. 2403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $GREP -v "^: " < "$nlist" | 2404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if sort -k 3 </dev/null >/dev/null 2>&1; then 2405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sort -k 3 2406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sort +2 2408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi | 2409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels uniq > "$nlist"S; then 2410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 2411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP -v "^: " < "$nlist" > "$nlist"S 2413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$nlist"S; then 2416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 2419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 2422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* The mapping between symbol names and symbols. */ 2424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstypedef struct { 2425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *name; 2426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels void *address; 2427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} lt_dlsymlist; 2428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 2431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 2432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* DATA imports from DLLs on WIN32 con't be const, because 2433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels runtime relocations are performed -- see ld's documentation 2434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels on pseudo-relocs. */" 2435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_dlsym_const= ;; 2436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *osf5*) 2437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels echo >> "$output_objdir/$my_dlsyms" "\ 2438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* This system does not cope well with relocations in const data */" 2439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_dlsym_const= ;; 2440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_dlsym_const=const ;; 2442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 2445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsextern $lt_dlsym_const lt_dlsymlist 2446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[]; 2447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels$lt_dlsym_const lt_dlsymlist 2448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[] = 2449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{\ 2450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { \"$my_originator\", (void *) 0 }," 2451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $need_lib_prefix in 2453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels no) 2454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 2455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 2458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO >> "$output_objdir/$my_dlsyms" "\ 2461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels {0, (void *) 0} 2462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels}; 2463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* This works around a problem in FreeBSD linker */ 2465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef FREEBSD_WORKAROUND 2466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const void *lt_preloaded_setup() { 2467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return lt_${my_prefix}_LTX_preloaded_symbols; 2468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 2470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef __cplusplus 2472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif\ 2474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } # !$opt_dry_run 2476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_flag_for_symtable= 2478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$compile_command " in 2479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -static "*) ;; 2480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # compiling the symbol table file with pic_flag works around 2483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # a FreeBSD bug that causes programs to crash when -lm is 2484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # linked before any other PIC object. But we must not use 2485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # pic_flag when linking with -static. The problem exists in 2486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 2489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-hpux*) 2490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_flag_for_symtable=" $pic_flag" ;; 2491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$my_pic_p" != Xno; then 2493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_flag_for_symtable=" $pic_flag" 2494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels symtab_cflags= 2500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg in $LTCFLAGS; do 2501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 2502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -pie | -fpie | -fPIE) ;; 2503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) symtab_cflags="$symtab_cflags $arg" ;; 2504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now compile the dynamic symbol file. 2508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 2509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Clean up the generated files. 2511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 2512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform the symbol file into the correct name. 2514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels symfileobj="$output_objdir/${my_outputname}S.$objext" 2515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* | *cegcc* ) 2517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$output_objdir/$my_outputname.def"; then 2518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 2528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "unknown suffix for \`$my_dlsyms'" 2533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We keep going just in case the user didn't refer to 2537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # really was required. 2539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Nullify the symbol file. 2541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_win32_libid arg 2547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# return the library type of file 'arg' 2548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Need a lot of goo to handle *both* DLLs and import libs 2550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Has to be a shell function in order to 'eat' the argument 2551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# that is supplied when $file_magic_command is called. 2552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_win32_libid () 2553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 2555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_libid_type="unknown" 2556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_fileres=`file -L $1 2>/dev/null` 2557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $win32_fileres in 2558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *ar\ archive\ import\ library*) # definitely import 2559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_libid_type="x86 archive import" 2560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *ar\ archive*) # could be an import, or static 2562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 2563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 2564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_nmres=`eval $NM -f posix -A $1 | 2565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -n -e ' 2566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 1,100{ 2567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels / I /{ 2568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels s,.*,import, 2569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p 2570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels q 2571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 2572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels }'` 2573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $win32_nmres in 2574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels import*) win32_libid_type="x86 archive import";; 2575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) win32_libid_type="x86 archive static";; 2576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *DLL*) 2580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_libid_type="x86 DLL" 2581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *executable*) # but shell scripts are "executable" too... 2583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $win32_fileres in 2584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *MS\ Windows\ PE\ Intel*) 2585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels win32_libid_type="x86 DLL" 2586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$win32_libid_type" 2591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_extract_an_archive dir oldlib 2596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_extract_an_archive () 2597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 2599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels f_ex_an_ar_dir="$1"; shift 2600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels f_ex_an_ar_oldlib="$1" 2601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 2602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 2604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 2606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_extract_archives gentop oldlib ... 2611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_extract_archives () 2612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 2614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_gentop="$1"; shift 2615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_oldlibs=${1+"$@"} 2616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_oldobjs="" 2617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xlib="" 2618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xabs="" 2619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xdir="" 2620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for my_xlib in $my_oldlibs; do 2622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract the objects. 2623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $my_xlib in 2624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 2625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) my_xabs=`pwd`"/$my_xlib" ;; 2626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$my_xlib" 2628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xlib="$func_basename_result" 2629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xlib_u=$my_xlib 2630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while :; do 2631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $extracted_archives " in 2632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $my_xlib_u "*) 2633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $extracted_serial + 1 2634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels extracted_serial=$func_arith_result 2635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xlib_u=lt$extracted_serial-$my_xlib ;; 2636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) break ;; 2637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels extracted_archives="$extracted_archives $my_xlib_u" 2640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_xdir="$my_gentop/$my_xlib_u" 2641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mkdir_p "$my_xdir" 2643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-darwin*) 2646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "Extracting $my_xabs" 2647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do not bother doing anything if just a dry run 2648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 2649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_orig_dir=`pwd` 2650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cd $my_xdir || exit $? 2651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_archive=$my_xabs 2652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_curdir=`pwd` 2653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_base_archive=`basename "$darwin_archive"` 2654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 2655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$darwin_arches"; then 2656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 2657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_arch= 2658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 2659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for darwin_arch in $darwin_arches ; do 2660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 2662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_an_archive "`pwd`" "${darwin_base_archive}" 2664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cd "$darwin_curdir" 2665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 2666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # $darwin_arches 2667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ## Okay now we've a bunch of thin objects, gotta fatten them up :) 2668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 2669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_file= 2670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_files= 2671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for darwin_file in $darwin_filelist; do 2672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 2673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $LIPO -create -output "$darwin_file" $darwin_files 2674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # $darwin_filelist 2675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM -rf unfat-$$ 2676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cd "$darwin_orig_dir" 2677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cd $darwin_orig_dir 2679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_an_archive "$my_xdir" "$my_xabs" 2680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $darwin_arches 2681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } # !$opt_dry_run 2682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_an_archive "$my_xdir" "$my_xabs" 2685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 2688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives_result="$my_oldobjs" 2691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_wrapper_part1 [arg=no] 2696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Emit the first part of a libtool wrapper script on stdout. 2698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# For more information, see the description associated with 2699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_wrapper(), below. 2700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_emit_wrapper_part1 () 2701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part1_arg1=no 2703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1" ; then 2704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part1_arg1=$1 2705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#! $SHELL 2709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $output - temporary wrapper script for $objdir/$outputname 2711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 2712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The $output program cannot be directly executed until all the libtool 2714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# libraries that it depends on are installed. 2715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This wrapper script should never be moved out of the build directory. 2717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# If it is, it will not operate correctly. 2718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Sed substitution that helps us do robust quoting. It backslashifies 2720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# metacharacters that are still active within double-quoted strings. 2721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsXsed='${SED} -e 1s/^X//' 2722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelssed_quote_subst='$sed_quote_subst' 2723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Be Bourne compatible 2725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 2726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels emulate sh 2727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels NULLCMD=: 2728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 2729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # is contrary to our usage. Disable this feature. 2730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels alias -g '\${1+\"\$@\"}'='\"\$@\"' 2731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels setopt NO_GLOB_SUBST 2732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselse 2733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 2734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi 2735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64 2736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh 2737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The HP-UX ksh and POSIX shell print the target directory to stdout 2739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# if CDPATH is set. 2740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 2741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrelink_command=\"$relink_command\" 2743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# This environment variable determines our operation mode. 2745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test \"\$libtool_install_magic\" = \"$magic\"; then 2746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # install mode needs the following variables: 2747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated_by_libtool_version='$macro_version' 2748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_deplibs='$notinst_deplibs' 2749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelselse 2750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # When we are sourced in execute mode, \$file and \$ECHO are already set. 2751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"\$libtool_execute_magic\" != \"$magic\"; then 2752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ECHO=\"$qecho\" 2753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=\"\$0\" 2754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure echo works. 2755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"X\$1\" = X--no-reexec; then 2756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Discard the --no-reexec flag, and continue. 2757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 2758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 2759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Yippee, \$ECHO works! 2760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 2761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restart under the correct shell, and then maybe \$ECHO will work. 2763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi\ 2766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Find the directory that this script lives in. 2770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Follow symbolic links until we get to the real thisdir. 2774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 2775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test -n \"\$file\"; do 2776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If there was a directory component, then change thisdir. 2779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"x\$destdir\" != \"x\$file\"; then 2780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case \"\$destdir\" in 2781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 2782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) thisdir=\"\$thisdir/\$destdir\" ;; 2783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 2788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 2789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# end: func_emit_wrapper_part1 2792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_wrapper_part2 [arg=no] 2794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Emit the second part of a libtool wrapper script on stdout. 2796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# For more information, see the description associated with 2797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_wrapper(), below. 2798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_emit_wrapper_part2 () 2799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part2_arg1=no 2801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1" ; then 2802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part2_arg1=$1 2803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Usually 'no', except on cygwin/mingw when embedded into 2808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the cwrapper. 2809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 2810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 2811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # special case for '.' 2812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"\$thisdir\" = \".\"; then 2813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels thisdir=\`pwd\` 2814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # remove .libs from thisdir 2816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case \"\$thisdir\" in 2817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 2818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $objdir ) thisdir=. ;; 2819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try to get the absolute directory name. 2823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir=\`cd \"\$thisdir\" && pwd\` 2824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n \"\$absdir\" && thisdir=\"\$absdir\" 2825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" = yes; then 2828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels program=lt-'$outputname'$exeext 2830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progdir=\"\$thisdir/$objdir\" 2831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -f \"\$progdir/\$program\" || 2833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 2834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=\"\$\$-\$program\" 2837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -d \"\$progdir\"; then 2839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MKDIR \"\$progdir\" 2840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM \"\$progdir/\$file\" 2842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi" 2843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # relink executable if necessary 2847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n \"\$relink_command\"; then 2848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if relink_command_output=\`eval \$relink_command 2>&1\`; then : 2849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \"\$relink_command_output\" >&2 2851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM \"\$progdir/\$file\" 2852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit 1 2853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { $RM \"\$progdir/\$program\"; 2858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM \"\$progdir/\$file\" 2860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi" 2861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels program='$outputname' 2864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels progdir=\"\$thisdir/$objdir\" 2865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f \"\$progdir/\$program\"; then" 2871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Export our shlibpath_var if we have one. 2873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add our own library path to $shlibpath_var 2876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Some systems cannot cope with colon-terminated $shlibpath_var 2879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The second colon is a workaround for a bug in BeOS R4 sed 2880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export $shlibpath_var 2883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # fixup the dll searchpath if we need to. 2887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dllsearchpath"; then 2888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the dll search path components to the executable PATH 2890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels PATH=$dllsearchpath:\$PATH 2891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test \"\$libtool_execute_magic\" != \"$magic\"; then 2896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Run the actual program with our arguments. 2897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Backslashes separate directories on plain windows 2900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-mingw | *-*-os2* | *-cegcc*) 2901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 2903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 2907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec \"\$progdir/\$program\" \${1+\"\$@\"} 2909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 2912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "\ 2913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 2914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit 1 2915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 2917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The program doesn't exist. 2918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 2919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 2920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 2921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit 1 2922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi\ 2924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels" 2925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# end: func_emit_wrapper_part2 2927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_wrapper [arg=no] 2930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Emit a libtool wrapper script on stdout. 2932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Don't directly open a file because we may want to 2933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# incorporate the script contents within a cygwin/mingw 2934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# wrapper executable. Must ONLY be called from within 2935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_link because it depends on a number of variables 2936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# set therein. 2937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 2939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# variable will take. If 'yes', then the emitted script 2940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# will assume that the directory in which it is stored is 2941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the $objdir directory. This is a cygwin/mingw-specific 2942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# behavior. 2943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_emit_wrapper () 2944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_arg1=no 2946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1" ; then 2947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_arg1=$1 2948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 2949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # split this up so that func_emit_cwrapperexe_src 2951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # can call each part independently. 2952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 2953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 2954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 2955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 2957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_to_host_path arg 2958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Convert paths to host format when used with build tools. 2960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Intended for use with "native" mingw (where libtool itself 2961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# is running under the msys shell), or in the following cross- 2962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# build environments: 2963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $build $host 2964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# mingw (msys) mingw [e.g. native] 2965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# cygwin mingw 2966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# *nix + wine mingw 2967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# where wine is equipped with the `winepath' executable. 2968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# In the native mingw case, the (msys) shell automatically 2969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# converts paths for any non-msys applications it launches, 2970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# but that facility isn't available from inside the cwrapper. 2971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Similar accommodations are necessary for $host mingw and 2972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $build cygwin. Calling this function does no harm for other 2973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $host/$build combinations not listed above. 2974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 2975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ARG is the path (on $build) that should be converted to 2976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the proper representation for $host. The result is stored 2977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# in $func_to_host_path_result. 2978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_to_host_path () 2979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 2980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result="$1" 2981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1" ; then 2982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 2983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *mingw* ) 2984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 2985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $build in 2986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *mingw* ) # actually, msys 2987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # awkward: cmd appends spaces to result 2988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_sed_strip_trailing_spaces="s/[ ]*\$//" 2989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 2990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 2991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 2992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 2993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* ) 2995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_tmp1=`cygpath -w "$1"` 2996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 2997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 2998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 2999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) 3000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Unfortunately, winepath does not exit with a non-zero 3001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # error code, so we are forced to check the contents of 3002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # stdout. On the other hand, if the command is not 3003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # found, the shell will set an exit code of 127 and print 3004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # *an error message* to stdout. So we must check for both 3005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # error code of zero AND non-empty stdout, which explains 3006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the odd construction: 3007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 3008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 3009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 3010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 3011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Allow warning below. 3013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result="" 3014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$func_to_host_path_result" ; then 3018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "Could not determine host path corresponding to" 3019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error " '$1'" 3020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "Continuing, but uninstalled executables may not work." 3021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Fallback: 3022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path_result="$1" 3023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# end: func_to_host_path 3029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_to_host_pathlist arg 3031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 3032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Convert pathlists to host format when used with build tools. 3033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# See func_to_host_path(), above. This function supports the 3034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# following $build/$host combinations (but does no harm for 3035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# combinations not listed here): 3036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $build $host 3037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# mingw (msys) mingw [e.g. native] 3038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# cygwin mingw 3039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# *nix + wine mingw 3040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 3041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Path separators are also converted from $build format to 3042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $host format. If ARG begins or ends with a path separator 3043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# character, it is preserved (but converted to $host format) 3044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# on output. 3045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 3046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ARG is a pathlist (on $build) that should be converted to 3047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the proper representation on $host. The result is stored 3048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# in $func_to_host_pathlist_result. 3049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_to_host_pathlist () 3050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result="$1" 3052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$1" ; then 3053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 3054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *mingw* ) 3055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remove leading and trailing path separator characters from 3057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # ARG. msys behavior is inconsistent here, cygpath turns them 3058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # into '.;' and ';.', and winepath ignores them completely. 3059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_tmp2="$1" 3060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Once set for this call, this variable should not be 3061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # reassigned. It is used in tha fallback case. 3062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 3063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e 's|^:*||' -e 's|:*$||'` 3064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $build in 3065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *mingw* ) # Actually, msys. 3066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Awkward: cmd appends spaces to result. 3067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_sed_strip_trailing_spaces="s/[ ]*\$//" 3068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 3069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 3070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 3071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 3072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* ) 3074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 3075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 3076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_sed_naive_backslashify"` 3077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) 3079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # unfortunately, winepath doesn't convert pathlists 3080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result="" 3081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_oldIFS=$IFS 3082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=: 3083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 3084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=$func_to_host_pathlist_oldIFS 3085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$func_to_host_pathlist_f" ; then 3086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_path "$func_to_host_pathlist_f" 3087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$func_to_host_path_result" ; then 3088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$func_to_host_pathlist_result" ; then 3089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result="$func_to_host_path_result" 3090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 3092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=: 3096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 3097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS=$func_to_host_pathlist_oldIFS 3098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$func_to_host_pathlist_result" ; then 3101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "Could not determine the host path(s) corresponding to" 3102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error " '$1'" 3103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "Continuing, but uninstalled executables may not work." 3104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Fallback. This may break if $1 contains DOS-style drive 3105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # specifications. The fix is not to complicate the expression 3106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # below, but for the user to provide a working wine installation 3107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # with winepath so that path translation in the cross-to-mingw 3108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # case works properly. 3109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_replace_pathsep_nix_to_dos="s|:|;|g" 3110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 3111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e "$lt_replace_pathsep_nix_to_dos"` 3112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now, add the leading and trailing path separators back 3114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$1" in 3115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 3116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$1" in 3119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 3120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# end: func_to_host_pathlist 3127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_emit_cwrapperexe_src 3129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# emit the source code for a wrapper executable on stdout 3130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Must ONLY be called from within func_mode_link because 3131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# it depends on a number of variable set therein. 3132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_emit_cwrapperexe_src () 3133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 3137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels The $output program cannot be directly executed until all the libtool 3140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libraries that it depends on are installed. 3141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels This wrapper executable should never be moved out of the build directory. 3143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels If it is, it will not operate correctly. 3144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels Currently, it simply execs the wrapper *script* "$SHELL $output", 3146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels but could eventually absorb all of the scripts functionality and 3147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exec $objdir/$outputname directly. 3148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels*/ 3149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <stdio.h> 3152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <stdlib.h> 3153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef _MSC_VER 3154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <direct.h> 3155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <process.h> 3156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <io.h> 3157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define setmode _setmode 3158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else 3159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <unistd.h> 3160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <stdint.h> 3161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ifdef __CYGWIN__ 3162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# include <io.h> 3163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define HAVE_SETENV 3164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ifdef __STRICT_ANSI__ 3165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *realpath (const char *, char *); 3166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint putenv (char *); 3167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint setenv (const char *, const char *, int); 3168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# endif 3169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# endif 3170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <malloc.h> 3172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <stdarg.h> 3173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <assert.h> 3174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <string.h> 3175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <ctype.h> 3176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <errno.h> 3177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <fcntl.h> 3178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#include <sys/stat.h> 3179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined(PATH_MAX) 3181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define LT_PATHMAX PATH_MAX 3182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#elif defined(MAXPATHLEN) 3183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define LT_PATHMAX MAXPATHLEN 3184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else 3185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define LT_PATHMAX 1024 3186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef S_IXOTH 3189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define S_IXOTH 0 3190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef S_IXGRP 3192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define S_IXGRP 0 3193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef _MSC_VER 3196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define S_IXUSR _S_IEXEC 3197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define stat _stat 3198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ifndef _INTPTR_T_DEFINED 3199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define intptr_t int 3200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# endif 3201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef DIR_SEPARATOR 3204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define DIR_SEPARATOR '/' 3205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define PATH_SEPARATOR ':' 3206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 3209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels defined (__OS2__) 3210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define HAVE_DOS_BASED_FILE_SYSTEM 3211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define FOPEN_WB "wb" 3212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ifndef DIR_SEPARATOR_2 3213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define DIR_SEPARATOR_2 '\\' 3214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# endif 3215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ifndef PATH_SEPARATOR_2 3216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define PATH_SEPARATOR_2 ';' 3217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# endif 3218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef DIR_SEPARATOR_2 3221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 3222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else /* DIR_SEPARATOR_2 */ 3223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define IS_DIR_SEPARATOR(ch) \ 3224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 3225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif /* DIR_SEPARATOR_2 */ 3226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef PATH_SEPARATOR_2 3228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 3229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else /* PATH_SEPARATOR_2 */ 3230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 3231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif /* PATH_SEPARATOR_2 */ 3232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef __CYGWIN__ 3234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define FOPEN_WB "wb" 3235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef FOPEN_WB 3238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define FOPEN_WB "w" 3239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef _O_BINARY 3241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define _O_BINARY 0 3242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 3245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#define XFREE(stale) do { \ 3246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (stale) { free ((void *) stale); stale = 0; } \ 3247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} while (0) 3248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#undef LTWRAPPER_DEBUGPRINTF 3250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined DEBUGWRAPPER 3251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 3252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic void 3253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsltwrapper_debugprintf (const char *fmt, ...) 3254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_list args; 3256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_start (args, fmt); 3257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (void) vfprintf (stderr, fmt, args); 3258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_end (args); 3259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else 3261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args) 3262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char *program_name = NULL; 3265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid *xmalloc (size_t num); 3267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *xstrdup (const char *string); 3268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char *base_name (const char *name); 3269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *find_executable (const char *wrapper); 3270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *chase_symlinks (const char *pathspec); 3271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint make_executable (const char *path); 3272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint check_executable (const char *path); 3273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *strendzap (char *str, const char *pat); 3274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_fatal (const char *message, ...); 3275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_setenv (const char *name, const char *value); 3276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar *lt_extend_str (const char *orig_value, const char *add, int to_end); 3277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_opt_process_env_set (const char *arg); 3278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_opt_process_env_prepend (const char *arg); 3279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_opt_process_env_append (const char *arg); 3280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint lt_split_name_value (const char *arg, char** name, char** value); 3281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_update_exe_path (const char *name, const char *value); 3282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid lt_update_lib_path (const char *name, const char *value); 3283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *script_text_part1 = 3285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part1 yes | 3288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e 's/\([\\"]\)/\\\1/g' \ 3289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -e 's/^/ "/' -e 's/$/\\n"/' 3290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels echo ";" 3291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *script_text_part2 = 3294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper_part2 yes | 3296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e 's/\([\\"]\)/\\\1/g' \ 3297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -e 's/^/ "/' -e 's/$/\\n"/' 3298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels echo ";" 3299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * MAGIC_EXE = "$magic_exe"; 3302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 3303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist "$temp_rpath" 3307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 3309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * LIB_PATH_VALUE = ""; 3313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dllsearchpath"; then 3317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_to_host_pathlist "$dllsearchpath:" 3318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * EXE_PATH_VARNAME = "PATH"; 3320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 3321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * EXE_PATH_VARNAME = ""; 3325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * EXE_PATH_VALUE = ""; 3326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" = yes; then 3330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 3332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 3336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 3338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX "--lt-" 3343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 3344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 3346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 3347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 3349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 3351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 3352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* argument is putenv-style "foo=bar", value of foo is set to bar */ 3353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 3355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 3356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 3357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 3359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 3360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 3361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint 3363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsmain (int argc, char *argv[]) 3364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char **newargz; 3366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int newargc; 3367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *tmp_pathspec; 3368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *actual_cwrapper_path; 3369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *actual_cwrapper_name; 3370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *target_name; 3371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *lt_argv_zero; 3372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels intptr_t rval = 127; 3373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int i; 3375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels program_name = (char *) xstrdup (base_name (argv[0])); 3377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 3378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 3379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* very simple arg parsing; don't want to rely on getopt */ 3381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (i = 1; i < argc; i++) 3382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strcmp (argv[i], dumpscript_opt) == 0) 3384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$host" in 3387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *mingw* | *cygwin* ) 3388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # make stdout use "unix" line endings 3389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels echo " setmode(1,_O_BINARY);" 3390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels printf ("%s", script_text_part1); 3395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels printf ("%s", script_text_part2); 3396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 0; 3397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newargz = XMALLOC (char *, argc + 1); 3401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = find_executable (argv[0]); 3402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (tmp_pathspec == NULL) 3403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("Couldn't find %s", argv[0]); 3404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 3405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec)); 3406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels actual_cwrapper_path = chase_symlinks (tmp_pathspec); 3408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 3409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels actual_cwrapper_path)); 3410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (tmp_pathspec); 3411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 3413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strendzap (actual_cwrapper_path, actual_cwrapper_name); 3414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* wrapper name transforms */ 3416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strendzap (actual_cwrapper_name, ".exe"); 3417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 3418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (actual_cwrapper_name); 3419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels actual_cwrapper_name = tmp_pathspec; 3420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = 0; 3421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* target_name transforms -- use actual target program name; might have lt- prefix */ 3423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 3424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strendzap (target_name, ".exe"); 3425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 3426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (target_name); 3427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels target_name = tmp_pathspec; 3428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = 0; 3429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 3431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels target_name)); 3432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<EOF 3435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newargz[0] = 3436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XMALLOC (char, (strlen (actual_cwrapper_path) + 3437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 3438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (newargz[0], actual_cwrapper_path); 3439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcat (newargz[0], "$objdir"); 3440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcat (newargz[0], "/"); 3441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* stop here, and copy so we don't have to do this twice */ 3445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = xstrdup (newargz[0]); 3446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 3448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcat (newargz[0], actual_cwrapper_name); 3449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* DO want the lt- prefix here if it exists, so use target_name */ 3451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 3452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (tmp_pathspec); 3453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = NULL; 3454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host_os in 3457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels mingw*) 3458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char* p; 3461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while ((p = strchr (newargz[0], '\\')) != NULL) 3462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *p = '/'; 3464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while ((p = strchr (lt_argv_zero, '\\')) != NULL) 3466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *p = '/'; 3468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (target_name); 3476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (actual_cwrapper_path); 3477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (actual_cwrapper_name); 3478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 3480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 3481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 3482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 3483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newargc=0; 3485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (i = 1; i < argc; i++) 3486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 3488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (argv[i][env_set_opt_len] == '=') 3490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p = argv[i] + env_set_opt_len + 1; 3492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_set (p); 3493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 3495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_set (argv[++i]); /* don't copy */ 3497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("%s missing required argument", env_set_opt); 3500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue; 3501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 3503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (argv[i][env_prepend_opt_len] == '=') 3505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p = argv[i] + env_prepend_opt_len + 1; 3507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_prepend (p); 3508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 3510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 3512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("%s missing required argument", env_prepend_opt); 3515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue; 3516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 3518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (argv[i][env_append_opt_len] == '=') 3520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p = argv[i] + env_append_opt_len + 1; 3522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_append (p); 3523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 3525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_opt_process_env_append (argv[++i]); /* don't copy */ 3527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("%s missing required argument", env_append_opt); 3530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue; 3531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 3533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 3535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels namespace, but it is not one of the ones we know about and 3536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels have already dealt with, above (inluding dump-script), then 3537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels report an error. Otherwise, targets might begin to believe 3538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 3539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels namespace. The first time any user complains about this, we'll 3540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels need to make LTWRAPPER_OPTION_PREFIX a configure-time option 3541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels or a configure.ac-settable value. 3542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels */ 3543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("Unrecognized option in %s namespace: '%s'", 3544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ltwrapper_option_prefix, argv[i]); 3545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* otherwise ... */ 3547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newargz[++newargc] = xstrdup (argv[i]); 3548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newargz[++newargc] = NULL; 3550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 3552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (i = 0; i < newargc; i++) 3553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 3555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host_os in 3560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels mingw*) 3561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* execv doesn't actually work on mingw as expected on unix */ 3563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 3564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (rval == -1) 3565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* failed to start process */ 3567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 3568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 127; 3569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return rval; 3571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 3574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels execv (lt_argv_zero, newargz); 3576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return rval; /* =127, but avoids unused variable warning */ 3577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 3578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 3579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 3580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat <<"EOF" 3582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid * 3585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsxmalloc (size_t num) 3586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels void *p = (void *) malloc (num); 3588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (!p) 3589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("Memory exhausted"); 3590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return p; 3592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar * 3595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsxstrdup (const char *string) 3596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 3598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels string) : NULL; 3599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsconst char * 3602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbase_name (const char *name) 3603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *base; 3605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* Skip over the disk name in MSDOS pathnames. */ 3608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (isalpha ((unsigned char) name[0]) && name[1] == ':') 3609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name += 2; 3610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (base = name; *name; name++) 3613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (IS_DIR_SEPARATOR (*name)) 3614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels base = name + 1; 3615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return base; 3616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint 3619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscheck_executable (const char *path) 3620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels struct stat st; 3622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 3624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path ? (*path ? path : "EMPTY!") : "NULL!")); 3625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ((!path) || (!*path)) 3626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 0; 3627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ((stat (path, &st) >= 0) 3629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 3630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 1; 3631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 0; 3633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint 3636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsmake_executable (const char *path) 3637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int rval = 0; 3639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels struct stat st; 3640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 3642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path ? (*path ? path : "EMPTY!") : "NULL!")); 3643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ((!path) || (!*path)) 3644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 0; 3645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (stat (path, &st) >= 0) 3647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 3649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return rval; 3651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels/* Searches for the full path of the wrapper. Returns 3654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newly allocated full path name if found, NULL otherwise 3655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels Does not chase symlinks, even on platforms that support them. 3656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels*/ 3657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar * 3658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfind_executable (const char *wrapper) 3659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int has_slash = 0; 3661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p; 3662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p_next; 3663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* static buffer for getcwd */ 3664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char tmp[LT_PATHMAX + 1]; 3665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int tmp_len; 3666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *concat_name; 3667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 3669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 3670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ((wrapper == NULL) || (*wrapper == '\0')) 3672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return NULL; 3673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* Absolute path? */ 3675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 3677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name = xstrdup (wrapper); 3679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (check_executable (concat_name)) 3680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return concat_name; 3681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (concat_name); 3682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (IS_DIR_SEPARATOR (wrapper[0])) 3687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name = xstrdup (wrapper); 3689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (check_executable (concat_name)) 3690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return concat_name; 3691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (concat_name); 3692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (p = wrapper; *p; p++) 3698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (*p == '/') 3699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels has_slash = 1; 3701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break; 3702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (!has_slash) 3704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* no slashes; search PATH */ 3706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *path = getenv ("PATH"); 3707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (path != NULL) 3708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (p = path; *p; p = p_next) 3710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *q; 3712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels size_t p_len; 3713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for (q = p; *q; q++) 3714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (IS_PATH_SEPARATOR (*q)) 3715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break; 3716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p_len = q - p; 3717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p_next = (*q == '\0' ? q : q + 1); 3718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (p_len == 0) 3719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* empty path: current directory */ 3721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (getcwd (tmp, LT_PATHMAX) == NULL) 3722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("getcwd failed"); 3723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_len = strlen (tmp); 3724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name = 3725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels memcpy (concat_name, tmp, tmp_len); 3727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name[tmp_len] = '/'; 3728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (concat_name + tmp_len + 1, wrapper); 3729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name = 3733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 3734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels memcpy (concat_name, p, p_len); 3735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name[p_len] = '/'; 3736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (concat_name + p_len + 1, wrapper); 3737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (check_executable (concat_name)) 3739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return concat_name; 3740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (concat_name); 3741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* not found in PATH; assume curdir */ 3744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* Relative path | not found in path: prepend cwd */ 3746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (getcwd (tmp, LT_PATHMAX) == NULL) 3747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("getcwd failed"); 3748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_len = strlen (tmp); 3749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels memcpy (concat_name, tmp, tmp_len); 3751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_name[tmp_len] = '/'; 3752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (concat_name + tmp_len + 1, wrapper); 3753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (check_executable (concat_name)) 3755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return concat_name; 3756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (concat_name); 3757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return NULL; 3758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar * 3761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschase_symlinks (const char *pathspec) 3762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifndef S_ISLNK 3764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return xstrdup (pathspec); 3765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else 3766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char buf[LT_PATHMAX]; 3767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels struct stat s; 3768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *tmp_pathspec = xstrdup (pathspec); 3769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *p; 3770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int has_symlinks = 0; 3771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while (strlen (tmp_pathspec) && !has_symlinks) 3772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 3774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec)); 3775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (lstat (tmp_pathspec, &s) == 0) 3776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (S_ISLNK (s.st_mode) != 0) 3778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels has_symlinks = 1; 3780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break; 3781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* search backwards for last DIR_SEPARATOR */ 3784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p = tmp_pathspec + strlen (tmp_pathspec) - 1; 3785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p--; 3787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 3788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* no more DIR_SEPARATORS left */ 3790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break; 3791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *p = '\0'; 3793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *errstr = strerror (errno); 3797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 3798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (tmp_pathspec); 3801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (!has_symlinks) 3803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return xstrdup (pathspec); 3805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_pathspec = realpath (pathspec, buf); 3808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (tmp_pathspec == 0) 3809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("Could not follow symlinks for %s", pathspec); 3811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return xstrdup (tmp_pathspec); 3813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar * 3817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstrendzap (char *str, const char *pat) 3818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels size_t len, patlen; 3820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels assert (str != NULL); 3822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels assert (pat != NULL); 3823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len = strlen (str); 3825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels patlen = strlen (pat); 3826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (patlen <= len) 3828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels str += len - patlen; 3830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (strcmp (str, pat) == 0) 3831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *str = '\0'; 3832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return str; 3834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsstatic void 3837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_error_core (int exit_status, const char *mode, 3838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *message, va_list ap) 3839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fprintf (stderr, "%s: %s: ", program_name, mode); 3841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vfprintf (stderr, message, ap); 3842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fprintf (stderr, ".\n"); 3843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (exit_status >= 0) 3845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit (exit_status); 3846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_fatal (const char *message, ...) 3850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_list ap; 3852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_start (ap, message); 3853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 3854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels va_end (ap); 3855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_setenv (const char *name, const char *value) 3859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 3861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (name ? name : "<NULL>"), 3862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (value ? value : "<NULL>"))); 3863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#ifdef HAVE_SETENV 3865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* always make a copy, for consistency with !HAVE_SETENV */ 3866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *str = xstrdup (value); 3867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels setenv (name, str, 1); 3868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#else 3869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int len = strlen (name) + 1 + strlen (value) + 1; 3870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *str = XMALLOC (char, len); 3871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sprintf (str, "%s=%s", name, value); 3872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (putenv (str) != EXIT_SUCCESS) 3873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (str); 3875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels#endif 3877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelschar * 3881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_extend_str (const char *orig_value, const char *add, int to_end) 3882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *new_value; 3884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (orig_value && *orig_value) 3885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int orig_value_len = strlen (orig_value); 3887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int add_len = strlen (add); 3888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_value = XMALLOC (char, add_len + orig_value_len + 1); 3889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (to_end) 3890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (new_value, orig_value); 3892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (new_value + orig_value_len, add); 3893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (new_value, add); 3897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strcpy (new_value + add_len, orig_value); 3898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 3901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_value = xstrdup (add); 3903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return new_value; 3905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsint 3908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_split_name_value (const char *arg, char** name, char** value) 3909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels const char *p; 3911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int len; 3912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (!arg || !*arg) 3913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 1; 3914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels p = strchr (arg, (int)'='); 3916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (!p) 3918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 1; 3919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *value = xstrdup (++p); 3921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len = strlen (arg) - strlen (*value); 3923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *name = XMALLOC (char, len); 3924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels strncpy (*name, arg, len-1); 3925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (*name)[len - 1] = '\0'; 3926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels return 0; 3928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_opt_process_env_set (const char *arg) 3932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *name = NULL; 3934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *value = NULL; 3935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 3937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 3941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv (name, value); 3944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_opt_process_env_prepend (const char *arg) 3950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *name = NULL; 3952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *value = NULL; 3953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *new_value = NULL; 3954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 3956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 3960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_value = lt_extend_str (getenv (name), value, 0); 3963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv (name, new_value); 3964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (new_value); 3965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_opt_process_env_append (const char *arg) 3971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *name = NULL; 3973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *value = NULL; 3974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *new_value = NULL; 3975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (lt_split_name_value (arg, &name, &value) != 0) 3977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 3981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 3982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_value = lt_extend_str (getenv (name), value, 1); 3984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv (name, new_value); 3985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (new_value); 3986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (name); 3987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (value); 3988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 3989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 3991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_update_exe_path (const char *name, const char *value) 3992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 3993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 3994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (name ? name : "<NULL>"), 3995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (value ? value : "<NULL>"))); 3996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 3997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (name && *name && value && *value) 3998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 3999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *new_value = lt_extend_str (getenv (name), value, 0); 4000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels /* some systems can't cope with a ':'-terminated path #' */ 4001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int len = strlen (new_value); 4002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 4004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_value[len-1] = '\0'; 4005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 4006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv (name, new_value); 4007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (new_value); 4008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 4009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 4010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsvoid 4012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslt_update_lib_path (const char *name, const char *value) 4013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 4014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (name ? name : "<NULL>"), 4016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels (value ? value : "<NULL>"))); 4017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (name && *name && value && *value) 4019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { 4020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels char *new_value = lt_extend_str (getenv (name), value, 0); 4021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_setenv (name, new_value); 4022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels XFREE (new_value); 4023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 4024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 4025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 4028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 4029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# end: func_emit_cwrapperexe_src 4030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_link arg... 4032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_link () 4033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 4034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 4035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # It is impossible to link a dll without this setting, and 4038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # we shouldn't force the makefile maintainer to figure out 4039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # which system we are compiling for in order to pass an extra 4040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # flag for every libtool invocation. 4041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # allow_undefined=no 4042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: Unfortunately, there are problems with the above when trying 4044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # to make a dll which has undefined symbols, in which case not 4045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # even a static library is built. For now, we need to specify 4046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -no-undefined on the libtool link line when we can be certain 4047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # that all symbols are satisfied, otherwise we get a static library. 4048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels allow_undefined=yes 4049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels allow_undefined=yes 4052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libtool_args=$nonopt 4055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels base_compile="$nonopt $@" 4056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=$nonopt 4057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=$nonopt 4058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_rpath= 4060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_rpath= 4061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_shlibpath= 4062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_shlibpath= 4063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels convenience= 4064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_convenience= 4065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs= 4066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_deplibs= 4067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags= 4068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags= 4069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dllsearchpath= 4070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_search_path=`pwd` 4071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels inst_prefix_dir= 4072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_inherited_linker_flags= 4073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels avoid_version=no 4075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles= 4076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles= 4077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlself=no 4078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_dynamic=no 4079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols= 4080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols_regex= 4081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated= 4082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs= 4083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ltlibs= 4084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels module=no 4085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels no_install=no 4086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objs= 4087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_objects= 4088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels precious_files_regex= 4089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prefer_static_libs=no 4090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels preload=no 4091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prevarg= 4093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release= 4094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 4095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xrpath= 4096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels perm_rpath= 4097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels temp_rpath= 4098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels thread_safe=no 4099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vinfo= 4100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vinfo_number=no 4101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels weak_libs= 4102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels single_module="${wl}-single_module" 4103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_infer_tag $base_compile 4104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need to know -static, to get the right output filenames. 4106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg 4107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 4108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 4109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared) 4110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_libtool_libs" != yes && \ 4111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "can not build a shared library" 4112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=no 4113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 4114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -all-static | -static | -static-libtool-libs) 4116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 4117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -all-static) 4118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 4119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "complete static linking is impossible in this configuration" 4120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$link_static_flag"; then 4122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopen_self=$dlopen_self_static 4123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prefer_static_libs=yes 4125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static) 4127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_flag" && test -n "$link_static_flag"; then 4128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopen_self=$dlopen_self_static 4129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prefer_static_libs=built 4131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static-libtool-libs) 4133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_flag" && test -n "$link_static_flag"; then 4134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopen_self=$dlopen_self_static 4135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prefer_static_libs=yes 4137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 4140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 4141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 4142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # See if our shared archives depend on static archives. 4147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$old_archive_from_new_cmds" && build_old_libs=yes 4148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Go through the arguments, transforming them on the way. 4150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test "$#" -gt 0; do 4151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$1" 4152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 4153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 4154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels qarg=$func_quote_for_eval_unquoted_result 4155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append libtool_args " $func_quote_for_eval_result" 4156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the previous option needs an argument, assign it. 4158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$prev"; then 4159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $prev in 4160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output) 4161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " @OUTPUT@" 4162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " @OUTPUT@" 4163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $prev in 4167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles|dlprefiles) 4168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$preload" = no; then 4169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the symbol object into the linking commands. 4170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " @SYMFILE@" 4171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " @SYMFILE@" 4172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels preload=yes 4173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 4175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la | *.lo) ;; # We handle these cases below. 4176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels force) 4177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$dlself" = no; then 4178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlself=needless 4179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_dynamic=yes 4180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels self) 4185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlprefiles; then 4186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlself=yes 4187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 4188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlself=yes 4189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlself=needless 4191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_dynamic=yes 4192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlfiles; then 4198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$dlfiles $arg" 4199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$dlprefiles $arg" 4201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels expsyms) 4208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols="$arg" 4209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$arg" \ 4210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels || func_fatal_error "symbol file \`$arg' does not exist" 4211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels expsyms_regex) 4215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols_regex="$arg" 4216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels framework) 4220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-darwin*) 4222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$deplibs " in 4223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $qarg.ltframework "*) ;; 4224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 4225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels inst_prefix) 4233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels inst_prefix_dir="$arg" 4234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objectlist) 4238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$arg"; then 4239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_arg=$arg 4240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels moreargs= 4241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for fil in `cat "$save_arg"` 4242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 4243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# moreargs="$moreargs $fil" 4244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$fil 4245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A libtool-controlled object. 4246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that this really is a libtool object. 4248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_lalib_unsafe_p "$arg"; then 4249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object= 4250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object= 4251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Read the .lo file 4253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$arg" 4254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_object" || 4256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$non_pic_object" || 4257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$pic_object" = none && 4258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$non_pic_object" = none; then 4259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find name of object for \`$arg'" 4260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract subdirectory from the argument. 4263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$arg" "/" "" 4264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xdir="$func_dirname_result" 4265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pic_object" != none; then 4267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepend the subdirectory the object is found in. 4268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object="$xdir$pic_object" 4269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlfiles; then 4271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$dlfiles $pic_object" 4273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If libtool objects are unsupported, then we need to preload. 4277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=dlprefiles 4278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # CHECK ME: I think I busted this. -Ossama 4282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlprefiles; then 4283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Preload the old-style object. 4284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$dlprefiles $pic_object" 4285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A PIC object. 4289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append libobjs " $pic_object" 4290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$pic_object" 4291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Non-PIC object. 4294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$non_pic_object" != none; then 4295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepend the subdirectory the object is found in. 4296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object="$xdir$non_pic_object" 4297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A standard non-PIC object 4299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_object" || test "$pic_object" = none ; then 4301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$non_pic_object" 4302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the PIC object exists, use it instead. 4305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $xdir was prepended to $pic_object above. 4306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object="$pic_object" 4307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only an error if not doing a dry-run. 4311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_dry_run; then 4312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract subdirectory from the argument. 4313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$arg" "/" "" 4314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xdir="$func_dirname_result" 4315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lo2o "$arg" 4317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object=$xdir$objdir/$func_lo2o_result 4318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object=$xdir$func_lo2o_result 4319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append libobjs " $pic_object" 4320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$arg' is not a valid libtool object" 4323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "link input file \`$arg' does not exist" 4328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$save_arg 4330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels precious_regex) 4334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels precious_files_regex="$arg" 4335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release) 4339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release="-$arg" 4340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath | xrpath) 4344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need an absolute path. 4345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 4346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 4347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "only absolute run-paths are allowed" 4349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = rpath; then 4352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$rpath " in 4353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $arg "*) ;; 4354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) rpath="$rpath $arg" ;; 4355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$xrpath " in 4358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $arg "*) ;; 4359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) xrpath="$xrpath $arg" ;; 4360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shrext) 4366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shrext_cmds="$arg" 4367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels weak) 4371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels weak_libs="$weak_libs $arg" 4372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xcclinker) 4376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags="$linker_flags $qarg" 4377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $qarg" 4378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $qarg" 4380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $qarg" 4381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xcompiler) 4384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $qarg" 4385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $qarg" 4387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $qarg" 4388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xlinker) 4391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags="$linker_flags $qarg" 4392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $wl$qarg" 4393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $wl$qarg" 4395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $wl$qarg" 4396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$prev=\"\$arg\"" 4400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # test -n "$prev" 4405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prevarg="$arg" 4407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 4409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -all-static) 4410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$link_static_flag"; then 4411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # See comment for -static flag below, for more details. 4412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $link_static_flag" 4413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $link_static_flag" 4414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -allow-undefined) 4419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: remove this flag sometime in the future. 4420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`-allow-undefined' must not be used because it is the default" 4421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -avoid-version) 4424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels avoid_version=yes 4425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlopen) 4429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=dlfiles 4430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -dlpreopen) 4434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=dlprefiles 4435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -export-dynamic) 4439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_dynamic=yes 4440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -export-symbols | -export-symbols-regex) 4444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 4445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "more than one -exported-symbols argument is not allowed" 4446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$arg" = "X-export-symbols"; then 4448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=expsyms 4449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=expsyms_regex 4451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -framework) 4456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=framework 4457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -inst-prefix-dir) 4461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=inst_prefix 4462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 4466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # so, if we see these flags be careful not to treat them like -L 4467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L[A-Z][A-Z]*:*) 4468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $with_gcc/$host in 4469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels no/*-*-irix* | /*-*-irix*) 4470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) 4478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-L' '' "$arg" 4479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir=$func_stripname_result 4480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dir"; then 4481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$#" -gt 0; then 4482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "require no space between \`-L' and \`$1'" 4483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "need path for \`-L' option" 4485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need an absolute path. 4488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $dir in 4489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 4490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir=`cd "$dir" && pwd` 4492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$absdir" && \ 4493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot determine absolute directory name of \`$dir'" 4494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$absdir" 4495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$deplibs " in 4498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -L$dir "*) ;; 4499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs -L$dir" 4501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_search_path="$lib_search_path $dir" 4502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 4507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$dllsearchpath: in 4508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$dir:"*) ;; 4509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ::) dllsearchpath=$dir;; 4510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dllsearchpath="$dllsearchpath:$dir";; 4511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$dllsearchpath: in 4513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$testbindir:"*) ;; 4514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ::) dllsearchpath=$testbindir;; 4515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dllsearchpath="$dllsearchpath:$testbindir";; 4516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 4523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 4524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 4526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # These systems don't actually have a C or math library (as such) 4527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-os2*) 4530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # These systems don't actually have a C library (as such) 4531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$arg" = "X-lc" && continue 4532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do not include libc due to us having libc/libc_r. 4535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$arg" = "X-lc" && continue 4536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 4538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Rhapsody C and math libraries are in the System framework 4539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs System.ltframework" 4540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sco3.2v5* | *-*-sco5v6*) 4543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Causes problems with __ctype 4544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$arg" = "X-lc" && continue 4545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 4547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Compiler inserts libc in the correct place for threads to work 4548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$arg" = "X-lc" && continue 4549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "X$arg" = "X-lc_r"; then 4552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do not include libc_r directly, use -pthread flag. 4555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs $arg" 4560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -module) 4564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels module=yes 4565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Tru64 UNIX uses -model [arg] to determine the layout of C++ 4569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # classes, name mangling, and exception handling. 4570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Darwin uses the -arch flag to determine output architecture. 4571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -model|-arch|-isysroot) 4572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $arg" 4573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=xcompiler 4576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $arg" 4581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$new_inherited_linker_flags " in 4584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $arg "*) ;; 4585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 4586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -multi_module) 4591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels single_module="${wl}-multi_module" 4592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-fast-install) 4596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fast_install=no 4597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-install) 4601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 4602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 4603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The PATH hackery in wrapper scripts is required on Windows 4604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # and Darwin in order for the loader to find any dlls it needs. 4605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-no-install' is ignored for $host" 4606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "assuming \`-no-fast-install' instead" 4607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fast_install=no 4608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) no_install=yes ;; 4610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -no-undefined) 4615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels allow_undefined=no 4616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -objectlist) 4620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=objectlist 4621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -o) prev=output ;; 4625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -precious-files-regex) 4627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=precious_regex 4628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -release) 4632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=release 4633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -rpath) 4637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=rpath 4638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R) 4642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=xrpath 4643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R*) 4647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-R' '' "$arg" 4648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir=$func_stripname_result 4649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need an absolute path. 4650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $dir in 4651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) ;; 4652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "only absolute run-paths are allowed" 4654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$xrpath " in 4657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $dir "*) ;; 4658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) xrpath="$xrpath $dir" ;; 4659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shared) 4664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The effects of -shared are defined in a previous loop. 4665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -shrext) 4669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=shrext 4670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -static | -static-libtool-libs) 4674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The effects of -static are defined in a previous loop. 4675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We used to do the same as -all-static on platforms that 4676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # didn't have a PIC flag, but the assumption that the effects 4677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # would be equivalent was wrong. It would break on at least 4678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Digital Unix and AIX. 4679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -thread-safe) 4683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels thread_safe=yes 4684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -version-info) 4688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=vinfo 4689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -version-number) 4693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=vinfo 4694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vinfo_number=yes 4695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -weak) 4699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=weak 4700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Wc,*) 4704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-Wc,' '' "$arg" 4705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels args=$func_stripname_result 4706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg= 4707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS=',' 4708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for flag in $args; do 4709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 4710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$flag" 4711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$arg $wl$func_quote_for_eval_result" 4712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $func_quote_for_eval_result" 4713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 4715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname ' ' '' "$arg" 4716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$func_stripname_result 4717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Wl,*) 4720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-Wl,' '' "$arg" 4721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels args=$func_stripname_result 4722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg= 4723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS=',' 4724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for flag in $args; do 4725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 4726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$flag" 4727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$arg $wl$func_quote_for_eval_result" 4728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 4729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags="$linker_flags $func_quote_for_eval_result" 4730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 4732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname ' ' '' "$arg" 4733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg=$func_stripname_result 4734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Xcompiler) 4737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=xcompiler 4738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -Xlinker) 4742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=xlinker 4743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -XCClinker) 4747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=xcclinker 4748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -msg_* for osf cc 4752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -msg_*) 4753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 4754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$func_quote_for_eval_result" 4755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 4758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -r[0-9][0-9]* specifies the processor on the SGI compiler 4759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 4760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # +DA*, +DD* enable 64-bit mode on the HP compiler 4761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -q* pass through compiler args for the IBM compiler 4762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -m*, -t[45]*, -txscale* pass through architecture-specific 4763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # compiler args for GCC 4764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -F/path gives path to uninstalled frameworks, gcc on darwin 4765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 4766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # @file GCC response files 4767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 4768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 4769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 4770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$func_quote_for_eval_result" 4771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $arg" 4774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Some other compiler flag. 4778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -* | +*) 4779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 4780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$func_quote_for_eval_result" 4781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$objext) 4784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A standard object. 4785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objs="$objs $arg" 4786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 4789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A libtool-controlled object. 4790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that this really is a libtool object. 4792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_lalib_unsafe_p "$arg"; then 4793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object= 4794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object= 4795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Read the .lo file 4797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$arg" 4798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_object" || 4800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$non_pic_object" || 4801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$pic_object" = none && 4802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$non_pic_object" = none; then 4803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find name of object for \`$arg'" 4804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract subdirectory from the argument. 4807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$arg" "/" "" 4808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xdir="$func_dirname_result" 4809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pic_object" != none; then 4811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepend the subdirectory the object is found in. 4812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object="$xdir$pic_object" 4813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlfiles; then 4815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$dlfiles $pic_object" 4817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If libtool objects are unsupported, then we need to preload. 4821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev=dlprefiles 4822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # CHECK ME: I think I busted this. -Ossama 4826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlprefiles; then 4827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Preload the old-style object. 4828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$dlprefiles $pic_object" 4829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A PIC object. 4833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append libobjs " $pic_object" 4834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$pic_object" 4835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Non-PIC object. 4838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$non_pic_object" != none; then 4839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepend the subdirectory the object is found in. 4840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object="$xdir$non_pic_object" 4841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A standard non-PIC object 4843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$pic_object" || test "$pic_object" = none ; then 4845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$non_pic_object" 4846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the PIC object exists, use it instead. 4849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $xdir was prepended to $pic_object above. 4850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object="$pic_object" 4851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only an error if not doing a dry-run. 4855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_dry_run; then 4856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract subdirectory from the argument. 4857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$arg" "/" "" 4858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xdir="$func_dirname_result" 4859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lo2o "$arg" 4861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pic_object=$xdir$objdir/$func_lo2o_result 4862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels non_pic_object=$xdir$func_lo2o_result 4863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append libobjs " $pic_object" 4864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append non_pic_objects " $non_pic_object" 4865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$arg' is not a valid libtool object" 4867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$libext) 4872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # An archive. 4873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs $arg" 4874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_deplibs="$old_deplibs $arg" 4875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 4879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # A libtool-controlled library. 4880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$prev" = dlfiles; then 4882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This library was specified with -dlopen. 4883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$dlfiles $arg" 4884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$prev" = dlprefiles; then 4886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The library was specified with -dlpreopen. 4887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$dlprefiles $arg" 4888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prev= 4889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs $arg" 4891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 4893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Some other compiler argument. 4896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Unknown arguments in both finalize_command and compile_command need 4898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # to be aesthetically quoted because they are evaled later. 4899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$arg" 4900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels arg="$func_quote_for_eval_result" 4901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # arg 4903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now actually substitute the argument into the commands. 4905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$arg"; then 4906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # argument parsing loop 4910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$prev" && \ 4912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "the \`$prevarg' option requires an argument" 4913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 4915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval arg=\"$export_dynamic_flag_spec\" 4916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append compile_command " $arg" 4917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append finalize_command " $arg" 4918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs= 4921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # calculate the name of the file, without its directory 4922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$output" 4923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels outputname="$func_basename_result" 4924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs_save="$libobjs" 4925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath_var"; then 4927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # get the directories listed in $shlibpath_var 4928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 4929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 4930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shlib_search_path= 4931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 4933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 4934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$output" "/" "" 4936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_objdir="$func_dirname_result$objdir" 4937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Create the object directory. 4938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mkdir_p "$output_objdir" 4939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Determine the type of output 4941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $output in 4942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels "") 4943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify an output file" 4944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$libext) linkmode=oldlib ;; 4946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo | *.$objext) linkmode=obj ;; 4947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) linkmode=lib ;; 4948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) linkmode=prog ;; # Anything else should be a program. 4949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels specialdeplibs= 4952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs= 4954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Find all interdependent deplibs by searching for libraries 4955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # that are linked more than once (e.g. -la -lb -la) 4956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $deplibs; do 4957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_duplicate_deps ; then 4958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$libs " in 4959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 4960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs="$libs $deplib" 4963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib; then 4966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs="$predeps $libs $compiler_lib_search_path $postdeps" 4967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Compute libraries that are listed more than once in $predeps 4969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $postdeps and mark them as special (i.e., whose duplicates are 4970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # not to be eliminated). 4971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pre_post_deps= 4972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_duplicate_compiler_generated_deps; then 4973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for pre_post_dep in $predeps $postdeps; do 4974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$pre_post_deps " in 4975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 4976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 4977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pre_post_deps="$pre_post_deps $pre_post_dep" 4978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 4979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pre_post_deps= 4981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 4982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs= 4984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs= 4985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path= 4986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels need_relink=no # whether we're linking any uninstalled libtool libraries 4987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_deplibs= # not-installed libtool libraries 4988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_path= # paths that contain not-installed libtool libraries 4989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 4990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $linkmode in 4991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib) 4992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels passes="conv dlpreopen link" 4993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $dlfiles $dlprefiles; do 4994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 4995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) ;; 4996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 4997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 4998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 4999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prog) 5003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs= 5004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs= 5005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels alldeplibs=no 5006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles= 5007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles= 5008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels passes="conv scan dlopen dlpreopen link" 5009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) passes="conv" 5011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for pass in $passes; do 5015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The preopen pass in lib mode reverses $deplibs; put it back here 5016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # so that -L comes before libs that need it for instance... 5017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "lib,link"; then 5018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ## FIXME: Find the place where the list is rebuilt in the wrong 5019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ## order, and fix it there properly 5020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs= 5021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $deplibs; do 5022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs="$deplib $tmp_deplibs" 5023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$tmp_deplibs" 5025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "lib,link" || 5028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$linkmode,$pass" = "prog,scan"; then 5029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs="$deplibs" 5030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs= 5031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog; then 5033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $pass in 5034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopen) libs="$dlfiles" ;; 5035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlpreopen) libs="$dlprefiles" ;; 5036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link) 5037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs="$deplibs %DEPLIBS%" 5038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 5039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "lib,dlpreopen"; then 5043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Collect and forward deplibs of preopened libtool libs 5044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $dlprefiles; do 5045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Ignore non-libtool-libs 5046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs= 5047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $lib in 5048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) func_source "$lib" ;; 5049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Collect preopened libtool deplibs, except any this library 5052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # has declared as weak libs 5053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 5054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 5055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $weak_libs " in 5056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib_base "*) ;; 5057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) deplibs="$deplibs $deplib" ;; 5058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libs="$dlprefiles" 5062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = dlopen; then 5064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Collect dlpreopened libraries 5065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_deplibs="$deplibs" 5066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs= 5067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $libs; do 5070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib= 5071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels found=no 5072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 5073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 5074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 5075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags $deplib" 5079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib ; then 5080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$new_inherited_linker_flags " in 5081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 5082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 5089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" != lib && test "$linkmode" != prog; then 5090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-l' is ignored for archives/objects" 5091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-l' '' "$deplib" 5094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 5095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib; then 5096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 5097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 5099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for searchdir in $searchdirs; do 5101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for search_ext in .la $std_shrext .so .a; do 5102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Search the libtool library 5103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib="$searchdir/lib${name}${search_ext}" 5104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$lib"; then 5105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$search_ext" = ".la"; then 5106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels found=yes 5107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels found=no 5109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 2 5111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$found" != yes; then 5115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # deplib doesn't seem to be a libtool library 5116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 5117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else # deplib is a libtool library 5125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 5126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need to do some special things here, and not later. 5127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 5128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps " in 5129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) 5130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_lalib_p "$lib"; then 5131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels library_names= 5132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_library= 5133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$lib" 5134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for l in $old_library $library_names; do 5135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ll="$l" 5136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$ll" = "X$old_library" ; then # only static version available 5138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels found=no 5139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$lib" "" "." 5140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ladir="$func_dirname_result" 5141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib=$ladir/$old_library 5142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 5143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) ;; 5154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; # -l 5158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.ltframework) 5159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 5160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib ; then 5165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$new_inherited_linker_flags " in 5166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 5167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) 5174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $linkmode in 5175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib) 5176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$pass" = conv && continue 5178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 5179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-L' '' "$deplib" 5180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 5181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prog) 5183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = conv; then 5184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = scan; then 5188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-L' '' "$deplib" 5194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 5195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-L' is ignored for archives/objects" 5198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # linkmode 5200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; # -L 5202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R*) 5203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = link; then 5204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '-R' '' "$deplib" 5205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir=$func_stripname_result 5206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure the xrpath contains only unique directories. 5207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$xrpath " in 5208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $dir "*) ;; 5209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) xrpath="$xrpath $dir" ;; 5210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) lib="$deplib" ;; 5216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$libext) 5217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = conv; then 5218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $linkmode in 5222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib) 5223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Linking convenience modules into shared libraries is allowed, 5224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # but linking other static libraries is non-portable. 5225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $dlpreconveniencelibs " in 5226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 5227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels valid_a_lib=no 5229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplibs_check_method in 5230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels match_pattern*) 5231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $deplibs_check_method; shift 5232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 5233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 5234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels | $EGREP "$match_pattern_regex" > /dev/null; then 5235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels valid_a_lib=yes 5236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pass_all) 5239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels valid_a_lib=yes 5240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$valid_a_lib" != yes; then 5243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: Trying to link with static lib archive $deplib." 5245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 5246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 5247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 5248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because the file extensions .$libext of this argument makes me believe" 5249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** that it is just a static archive that I should not use here." 5250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the" 5253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** static library $deplib is not portable!" 5254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prog) 5261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" != link; then 5262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # linkmode 5270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; # *.$libext 5271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo | *.$objext) 5272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = conv; then 5273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$linkmode" = prog; then 5275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 5276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If there is no dlopen support or we're linking statically, 5277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # we need to preload. 5278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $deplib" 5279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$deplib $compile_deplibs" 5280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$deplib $finalize_deplibs" 5281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles="$newdlfiles $deplib" 5283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels %DEPLIBS%) 5288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels alldeplibs=yes 5289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac # case $deplib 5292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$found" = yes || test -f "$lib"; then : 5294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 5296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see that this really is a libtool archive. 5299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lalib_unsafe_p "$lib" \ 5300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels || func_fatal_error "\`$lib' is not a valid libtool archive" 5301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$lib" "" "." 5303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ladir="$func_dirname_result" 5304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlname= 5306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopen= 5307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlpreopen= 5308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir= 5309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels library_names= 5310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_library= 5311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels inherited_linker_flags= 5312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the library was installed with an old release of libtool, 5313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # it will not redefine variables installed, or shouldnotlink 5314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels installed=yes 5315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shouldnotlink=no 5316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels avoidtemprpath= 5317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Read the .la file 5320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source "$lib" 5321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Convert "-framework foo" to "foo.ltframework" 5323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$inherited_linker_flags"; then 5324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 5325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 5326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_inherited_linker_flags " in 5327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $tmp_inherited_linker_flag "*) ;; 5328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 5329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 5333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "lib,link" || 5334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$linkmode,$pass" = "prog,scan" || 5335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test "$linkmode" != prog && test "$linkmode" != lib; }; then 5336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 5337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 5338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = conv; then 5341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only check for convenience libraries 5342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$lib $deplibs" 5343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$libdir"; then 5344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$old_library"; then 5345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find name of link library for \`$lib'" 5346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # It is a libtool convenience library, so add in its objects. 5348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels convenience="$convenience $ladir/$objdir/$old_library" 5349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_convenience="$old_convenience $ladir/$objdir/$old_library" 5350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs= 5351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 5352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_duplicate_deps ; then 5354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$tmp_libs " in 5355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs="$tmp_libs $deplib" 5359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$linkmode" != prog && test "$linkmode" != lib; then 5361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$lib' is not a convenience library" 5362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $pass = conv 5365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Get the name of the library we link against. 5368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linklib= 5369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for l in $old_library $library_names; do 5370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linklib="$l" 5371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$linklib"; then 5373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot find name of link library for \`$lib'" 5374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This library was specified with -dlopen. 5377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = dlopen; then 5378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$libdir"; then 5379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 5380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dlname" || 5382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$dlopen_support" != yes || 5383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_libtool_libs" = no; then 5384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If there is no dlname, no dlopen support or we're linking 5385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # statically, we need to preload. We also need to preload any 5386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # dependent libraries so libltdl's deplib preloader doesn't 5387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # bomb out in the load deplibs phase. 5388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$dlprefiles $lib $dependency_libs" 5389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles="$newdlfiles $lib" 5391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $pass = dlopen 5394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need an absolute path. 5396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $ladir in 5397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 5398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels abs_ladir=`cd "$ladir" && pwd` 5400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$abs_ladir"; then 5401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "cannot determine absolute directory name of \`$ladir'" 5402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "passing it literally to the linker, although it might fail" 5403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels abs_ladir="$ladir" 5404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$lib" 5408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels laname="$func_basename_result" 5409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Find the relevant object directory and library name. 5411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$installed" = Xyes; then 5412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "library \`$lib' was moved." 5414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$ladir" 5415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir="$abs_ladir" 5416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir="$abs_ladir" 5417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$libdir" 5419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir="$libdir" 5420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 5422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$ladir" 5425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir="$abs_ladir" 5426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remove this search path later 5427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_path="$notinst_path $abs_ladir" 5428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$ladir/$objdir" 5430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir="$abs_ladir/$objdir" 5431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remove this search path later 5432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_path="$notinst_path $abs_ladir" 5433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $installed = yes 5435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname 'lib' '.la' "$laname" 5436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 5437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This library was specified with -dlpreopen. 5439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = dlpreopen; then 5440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$libdir" && test "$linkmode" = prog; then 5441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 5442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prefer using a static library (so that no silly _DYNAMIC symbols 5444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # are required to link). 5445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$old_library"; then 5446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$old_library" 5447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Keep a list of preopened convenience libraries to check 5448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # that they are being used correctly in the link pass. 5449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libdir" && \ 5450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 5451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Otherwise, use the dlname, so that lt_dlopen finds it. 5452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$dlname"; then 5453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$dlname" 5454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $dir/$linklib" 5456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $pass = dlpreopen 5458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$libdir"; then 5460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Link the convenience library 5461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib; then 5462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$dir/$old_library $deplibs" 5463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$linkmode,$pass" = "prog,link"; then 5464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$dir/$old_library $compile_deplibs" 5465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$dir/$old_library $finalize_deplibs" 5466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$lib $deplibs" # used for prog,scan pass 5468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog && test "$pass" != link; then 5474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path="$newlib_search_path $ladir" 5475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$lib $deplibs" 5476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linkalldeplibs=no 5478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$link_all_deplibs" != no || test -z "$library_names" || 5479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_libtool_libs" = no; then 5480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linkalldeplibs=yes 5481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs= 5484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 5485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 5486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) func_stripname '-L' '' "$deplib" 5487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path="$newlib_search_path $func_stripname_result" 5488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Need to link against all dependency_libs? 5491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkalldeplibs" = yes; then 5492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Need to hardcode shared library paths 5495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # or/and link against static libraries 5496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 5497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_duplicate_deps ; then 5499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$tmp_libs " in 5500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs="$tmp_libs $deplib" 5504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # for deplib 5505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $linkmode = prog... 5507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" = "prog,link"; then 5509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$library_names" && 5510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { { test "$prefer_static_libs" = no || 5511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$prefer_static_libs,$installed" = "built,yes"; } || 5512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$old_library"; }; then 5513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need to hardcode the library path 5514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 5515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure the rpath contains only unique directories. 5516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$temp_rpath:" in 5517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *"$absdir:"*) ;; 5518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) temp_rpath="$temp_rpath$absdir:" ;; 5519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Hardcode the library path. 5523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Skip directories that are in the system default run-time 5524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # search path. 5525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $sys_lib_dlsearch_path " in 5526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $absdir "*) ;; 5527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$compile_rpath " in 5529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $absdir "*) ;; 5530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) compile_rpath="$compile_rpath $absdir" 5531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $sys_lib_dlsearch_path " in 5535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 5536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$finalize_rpath " in 5538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 5539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" 5540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # $linkmode,$pass = prog,link... 5544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$alldeplibs" = yes && 5546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test "$deplibs_check_method" = pass_all || 5547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test "$build_libtool_libs" = yes && 5548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$library_names"; }; }; then 5549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We only need to search for static libraries 5550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 5551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_static=no # Whether the deplib will be linked statically 5555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels use_static_libs=$prefer_static_libs 5556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$use_static_libs" = built && test "$installed" = yes; then 5557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels use_static_libs=no 5558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$library_names" && 5560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test "$use_static_libs" = no || test -z "$old_library"; }; then 5561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 5562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* | *cegcc*) 5563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # No point in relinking DLLs because paths are not encoded 5564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_deplibs="$notinst_deplibs $lib" 5565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels need_relink=no 5566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$installed" = no; then 5569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels notinst_deplibs="$notinst_deplibs $lib" 5570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels need_relink=yes 5571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This is a shared library 5575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Warn about portability, can't link against -module's on some 5577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # systems (darwin). Don't bleat about dlopened modules though! 5578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopenmodule="" 5579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dlpremoduletest in $dlprefiles; do 5580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$dlpremoduletest" = "X$lib"; then 5581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlopenmodule="$dlpremoduletest" 5582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 5583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 5586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog; then 5588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: Linking the executable $output against the loadable module" 5589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the loadable module" 5591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** $linklib is not portable!" 5593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib && 5595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$hardcode_into_libs" = yes; then 5596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Hardcode the library path. 5597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Skip directories that are in the system default run-time 5598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # search path. 5599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $sys_lib_dlsearch_path " in 5600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $absdir "*) ;; 5601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$compile_rpath " in 5603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $absdir "*) ;; 5604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) compile_rpath="$compile_rpath $absdir" 5605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $sys_lib_dlsearch_path " in 5609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 5610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$finalize_rpath " in 5612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 5613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" 5614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$old_archive_from_expsyms_cmds"; then 5620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # figure out the soname 5621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $library_names 5622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 5623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels realname="$1" 5624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 5625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 5626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # use dlname if we got it. it's perfectly good, no? 5627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlname"; then 5628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels soname="$dlname" 5629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$soname_spec"; then 5630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # bleh windows 5631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 5632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | mingw* | *cegcc*) 5633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 5634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=$func_arith_result 5635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="-$major" 5636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval soname=\"$soname_spec\" 5639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels soname="$realname" 5641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make a new name for the extract_expsyms_cmds to use 5644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels soroot="$soname" 5645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$soroot" 5646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels soname="$func_basename_result" 5647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname 'lib' '.dll' "$soname" 5648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib=libimp-$func_stripname_result.a 5649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the library has no export list, then create one now 5651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$output_objdir/$soname-def"; then : 5652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "extracting exported symbol list from \`$soname'" 5654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 5655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Create $newlib 5658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$output_objdir/$newlib"; then :; else 5659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "generating import library for \`$soname'" 5660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 5661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # make sure the library variables are pointing to the new library 5663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir=$output_objdir 5664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linklib=$newlib 5665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # test -n "$old_archive_from_expsyms_cmds" 5666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog || test "$mode" != relink; then 5668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_shlibpath= 5669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir= 5670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add= 5671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_linked=yes 5672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $hardcode_action in 5673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels immediate | unsupported) 5674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_direct" = no; then 5675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$dir/$linklib" 5676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 5677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 5678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sysv4*uw2*) add_dir="-L$dir" ;; 5679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 5680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-unixware7*) add_dir="-L$dir" ;; 5681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-darwin* ) 5682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # if the lib is a (non-dlopened) module then we can not 5683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # link against it, someone is ignoring the earlier warnings 5684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if /usr/bin/file -L $add 2> /dev/null | 5685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP ": [^:]* bundle" >/dev/null ; then 5686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$dlopenmodule" != "X$lib"; then 5687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: lib $linklib is a module, not a shared library" 5688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$old_library" ; then 5689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** And there doesn't seem to be a static archive available" 5691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** The link will probably fail, sorry" 5692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$dir/$old_library" 5694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$old_library"; then 5696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$dir/$old_library" 5697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_minus_L" = no; then 5701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 5702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sunos*) add_shlibpath="$dir" ;; 5703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="-L$dir" 5705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_shlibpath_var" = no; then 5707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_shlibpath="$dir" 5708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_linked=no 5711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink) 5714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_direct" = yes && 5715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$hardcode_direct_absolute" = no; then 5716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$dir/$linklib" 5717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_minus_L" = yes; then 5718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="-L$dir" 5719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try looking first in the location we're being installed to. 5720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$inst_prefix_dir"; then 5721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $libdir in 5722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]*) 5723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="$add_dir -L$inst_prefix_dir$libdir" 5724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_shlibpath_var" = yes; then 5729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_shlibpath="$dir" 5730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_linked=no 5733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) lib_linked=no ;; 5736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$lib_linked" != yes; then 5739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "unsupported hardcode properties" 5740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$add_shlibpath"; then 5743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$compile_shlibpath: in 5744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$add_shlibpath:"*) ;; 5745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 5746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog; then 5749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 5750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add" && compile_deplibs="$add $compile_deplibs" 5751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add_dir" && deplibs="$add_dir $deplibs" 5753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add" && deplibs="$add $deplibs" 5754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_direct" != yes && 5755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$hardcode_minus_L" != yes && 5756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$hardcode_shlibpath_var" = yes; then 5757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$finalize_shlibpath: in 5758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$libdir:"*) ;; 5759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog || test "$mode" = relink; then 5766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_shlibpath= 5767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir= 5768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add= 5769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Finalize command for both is simple: just hardcode it. 5770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_direct" = yes && 5771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$hardcode_direct_absolute" = no; then 5772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$libdir/$linklib" 5773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_minus_L" = yes; then 5774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="-L$libdir" 5775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_shlibpath_var" = yes; then 5777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$finalize_shlibpath: in 5778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$libdir:"*) ;; 5779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 5780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$hardcode_automatic" = yes; then 5783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$inst_prefix_dir" && 5784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$inst_prefix_dir$libdir/$linklib" ; then 5785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$inst_prefix_dir$libdir/$linklib" 5786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="$libdir/$linklib" 5788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We cannot seem to hardcode it, guess we'll fake it. 5791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="-L$libdir" 5792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try looking first in the location we're being installed to. 5793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$inst_prefix_dir"; then 5794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $libdir in 5795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]*) 5796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add_dir="$add_dir -L$inst_prefix_dir$libdir" 5797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels add="-l$name" 5801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog; then 5804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 5805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 5806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add_dir" && deplibs="$add_dir $deplibs" 5808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$add" && deplibs="$add $deplibs" 5809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$linkmode" = prog; then 5812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Here we assume that one of hardcode_direct or hardcode_minus_L 5813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # is not unsupported. This is valid on all known static and 5814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # shared platforms. 5815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_direct" != unsupported; then 5816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$old_library" && linklib="$old_library" 5817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$dir/$linklib $compile_deplibs" 5818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$dir/$linklib $finalize_deplibs" 5819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="-l$name -L$dir $compile_deplibs" 5821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="-l$name -L$dir $finalize_deplibs" 5822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$build_libtool_libs" = yes; then 5824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Not a shared library 5825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$deplibs_check_method" != pass_all; then 5826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We're trying link a shared library against a static one 5827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # but the system doesn't support it. 5828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just print a warning and add the library to dependency_libs so 5830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # that the program can be linked against the static library. 5831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: This system can not link to static lib archive $lib." 5833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 5834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 5835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have." 5836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$module" = yes; then 5837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** But as you try to build a module library, libtool will still create " 5838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** a static module, that should work as long as the dlopening application" 5839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 5840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$global_symbol_pipe"; then 5841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 5842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** However, this would only work if libtool was able to extract symbol" 5843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 5844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** not find such a program. So, this module is probably useless." 5845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 5846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = no; then 5848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=module 5849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 5850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 5852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$dir/$old_library $deplibs" 5856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_static=yes 5857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # link shared/static library? 5859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = lib; then 5861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dependency_libs" && 5862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test "$hardcode_into_libs" != yes || 5863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_old_libs" = yes || 5864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$link_static" = yes; }; then 5865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Extract -R from dependency_libs 5866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels temp_deplibs= 5867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $dependency_libs; do 5868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $libdir in 5869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R*) func_stripname '-R' '' "$libdir" 5870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels temp_xrpath=$func_stripname_result 5871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $xrpath " in 5872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $temp_xrpath "*) ;; 5873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) xrpath="$xrpath $temp_xrpath";; 5874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac;; 5875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) temp_deplibs="$temp_deplibs $libdir";; 5876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs="$temp_deplibs" 5879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path="$newlib_search_path $absdir" 5882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Link against this library 5883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 5884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # ... and its dependency_libs 5885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs= 5886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 5887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs="$deplib $newdependency_libs" 5888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $opt_duplicate_deps ; then 5889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$tmp_libs " in 5890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs="$tmp_libs $deplib" 5894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$link_all_deplibs" != no; then 5897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the search paths of all dependency libraries 5898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 5899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path= 5900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 5901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) path="$deplib" ;; 5902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 5903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$deplib" "" "." 5904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$func_dirname_result" 5905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We need an absolute path. 5906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $dir in 5907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 5908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir=`cd "$dir" && pwd` 5910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$absdir"; then 5911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "cannot determine absolute directory name of \`$dir'" 5912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels absdir="$dir" 5913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $GREP "^installed=no" $deplib > /dev/null; then 5917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 5918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-darwin*) 5919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels depdepl= 5920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 5921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$deplibrary_names" ; then 5922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for tmp in $deplibrary_names ; do 5923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels depdepl=$tmp 5924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$absdir/$objdir/$depdepl" ; then 5926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels depdepl="$absdir/$objdir/$depdepl" 5927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$darwin_install_name"; then 5929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 5930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 5932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 5933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path= 5934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 5938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path="-L$absdir/$objdir" 5939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libdir" && \ 5944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$deplib' is not a valid libtool archive" 5945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$absdir" != "$libdir" && \ 5946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`$deplib' seems to be moved" 5947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels path="-L$absdir" 5949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 5951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $deplibs " in 5953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $path "*) ;; 5954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) deplibs="$path $deplibs" ;; 5955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # link_all_deplibs != no 5958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi # linkmode = lib 5959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # for deplib in $libs 5960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = link; then 5961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = "prog"; then 5962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 5963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 5964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 5966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs="$newdependency_libs" 5969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" = dlpreopen; then 5970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Link the dlpreopened libraries before other libraries 5971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $save_deplibs; do 5972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplib $deplibs" 5973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" != dlopen; then 5976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$pass" != conv; then 5977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure lib_search_path contains only unique directories. 5978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib_search_path= 5979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir in $newlib_search_path; do 5980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$lib_search_path " in 5981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $dir "*) ;; 5982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) lib_search_path="$lib_search_path $dir" ;; 5983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 5984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 5985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newlib_search_path= 5986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 5988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode,$pass" != "prog,link"; then 5989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vars="deplibs" 5990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 5991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels vars="compile_deplibs finalize_deplibs" 5992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 5993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for var in $vars dependency_libs; do 5994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add libraries to $var in reverse order 5995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval tmp_libs=\"\$$var\" 5996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_libs= 5997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $tmp_libs; do 5998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: Pedantically, this is the right thing to do, so 5999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # that some nasty dependency loop isn't accidentally 6000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # broken: 6001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels #new_libs="$deplib $new_libs" 6002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Pragmatically, this seems to cause very few problems in 6003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # practice: 6004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 6005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) new_libs="$deplib $new_libs" ;; 6006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -R*) ;; 6007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # And here is the reason: when a library appears more 6009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # than once as an explicit dependence of a library, or 6010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # is implicitly linked in more than once by the 6011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # compiler, it is considered special, and multiple 6012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # occurrences thereof are not removed. Compare this 6013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # with having the same library being listed as a 6014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # dependency of multiple other libraries: in this case, 6015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # we know (pedantically, we assume) the library does not 6016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # need to be listed more than once, so we keep only the 6017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # last copy. This is not always right, but it is rare 6018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # enough that we require users that really mean to play 6019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # such unportable linking tricks to link the library 6020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # using -Wl,-lname, so that libtool does not consider it 6021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # for duplicate removal. 6022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $specialdeplibs " in 6023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) new_libs="$deplib $new_libs" ;; 6024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_libs " in 6026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 6027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_libs="$deplib $new_libs" ;; 6028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs= 6035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $new_libs; do 6036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 6037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) 6038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $tmp_libs " in 6039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 6040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) tmp_libs="$tmp_libs $deplib" ;; 6041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) tmp_libs="$tmp_libs $deplib" ;; 6044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval $var=\"$tmp_libs\" 6047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # for var 6048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Last step: remove runtime libs from dependency_libs 6050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # (they stay in deplibs) 6051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs= 6052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $dependency_libs ; do 6053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps $compiler_lib_search_path " in 6054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $i "*) 6055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels i="" 6056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$i" ; then 6059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_libs="$tmp_libs $i" 6060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs=$tmp_libs 6063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # for pass 6064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog; then 6065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$newdlfiles" 6066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$linkmode" = prog || test "$linkmode" = lib; then 6068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$newdlprefiles" 6069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $linkmode in 6072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlib) 6073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 6074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-dlopen' is ignored for archives" 6075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $deplibs" in 6078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *\ -l* | *\ -L*) 6079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-l' and \`-L' are ignored for archives" ;; 6080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$rpath" && \ 6083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-rpath' is ignored for archives" 6084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$xrpath" && \ 6086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-R' is ignored for archives" 6087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$vinfo" && \ 6089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-version-info/-version-number' is ignored for archives" 6090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$release" && \ 6092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-release' is ignored for archives" 6093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$export_symbols$export_symbols_regex" && \ 6095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-export-symbols' is ignored for archives" 6096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now set the variables for building old libraries. 6098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 6099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs="$output" 6100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objs="$objs$old_deplibs" 6101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib) 6104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure we only generate libraries of the form `libNAME.la'. 6105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $outputname in 6106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib*) 6107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname 'lib' '.la' "$outputname" 6108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 6110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libname=\"$libname_spec\" 6111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$module" = no && \ 6114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "libtool library \`$output' must begin with \`lib'" 6115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_lib_prefix" != no; then 6117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add the "lib" prefix for modules if required 6118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.la' "$outputname" 6119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 6121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libname=\"$libname_spec\" 6122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.la' "$outputname" 6124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=$func_stripname_result 6125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$objs"; then 6130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$deplibs_check_method" != pass_all; then 6131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 6132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 6135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** objects $objs is not portable!" 6136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs="$libobjs $objs" 6137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$dlself" != no && \ 6141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-dlopen self' is ignored for libtool libraries" 6142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $rpath 6144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 6145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$#" -gt 1 && \ 6146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "ignoring multiple \`-rpath's for a libtool library" 6147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels install_libdir="$1" 6149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs= 6151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$rpath"; then 6152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 6153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Building a libtool convenience library. 6154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Some compilers have problems with a `.al' extension so 6155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # convenience libraries should have the same extension an 6156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # archive normally would. 6157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs="$output_objdir/$libname.$libext $oldlibs" 6158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=convenience 6159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 6160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$vinfo" && \ 6163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 6164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$release" && \ 6166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-release' is ignored for convenience libraries" 6167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Parse the version information argument. 6170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS=':' 6171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $vinfo 0 0 0 6172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 6173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 6174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$7" && \ 6176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "too many parameters to \`-version-info'" 6177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # convert absolute version numbers to libtool ages 6179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # this retains compatibility with .la files and attempts 6180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # to make the code below a bit more comprehensible 6181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $vinfo_number in 6183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels yes) 6184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels number_major="$1" 6185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels number_minor="$2" 6186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels number_revision="$3" 6187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # 6188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # There are really only two kinds -- those that 6189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # use the current revision as the major version 6190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # and those that subtract age and use age as 6191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # a minor version. But, then there is irix 6192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # which has an extra 1 added just for fun 6193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # 6194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $version_type in 6195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin|linux|osf|windows|none) 6196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $number_major + $number_minor 6197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels current=$func_arith_result 6198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels age="$number_minor" 6199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels revision="$number_revision" 6200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels freebsd-aout|freebsd-elf|sunos) 6202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels current="$number_major" 6203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels revision="$number_minor" 6204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels age="0" 6205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels irix|nonstopux) 6207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $number_major + $number_minor 6208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels current=$func_arith_result 6209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels age="$number_minor" 6210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels revision="$number_minor" 6211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_irix_increment=no 6212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "$modename: unknown library version type \`$version_type'" 6215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels no) 6219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels current="$1" 6220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels revision="$2" 6221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels age="$3" 6222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check that each of the things are valid numbers. 6226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $current in 6227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 6228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "CURRENT \`$current' must be a nonnegative integer" 6230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 6231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $revision in 6235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 6236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "REVISION \`$revision' must be a nonnegative integer" 6238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 6239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $age in 6243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 6244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "AGE \`$age' must be a nonnegative integer" 6246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 6247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$age" -gt "$current"; then 6251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_error "AGE \`$age' is greater than the current interface number \`$current'" 6252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$vinfo' is not valid version information" 6253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Calculate the version variables. 6256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major= 6257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix= 6258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring= 6259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $version_type in 6260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels none) ;; 6261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin) 6263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Like Linux, but with the current version available in 6264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # verstring for coding it into the library header 6265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 6266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=.$func_arith_result 6267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="$major.$age.$revision" 6268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Darwin ld doesn't like 0 for these options... 6269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current + 1 6270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels minor_current=$func_arith_result 6271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 6272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 6273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels freebsd-aout) 6276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=".$current" 6277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".$current.$revision"; 6278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels freebsd-elf) 6281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=".$current" 6282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".$current" 6283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels irix | nonstopux) 6286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$lt_irix_increment" = "Xno"; then 6287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 6288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age + 1 6290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=$func_arith_result 6292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $version_type in 6294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels nonstopux) verstring_prefix=nonstopux ;; 6295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) verstring_prefix=sgi ;; 6296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="$verstring_prefix$major.$revision" 6298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add in all the interfaces that we are compatible with. 6300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels loop=$revision 6301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test "$loop" -ne 0; do 6302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $revision - $loop 6303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels iface=$func_arith_result 6304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $loop - 1 6305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels loop=$func_arith_result 6306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="$verstring_prefix$major.$iface:$verstring" 6307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Before this point, $major must not contain `.'. 6310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=.$major 6311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="$major.$revision" 6312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linux) 6315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 6316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=.$func_arith_result 6317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="$major.$age.$revision" 6318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels osf) 6321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 6322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=.$func_arith_result 6323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".$current.$age.$revision" 6324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="$current.$age.$revision" 6325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add in all the interfaces that we are compatible with. 6327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels loop=$age 6328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test "$loop" -ne 0; do 6329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $loop 6330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels iface=$func_arith_result 6331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $loop - 1 6332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels loop=$func_arith_result 6333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="$verstring:${iface}.0" 6334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make executables depend on our current version. 6337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="$verstring:${current}.0" 6338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels qnx) 6341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=".$current" 6342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".$current" 6343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels sunos) 6346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=".$current" 6347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".$current.$revision" 6348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels windows) 6351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Use '-' rather than '.', since we only want one 6352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # extension on DOS 8.3 filesystems. 6353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $current - $age 6354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=$func_arith_result 6355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="-$major" 6356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_configuration "unknown library version type \`$version_type'" 6360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Clear the version info if we defaulted, and they specified a release. 6364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$vinfo" && test -n "$release"; then 6365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major= 6366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $version_type in 6367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels darwin) 6368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # we can't check for "0.0" in archive_cmds due to quoting 6369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # problems, so we reset it completely 6370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring= 6371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="0.0" 6374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_version" = no; then 6377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix= 6378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=".0.0" 6380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remove version info from name if versioning should be avoided 6384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$avoid_version" = yes && test "$need_version" = no; then 6385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major= 6386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix= 6387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels verstring="" 6388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Check to see if the archive will have undefined symbols. 6391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$allow_undefined" = yes; then 6392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$allow_undefined_flag" = unsupported; then 6393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "undefined symbols not allowed in $host shared libraries" 6394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 6395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 6396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't allow undefined symbols. 6399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels allow_undefined_flag="$no_undefined_flag" 6400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_generate_dlsyms "$libname" "$libname" "yes" 6405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs="$libobjs $symfileobj" 6406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 6407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" != relink; then 6409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remove our outputs, but don't remove object files since they 6410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # may have been created when compiling PIC objects. 6411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist= 6412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tempremovelist=`$ECHO "$output_objdir/*"` 6413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for p in $tempremovelist; do 6414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $p in 6415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.$objext | *.gcno) 6416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 6418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$precious_files_regex" != "X"; then 6419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 6420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels then 6421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 6422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels removelist="$removelist $p" 6425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) ;; 6427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$removelist" && \ 6430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "${RM}r \$removelist" 6431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now set the variables for building old libraries. 6434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 6435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs="$oldlibs $output_objdir/$libname.$libext" 6436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform .lo files to .o files. 6438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 6439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Eliminate all temporary directories. 6442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels #for path in $notinst_path; do 6443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 6444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 6445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 6446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels #done 6447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$xrpath"; then 6449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the user specified any rpath flags, then add them. 6450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels temp_xrpath= 6451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $xrpath; do 6452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels temp_xrpath="$temp_xrpath -R$libdir" 6453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$finalize_rpath " in 6454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 6455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" ;; 6456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 6459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs="$temp_xrpath $dependency_libs" 6460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure dlfiles contains only unique files that won't be dlpreopened 6464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_dlfiles="$dlfiles" 6465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles= 6466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $old_dlfiles; do 6467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $dlprefiles $dlfiles " in 6468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $lib "*) ;; 6469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dlfiles="$dlfiles $lib" ;; 6470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure dlprefiles contains only unique files 6474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_dlprefiles="$dlprefiles" 6475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles= 6476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $old_dlprefiles; do 6477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$dlprefiles " in 6478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $lib "*) ;; 6479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dlprefiles="$dlprefiles $lib" ;; 6480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 6484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$rpath"; then 6485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 6486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 6487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # these systems don't actually have a c library (as such)! 6488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 6490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Rhapsody C library is in the System framework 6491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs System.ltframework" 6492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-netbsd*) 6494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't link with libc until the a.out ld.so is fixed. 6495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 6497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do not include libc due to us having libc/libc_r. 6498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sco3.2v5* | *-*-sco5v6*) 6500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Causes problems with __ctype 6501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 6503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Compiler inserts libc in the correct place for threads to work 6504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add libc to deplibs on all other systems if necessary. 6507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_need_lc" = "yes"; then 6508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$deplibs -lc" 6509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform deplibs into only deplibs that can be linked in shared. 6515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name_save=$name 6516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname_save=$libname 6517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release_save=$release 6518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix_save=$versuffix 6519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major_save=$major 6520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # I'm not sure if I'm treating the release correctly. I think 6521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # release should show up in the -l (ie -lgmp5) so we don't want to 6522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # add it in twice. Is that correct? 6523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release="" 6524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix="" 6525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major="" 6526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs= 6527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=no 6528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplibs_check_method in 6529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels pass_all) 6530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't check for shared/static. Everything works. 6531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This might be a little naive. We might want to check 6532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # whether the library exists or not. But this is on 6533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # osf3 & osf4 and I'm not really sure... Just 6534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # implementing what was already the behavior. 6535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs=$deplibs 6536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test_compile) 6538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This code stresses the "libraries are programs" paradigm to its 6539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # limits. Maybe even breaks it. We compile a program, linking it 6540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # against the deplibs as a proxy for the library. Then we can check 6541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # whether they linked in statically or dynamically with ldd. 6542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM conftest.c 6543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cat > conftest.c <<EOF 6544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels int main() { return 0; } 6545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas EckelsEOF 6546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM conftest 6547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 6548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ldd_output=`ldd conftest` 6549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $deplibs; do 6550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $i in 6551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 6552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname -l '' "$i" 6553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps " in 6556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $i "*) 6557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels i="" 6559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$i" ; then 6563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 6564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $deplib_matches; shift 6566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplib_match=$1 6567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 6574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 6575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which I believe you do not have" 6576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because a test_compile did reveal that the linker did not use it for" 6577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 6578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Error occurred in the first compile. Let's try to salvage 6588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the situation: Compile a separate program for each library. 6589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $deplibs; do 6590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $i in 6591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 6592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname -l '' "$i" 6593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM conftest 6595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 6596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ldd_output=`ldd conftest` 6597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps " in 6599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $i "*) 6600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels i="" 6602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$i" ; then 6606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 6607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $deplib_matches; shift 6609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplib_match=$1 6610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 6617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 6618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 6619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because a test_compile did reveal that the linker did not use this one" 6620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 6621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 6627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** make it link in! You will probably need to install it or some" 6628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** library that it depends on before this library will be fully" 6629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** functional. Installing it before continuing would be even better." 6630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $i" 6634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file_magic*) 6640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $deplibs_check_method; shift 6641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for a_deplib in $deplibs; do 6643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $a_deplib in 6644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 6645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname -l '' "$a_deplib" 6646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps " in 6649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $a_deplib "*) 6650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels a_deplib="" 6652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$a_deplib" ; then 6656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 6657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for potent_lib in $potential_libs; do 6660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Follow soft links. 6661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ls -lLd "$potent_lib" 2>/dev/null | 6662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP " -> " >/dev/null; then 6663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 6664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The statement above tries to avoid entering an 6666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # endless loop below, in case of cyclic links. 6667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We might still enter an endless loop, since a link 6668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # loop can be closed while we follow links, 6669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # but so what? 6670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels potlib="$potent_lib" 6671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while test -h "$potlib" 2>/dev/null; do 6672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 6673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $potliblink in 6674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 6675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 6676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 6679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $SED -e 10q | 6680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $EGREP "$file_magic_regex" > /dev/null; then 6681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels a_deplib="" 6683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 2 6684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$a_deplib" ; then 6689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 6693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 6694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 6695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because I did check the linker path looking for a file starting" 6696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$potlib" ; then 6697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 6698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** with $libname and none of the candidates passed a file format test" 6700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** using a file magic. Last file checked: $potlib" 6701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add a -L argument. 6706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # Gone through all deplibs. 6710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels match_pattern*) 6712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $deplibs_check_method; shift 6713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for a_deplib in $deplibs; do 6715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $a_deplib in 6716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -l*) 6717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname -l '' "$a_deplib" 6718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$func_stripname_result 6719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $predeps $postdeps " in 6721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $a_deplib "*) 6722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels a_deplib="" 6724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$a_deplib" ; then 6728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=`eval "\\$ECHO \"$libname_spec\""` 6729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for potent_lib in $potential_libs; do 6732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels potlib="$potent_lib" # see symlink-check above in file_magic test 6733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 6734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $EGREP "$match_pattern_regex" > /dev/null; then 6735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels a_deplib="" 6737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 2 6738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$a_deplib" ; then 6743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 6746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** I have the capability to make that library automatically link in when" 6747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** you link to this library. But I can only do this if you have a" 6748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** shared version of the library, which you do not appear to have" 6749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because I did check the linker path looking for a file starting" 6750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$potlib" ; then 6751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 6752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** with $libname and none of the candidates passed a file format test" 6754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** using a regex pattern. Last file checked: $potlib" 6755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add a -L argument. 6760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="$newdeplibs $a_deplib" 6761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done # Gone through all deplibs. 6764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels none | unknown | *) 6766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs="" 6767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 6768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 6769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for i in $predeps $postdeps ; do 6771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # can't use Xsed below, because $i might contain '/' 6772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 6773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 6776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $GREP . >/dev/null; then 6777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$deplibs_check_method" = "Xnone"; then 6779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 6780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: inter-library dependencies are not known to be supported." 6782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** All declared inter-library dependencies are being dropped." 6784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels droppeddeps=yes 6785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels versuffix=$versuffix_save 6789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels major=$major_save 6790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels release=$release_save 6791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libname=$libname_save 6792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name=$name_save 6793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 6795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 6796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # On Rhapsody replace the C library with the System framework 6797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 6798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$droppeddeps" = yes; then 6802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$module" = yes; then 6803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 6805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 6806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** a static module, that should work as long as the dlopening" 6807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** application is linked with the -dlopen flag." 6808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$global_symbol_pipe"; then 6809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** However, this would only work if libtool was able to extract symbol" 6811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 6812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** not find such a program. So, this module is probably useless." 6813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 6814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = no; then 6816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs="$output_objdir/$libname.$libext" 6817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=module 6818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 6819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 6821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** The inter-library dependencies that have been dropped here will be" 6824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** automatically added whenever a program is linked with this library" 6825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** or is declared to -dlopen it." 6826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$allow_undefined" = no; then 6828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 6829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** Since this library must not contain undefined symbols," 6830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** because either the platform does not support them or" 6831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** it was explicitly requested with -no-undefined," 6832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "*** libtool will only create a static version of it." 6833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_old_libs" = no; then 6834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldlibs="$output_objdir/$libname.$libext" 6835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=module 6836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_old_libs=yes 6837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 6839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Done checking deplibs! 6844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs=$newdeplibs 6845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Time to change all our "foo.ltframework" stuff back to "-framework foo" 6847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 6848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-darwin*) 6849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # move library search paths that coincide with paths to not yet 6856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # installed libraries to the beginning of the library search list 6857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_libs= 6858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for path in $notinst_path; do 6859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_libs " in 6860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -L$path/$objdir "*) ;; 6861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $deplibs " in 6863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -L$path/$objdir "*) 6864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_libs="$new_libs -L$path/$objdir" ;; 6865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $deplibs; do 6870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 6871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) 6872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_libs " in 6873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 6874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 6875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 6878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$new_libs" 6881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # All the library-specific variables (install_libdir is set above). 6883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels library_names= 6884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_library= 6885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlname= 6886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Test again, we may have decided not to build it any more 6888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = yes; then 6889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_into_libs" = yes; then 6890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Hardcode the library paths 6891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs= 6892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dep_rpath= 6893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$finalize_rpath" 6894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$mode" != relink && rpath="$compile_rpath$rpath" 6895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $rpath; do 6896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 6897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 6898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$hardcode_libdirs"; then 6899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$libdir" 6900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just accumulate the unique libdirs. 6902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 6903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 6904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 6906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 6907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 6908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 6912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dep_rpath="$dep_rpath $flag" 6913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$runpath_var"; then 6915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$perm_rpath " in 6916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 6917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) perm_rpath="$perm_rpath $libdir" ;; 6918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 6919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 6922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator" && 6923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$hardcode_libdirs"; then 6924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir="$hardcode_libdirs" 6925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_flag_spec_ld"; then 6926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 6927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval dep_rpath=\"$hardcode_libdir_flag_spec\" 6929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$runpath_var" && test -n "$perm_rpath"; then 6932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We should set the runpath_var. 6933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 6934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir in $perm_rpath; do 6935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$rpath$dir:" 6936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 6938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 6940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shlibpath="$finalize_shlibpath" 6943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 6944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$shlibpath"; then 6945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 6946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Get the real and link names of the library. 6949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval shared_ext=\"$shrext_cmds\" 6950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval library_names=\"$library_names_spec\" 6951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set dummy $library_names 6952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 6953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels realname="$1" 6954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 6955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$soname_spec"; then 6957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval soname=\"$soname_spec\" 6958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 6959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels soname="$realname" 6960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$dlname"; then 6962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlname=$soname 6963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lib="$output_objdir/$realname" 6966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linknames= 6967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for link 6968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 6969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linknames="$linknames $link" 6970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 6971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Use standard objects if they are pic 6973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 6974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 6975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles= 6977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 6978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 6979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols="$output_objdir/$libname.uexp" 6980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $export_symbols" 6981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 6983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels orig_export_symbols= 6984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host_os in 6985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cygwin* | mingw* | cegcc*) 6986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 6987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # exporting using user supplied symfile 6988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 6989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # and it's NOT already a .def file. Must figure out 6990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # which of the given symbols are data symbols and tag 6991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # them as such. So, trigger use of export_symbols_cmds. 6992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # export_symbols gets reassigned inside the "prepare 6993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the list of exported symbols" if statement, so the 6994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # include_expsyms logic still works. 6995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels orig_export_symbols="$export_symbols" 6996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols= 6997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels always_export_symbols=yes 6998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 6999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Prepare the list of exported symbols 7004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$export_symbols"; then 7005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 7006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "generating symbol list for \`$libname.la'" 7007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols="$output_objdir/$libname.exp" 7008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $export_symbols 7009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$export_symbols_cmds 7010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS='~' 7011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for cmd in $cmds; do 7012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmd=\"$cmd\" 7014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $cmd" 7015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_len_result 7016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$cmd" 'exit $?' 7018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels skipped_export=false 7019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The command line is too long to execute in one step. 7021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "using reloadable object file for export list..." 7022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels skipped_export=: 7023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Break out early, otherwise skipped_export may be 7024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # set to false by a later but shorter cmd. 7025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 7026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 7030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 7037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_export_symbols="$export_symbols" 7038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 7040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 7043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The given exports_symbols file has to be filtered, so filter it. 7044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: $output_objdir/$libname.filter potentially contains lots of 7046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # 's' commands which not all seds can handle. GNU sed should be fine 7047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # though. Also, the filter scales superlinearly with the number of 7048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # global variables. join(1) would be nice here, but unfortunately 7049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # isn't a blessed tool. 7050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols=$output_objdir/$libname.def 7053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs= 7057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for test_deplib in $deplibs; do 7058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $convenience " in 7059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $test_deplib "*) ;; 7060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_deplibs="$tmp_deplibs $test_deplib" 7062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels deplibs="$tmp_deplibs" 7066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$convenience"; then 7068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$whole_archive_flag_spec" && 7069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$compiler_needs_object" = yes && 7070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libobjs"; then 7071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # extract the archives, so we have objects to list. 7072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # TODO: could optimize this to just extract one archive. 7073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels whole_archive_flag_spec= 7074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$whole_archive_flag_spec"; then 7076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_libobjs=$libobjs 7077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 7079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${outputname}x" 7081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives $gentop $convenience 7084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs="$libobjs $func_extract_archives_result" 7085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 7086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 7090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval flag=\"$thread_safe_flag_spec\" 7091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels linker_flags="$linker_flags $flag" 7092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make a backup of the uninstalled library when relinking 7095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = relink; then 7096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 7097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each of the archive commands. 7100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$module" = yes && test -n "$module_cmds" ; then 7101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$module_expsym_cmds\" 7103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$module_expsym_cmds 7104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$module_cmds\" 7106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$module_cmds 7107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$archive_expsym_cmds\" 7111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$archive_expsym_cmds 7112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$archive_cmds\" 7114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$archive_cmds 7115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$skipped_export" != "X:" && 7119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $test_cmds" && 7120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_len_result && 7121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 7123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The command line is too long to link in one step, link piecewise 7125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # or, if using GNU ld and skipped_export is not :, use a linker 7126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # script. 7127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Save the value of $output and $libobjs because we want to 7129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # use them later. If we have whole_archive_flag_spec, we 7130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # want to use save_libobjs as it was before 7131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # whole_archive_flag_spec was expanded, because we can't 7132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # assume the linker understands whole_archive_flag_spec. 7133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This may have to be revisited, in case too many 7134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # convenience libraries get linked in and end up exceeding 7135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the spec. 7136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 7137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_libobjs=$libobjs 7138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_output=$output 7140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 7141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Clear the reloadable object creation command queue and 7143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # initialize k to one. 7144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test_cmds= 7145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_cmds= 7146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objlist= 7147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels last_robj= 7148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels k=1 7149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 7151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=${output_objdir}/${output_la}.lnkscript 7152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating GNU ld script: $output" 7153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO 'INPUT (' > $output 7154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj in $save_libobjs 7155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$obj" >> $output 7157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO ')' >> $output 7159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $output" 7160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 7161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=${output_objdir}/${output_la}.lnk 7162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating linker input file list: $output" 7163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : > $output 7164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels set x $save_libobjs 7165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 7166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels firstobj= 7167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$compiler_needs_object" = yes; then 7168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels firstobj="$1 " 7169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels shift 7170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj 7172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$obj" >> $output 7174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $output" 7176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$firstobj\"$file_list_spec$output\" 7177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$save_libobjs"; then 7179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating reloadable object files..." 7180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$output_objdir/$output_la-${k}.$objext 7181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$reload_cmds\" 7182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $test_cmds" 7183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len0=$func_len_result 7184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$len0 7185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Loop over the list of objects to be linked. 7187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj in $save_libobjs 7188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $obj" 7190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $len + $func_len_result 7191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_arith_result 7192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$objlist" = X || 7193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$len" -lt "$max_cmd_len"; then 7194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append objlist " $obj" 7195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The command $test_cmds is almost too long, add a 7197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # command to the queue. 7198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$k" -eq 1 ; then 7199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The first file doesn't have a previous command to add. 7200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 7201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # All subsequent reloadable object files will link in 7203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the last one created. 7204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 7205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels last_robj=$output_objdir/$output_la-${k}.$objext 7207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $k + 1 7208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels k=$func_arith_result 7209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$output_objdir/$output_la-${k}.$objext 7210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objlist=$obj 7211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $last_robj" 7212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $len0 + $func_len_result 7213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_arith_result 7214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Handle the remaining objects by creating one last 7217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # reloadable object file. All subsequent reloadable object 7218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # files will link in the last one created. 7219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 7221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$last_robj"; then 7222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 7223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $output" 7225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output= 7228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ${skipped_export-false}; then 7231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "generating symbol list for \`$libname.la'" 7232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols="$output_objdir/$libname.exp" 7233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $export_symbols 7234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs=$output 7235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Append the command to create the export file. 7236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 7238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$last_robj"; then 7239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 7240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$save_libobjs" && 7244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating a temporary reloadable object file: $output" 7245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Loop through the commands generated above and execute them. 7247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS='~' 7248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for cmd in $concat_cmds; do 7249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_silent || { 7251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand "$cmd" 7252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 7253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval "$cmd" || { 7255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_exit=$? 7256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restore the uninstalled library and exit 7258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = relink; then 7259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ( cd "$output_objdir" && \ 7260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM "${realname}T" && \ 7261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV "${realname}U" "$realname" ) 7262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $lt_exit 7265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols_regex" && ${skipped_export-false}; then 7270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if ${skipped_export-false}; then 7276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$include_expsyms"; then 7277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tmp_export_symbols="$export_symbols" 7278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 7280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$orig_export_symbols"; then 7283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The given exports_symbols file has to be filtered, so filter it. 7284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: $output_objdir/$libname.filter potentially contains lots of 7286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # 's' commands which not all seds can handle. GNU sed should be fine 7287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # though. Also, the filter scales superlinearly with the number of 7288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # global variables. join(1) would be nice here, but unfortunately 7289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # isn't a blessed tool. 7290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels export_symbols=$output_objdir/$libname.def 7293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs=$output 7298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restore the value of output. 7299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$save_output 7300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 7302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 7304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Expand the library linking commands again to reset the 7306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # value of $libobjs for piecewise linking. 7307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each of the archive commands. 7309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$module" = yes && test -n "$module_cmds" ; then 7310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$module_expsym_cmds 7312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$module_cmds 7314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$archive_expsym_cmds 7318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$archive_cmds 7320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$delfiles"; then 7325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Append the command to remove temporary files to $cmds. 7326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmds=\"\$cmds~\$RM $delfiles\" 7327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add any objects from preloaded convenience libraries 7330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlprefiles"; then 7331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${outputname}x" 7332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives $gentop $dlprefiles 7335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobjs="$libobjs $func_extract_archives_result" 7336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "X$libobjs" = "X " && libobjs= 7337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_ifs="$IFS"; IFS='~' 7340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for cmd in $cmds; do 7341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmd=\"$cmd\" 7343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_silent || { 7344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_expand "$cmd" 7345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval "func_echo $func_quote_for_expand_result" 7346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval "$cmd" || { 7348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels lt_exit=$? 7349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restore the uninstalled library and exit 7351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = relink; then 7352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ( cd "$output_objdir" && \ 7353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM "${realname}T" && \ 7354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $MV "${realname}U" "$realname" ) 7355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $lt_exit 7358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels IFS="$save_ifs" 7361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Restore the uninstalled library and exit 7363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = relink; then 7364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 7365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$convenience"; then 7367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$whole_archive_flag_spec"; then 7368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '${RM}r "$gentop"' 7369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Create links to the real library. 7376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for linkname in $linknames; do 7377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$realname" != "$linkname"; then 7378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 7379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If -module or -export-dynamic was specified, set the dlname. 7383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$module" = yes || test "$export_dynamic" = yes; then 7384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # On all known operating systems, these are identical. 7385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlname="$soname" 7386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels obj) 7391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-dlopen' is ignored for objects" 7393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $deplibs" in 7396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *\ -l* | *\ -L*) 7397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-l' and \`-L' are ignored for objects" ;; 7398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$rpath" && \ 7401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-rpath' is ignored for objects" 7402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$xrpath" && \ 7404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-R' is ignored for objects" 7405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$vinfo" && \ 7407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-version-info' is ignored for objects" 7408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$release" && \ 7410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-release' is ignored for objects" 7411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $output in 7413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 7414f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$objs$old_deplibs" && \ 7415f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "cannot build library object \`$output' from non-libtool objects" 7416f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7417f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj=$output 7418f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_lo2o "$libobj" 7419f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels obj=$func_lo2o_result 7420f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7421f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7422f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libobj= 7423f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels obj="$output" 7424f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7425f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7426f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7427f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the old objects. 7428f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $obj $libobj 7429f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7430f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Objects from convenience libraries. This assumes 7431f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # single-version convenience libraries. Whenever we create 7432f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # different ones for PIC/non-PIC, this we'll have to duplicate 7433f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the extraction. 7434f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels reload_conv_objs= 7435f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop= 7436f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # reload_cmds runs $LD directly, so let us get rid of 7437f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # -Wl from whole_archive_flag_spec and hope we can get by with 7438f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # turning comma into space.. 7439f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wl= 7440f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7441f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$convenience"; then 7442f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$whole_archive_flag_spec"; then 7443f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 7444f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 7445f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7446f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${obj}x" 7447f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7448f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7449f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives $gentop $convenience 7450f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels reload_conv_objs="$reload_objs $func_extract_archives_result" 7451f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7452f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7453f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7454f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Create the old-style object. 7455f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 7456f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7457f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output="$obj" 7458f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$reload_cmds" 'exit $?' 7459f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7460f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Exit if we aren't doing a library object file. 7461f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$libobj"; then 7462f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$gentop"; then 7463f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '${RM}r "$gentop"' 7464f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7465f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7466f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7467f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7468f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7469f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" != yes; then 7470f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$gentop"; then 7471f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '${RM}r "$gentop"' 7472f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7473f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7474f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Create an invalid libtool object if no PIC, so that we don't 7475f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # accidentally link it into a program. 7476f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $show "echo timestamp > $libobj" 7477f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 7478f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7479f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7480f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7481f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$pic_flag" || test "$pic_mode" != default; then 7482f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only do commands if we really have different PIC objects. 7483f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels reload_objs="$libobjs $reload_conv_objs" 7484f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output="$libobj" 7485f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$reload_cmds" 'exit $?' 7486f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7487f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7488f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$gentop"; then 7489f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '${RM}r "$gentop"' 7490f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7491f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7492f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7493f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7494f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7495f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels prog) 7496f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7497f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin*) func_stripname '' '.exe' "$output" 7498f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$func_stripname_result.exe;; 7499f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7500f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$vinfo" && \ 7501f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-version-info' is ignored for programs" 7502f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7503f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$release" && \ 7504f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`-release' is ignored for programs" 7505f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7506f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$preload" = yes \ 7507f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && test "$dlopen_support" = unknown \ 7508f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && test "$dlopen_self" = unknown \ 7509f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels && test "$dlopen_self_static" = unknown && \ 7510f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 7511f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7512f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7513f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-rhapsody* | *-*-darwin1.[012]) 7514f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # On Rhapsody replace the C library is the System framework 7515f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 7516f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 7517f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7518f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7519f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7520f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7521f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-darwin*) 7522f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't allow lazy linking, it breaks C++ global constructors 7523f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # But is supposedly fixed on 10.4 or later (yay!). 7524f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$tagname" = CXX ; then 7525f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 7526f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 10.[0123]) 7527f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command="$compile_command ${wl}-bind_at_load" 7528f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command="$finalize_command ${wl}-bind_at_load" 7529f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7530f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7531f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7532f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7533f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7534f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 7535f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7536f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7537f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7538f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7539f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # move library search paths that coincide with paths to not yet 7540f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # installed libraries to the beginning of the library search list 7541f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_libs= 7542f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for path in $notinst_path; do 7543f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_libs " in 7544f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -L$path/$objdir "*) ;; 7545f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7546f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $compile_deplibs " in 7547f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" -L$path/$objdir "*) 7548f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels new_libs="$new_libs -L$path/$objdir" ;; 7549f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7550f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7551f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7552f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7553f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $compile_deplibs; do 7554f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 7555f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -L*) 7556f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $new_libs " in 7557f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $deplib "*) ;; 7558f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 7559f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7560f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7561f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) new_libs="$new_libs $deplib" ;; 7562f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7563f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7564f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_deplibs="$new_libs" 7565f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7566f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7567f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command="$compile_command $compile_deplibs" 7568f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command="$finalize_command $finalize_deplibs" 7569f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7570f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$rpath$xrpath"; then 7571f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # If the user specified any rpath flags, then add them. 7572f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $rpath $xrpath; do 7573f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This is the magic to use -rpath. 7574f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$finalize_rpath " in 7575f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 7576f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_rpath="$finalize_rpath $libdir" ;; 7577f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7578f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7579f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7580f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7581f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now hardcode the library paths 7582f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 7583f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs= 7584f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $compile_rpath $finalize_rpath; do 7585f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 7586f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 7587f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$hardcode_libdirs"; then 7588f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$libdir" 7589f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7590f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just accumulate the unique libdirs. 7591f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7592f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7593f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7594f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7595f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7596f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7597f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7598f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7599f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7600f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 7601f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$rpath $flag" 7602f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7603f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$runpath_var"; then 7604f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$perm_rpath " in 7605f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 7606f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) perm_rpath="$perm_rpath $libdir" ;; 7607f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7608f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7609f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7610f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 7611f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 7612f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$dllsearchpath: in 7613f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$libdir:"*) ;; 7614f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ::) dllsearchpath=$libdir;; 7615f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dllsearchpath="$dllsearchpath:$libdir";; 7616f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7617f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case :$dllsearchpath: in 7618f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *":$testbindir:"*) ;; 7619f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ::) dllsearchpath=$testbindir;; 7620f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) dllsearchpath="$dllsearchpath:$testbindir";; 7621f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7622f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7623f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7624f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7625f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 7626f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator" && 7627f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$hardcode_libdirs"; then 7628f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir="$hardcode_libdirs" 7629f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval rpath=\" $hardcode_libdir_flag_spec\" 7630f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7631f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_rpath="$rpath" 7632f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7633f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 7634f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs= 7635f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for libdir in $finalize_rpath; do 7636f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_flag_spec"; then 7637f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator"; then 7638f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$hardcode_libdirs"; then 7639f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$libdir" 7640f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7641f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Just accumulate the unique libdirs. 7642f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7643f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7644f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7645f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7646f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7647f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7648f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7649f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7650f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7651f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval flag=\"$hardcode_libdir_flag_spec\" 7652f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$rpath $flag" 7653f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7654f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -n "$runpath_var"; then 7655f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$finalize_perm_rpath " in 7656f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $libdir "*) ;; 7657f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 7658f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7659f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7660f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7661f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Substitute the hardcoded libdirs into the rpath. 7662f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$hardcode_libdir_separator" && 7663f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$hardcode_libdirs"; then 7664f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libdir="$hardcode_libdirs" 7665f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval rpath=\" $hardcode_libdir_flag_spec\" 7666f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7667f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_rpath="$rpath" 7668f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7669f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$libobjs" && test "$build_old_libs" = yes; then 7670f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Transform all the library objects into standard objects. 7671f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7672f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 7673f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7674f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7675f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 7676f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7677f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # template prelinking step 7678f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$prelink_cmds"; then 7679f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$prelink_cmds" 'exit $?' 7680f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7681f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7682f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrappers_required=yes 7683f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7684f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* ) 7685f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" != yes; then 7686f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrappers_required=no 7687f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7688f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7689f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cegcc) 7690f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Disable wrappers for cegcc, we are cross compiling anyway. 7691f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrappers_required=no 7692f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7693f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 7694f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 7695f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels wrappers_required=no 7696f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7697f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7698f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7699f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$wrappers_required" = no; then 7700f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Replace the output file specification. 7701f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7702f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command="$compile_command$compile_rpath" 7703f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7704f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We have no uninstalled library dependencies, so finalize right now. 7705f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit_status=0 7706f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$link_command" 'exit_status=$?' 7707f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7708f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the generated files. 7709f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -f "$output_objdir/${outputname}S.${objext}"; then 7710f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 7711f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7712f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7713f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $exit_status 7714f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7715f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7716f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$compile_shlibpath$finalize_shlibpath"; then 7717f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 7718f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7719f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$finalize_shlibpath"; then 7720f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 7721f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7722f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7723f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_var= 7724f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_var= 7725f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$runpath_var"; then 7726f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$perm_rpath"; then 7727f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We should set the runpath_var. 7728f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 7729f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir in $perm_rpath; do 7730f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$rpath$dir:" 7731f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7732f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 7733f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7734f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$finalize_perm_rpath"; then 7735f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We should set the runpath_var. 7736f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath= 7737f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir in $finalize_perm_rpath; do 7738f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rpath="$rpath$dir:" 7739f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7740f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 7741f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7742f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7743f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7744f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$no_install" = yes; then 7745f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # We don't need to create a wrapper script. 7746f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 7747f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Replace the output file specification. 7748f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 7749f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the old output file. 7750f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $output 7751f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Link the executable and exit 7752f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$link_command" 'exit $?' 7753f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7754f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7755f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7756f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_action" = relink; then 7757f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Fast installation is not supported 7758f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 7759f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$finalize_var$finalize_command$finalize_rpath" 7760f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7761f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "this platform does not like uninstalled shared libraries" 7762f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_warning "\`$output' will be relinked during installation" 7763f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7764f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" != no; then 7765f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command="$finalize_var$compile_command$finalize_rpath" 7766f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" = yes; then 7767f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 7768f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7769f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # fast_install is set to needless 7770f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 7771f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7772f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7773f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command="$compile_var$compile_command$compile_rpath" 7774f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$finalize_var$finalize_command$finalize_rpath" 7775f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7776f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7777f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7778f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Replace the output file specification. 7779f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 7780f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7781f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the old output files. 7782f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 7783f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7784f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$link_command" 'exit $?' 7785f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7786f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now create the wrapper script. 7787f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating $output" 7788f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7789f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Quote the relink command for shipping. 7790f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$relink_command"; then 7791f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Preserve any variables that may affect compiler behavior 7792f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for var in $variables_saved_for_relink; do 7793f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval test -z \"\${$var+set}\"; then 7794f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 7795f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif eval var_value=\$$var; test -z "$var_value"; then 7796f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$var=; export $var; $relink_command" 7797f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7798f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$var_value" 7799f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 7800f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7801f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7802f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="(cd `pwd`; $relink_command)" 7803f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 7804f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7805f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7806f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Quote $ECHO for shipping. 7807f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 7808f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $progpath in 7809f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 7810f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 7811f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7812f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 7813f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7814f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 7815f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7816f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7817f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only actually do things if not in dry run mode. 7818f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 7819f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # win32 will think the script is a binary if it has 7820f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # a .exe suffix, so we strip it off here. 7821f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $output in 7822f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe) func_stripname '' '.exe' "$output" 7823f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output=$func_stripname_result ;; 7824f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7825f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # test for cygwin because mv fails w/o .exe extensions 7826f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7827f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin*) 7828f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exeext=.exe 7829f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$outputname" 7830f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels outputname=$func_stripname_result ;; 7831f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) exeext= ;; 7832f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7833f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host in 7834f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin* | *mingw* ) 7835f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname_and_basename "$output" "" "." 7836f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_name=$func_basename_result 7837f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output_path=$func_dirname_result 7838f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cwrappersource="$output_path/$objdir/lt-$output_name.c" 7839f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cwrapper="$output_path/$output_name.exe" 7840f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM $cwrappersource $cwrapper 7841f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 7842f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7843f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_cwrapperexe_src > $cwrappersource 7844f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7845f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # The wrapper executable is built using the $host compiler, 7846f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # because it contains $host paths and files. If cross- 7847f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # compiling, it, like the target executable, must be 7848f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # executed on the $host or under an emulation environment. 7849f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 7850f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 7851f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $STRIP $cwrapper 7852f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7853f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7854f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now, create the wrapper script for func_source use: 7855f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname $cwrapper 7856f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM $func_ltwrapper_scriptname_result 7857f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 7858f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 7859f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # note: this script will not be executed, so do not chmod. 7860f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "x$build" = "x$host" ; then 7861f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 7862f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7863f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper no > $func_ltwrapper_scriptname_result 7864f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7865f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7866f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7867f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels * ) 7868f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM $output 7869f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 7870f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7871f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_emit_wrapper no > $output 7872f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels chmod +x $output 7873f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7874f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7875f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 7876f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 7877f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7878f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7879f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7880f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # See if we need to build an old-fashioned archive. 7881f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for oldlib in $oldlibs; do 7882f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7883f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = convenience; then 7884f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$libobjs_save $symfileobj" 7885f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels addlibs="$convenience" 7886f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 7887f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7888f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$build_libtool_libs" = module; then 7889f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$libobjs_save" 7890f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels build_libtool_libs=no 7891f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7892f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$old_deplibs $non_pic_objects" 7893f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$preload" = yes && test -f "$symfileobj"; then 7894f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$oldobjs $symfileobj" 7895f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7896f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7897f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels addlibs="$old_convenience" 7898f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7899f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7900f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$addlibs"; then 7901f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${outputname}x" 7902f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7903f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7904f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives $gentop $addlibs 7905f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$oldobjs $func_extract_archives_result" 7906f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7907f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7908f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the archive commands. 7909f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 7910f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$old_archive_from_new_cmds 7911f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7912f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7913f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add any objects from preloaded convenience libraries 7914f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$dlprefiles"; then 7915f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${outputname}x" 7916f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7917f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7918f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_extract_archives $gentop $dlprefiles 7919f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$oldobjs $func_extract_archives_result" 7920f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7921f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7922f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # POSIX demands no paths to be encoded in archives. We have 7923f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # to avoid creating archives with duplicate basenames if we 7924f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # might have to extract them afterwards, e.g., when creating a 7925f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # static archive out of a convenience library, or when linking 7926f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the entirety of a libtool archive into another (currently 7927f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # not supported by libtool). 7928f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if (for obj in $oldobjs 7929f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7930f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$obj" 7931f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "$func_basename_result" 7932f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done | sort | sort -uc >/dev/null 2>&1); then 7933f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 7934f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7935f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO "copying selected object files to avoid basename conflicts..." 7936f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels gentop="$output_objdir/${outputname}x" 7937f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels generated="$generated $gentop" 7938f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mkdir_p "$gentop" 7939f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_oldobjs=$oldobjs 7940f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs= 7941f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels counter=1 7942f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj in $save_oldobjs 7943f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7944f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$obj" 7945f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objbase="$func_basename_result" 7946f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $oldobjs " in 7947f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels " ") oldobjs=$obj ;; 7948f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\ /]"$objbase "*) 7949f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels while :; do 7950f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Make sure we don't pick an alternate name that also 7951f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # overlaps. 7952f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newobj=lt$counter-$objbase 7953f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $counter + 1 7954f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels counter=$func_arith_result 7955f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $oldobjs " in 7956f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *[\ /]"$newobj "*) ;; 7957f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) if test ! -f "$gentop/$newobj"; then break; fi ;; 7958f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7959f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7960f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 7961f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs="$oldobjs $gentop/$newobj" 7962f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 7963f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) oldobjs="$oldobjs $obj" ;; 7964f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 7965f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7966f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 7967f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmds=\"$old_archive_cmds\" 7968f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 7969f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $cmds" 7970f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_len_result 7971f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7972f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels cmds=$old_archive_cmds 7973f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 7974f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the command line is too long to link in one step, link in parts 7975f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "using piecewise archive linking..." 7976f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_RANLIB=$RANLIB 7977f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels RANLIB=: 7978f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objlist= 7979f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels concat_cmds= 7980f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels save_oldobjs=$oldobjs 7981f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs= 7982f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Is there a better way of finding the last object in the list? 7983f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj in $save_oldobjs 7984f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7985f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels last_oldobj=$obj 7986f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 7987f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval test_cmds=\"$old_archive_cmds\" 7988f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $test_cmds" 7989f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len0=$func_len_result 7990f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$len0 7991f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for obj in $save_oldobjs 7992f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 7993f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_len " $obj" 7994f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_arith $len + $func_len_result 7995f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$func_arith_result 7996f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_append objlist " $obj" 7997f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$len" -lt "$max_cmd_len"; then 7998f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 7999f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8000f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the above command should be used before it gets too long 8001f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs=$objlist 8002f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$obj" = "$last_oldobj" ; then 8003f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels RANLIB=$save_RANLIB 8004f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8005f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8006f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 8007f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objlist= 8008f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels len=$len0 8009f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8010f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8011f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels RANLIB=$save_RANLIB 8012f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels oldobjs=$objlist 8013f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$oldobjs" = "X" ; then 8014f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmds=\"\$concat_cmds\" 8015f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8016f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 8017f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8018f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8019f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8020f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$cmds" 'exit $?' 8021f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8022f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8023f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$generated" && \ 8024f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "${RM}r$generated" 8025f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8026f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Now create the libtool archive. 8027f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $output in 8028f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 8029f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels old_library= 8030f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$build_old_libs" = yes && old_library="$libname.$libext" 8031f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_verbose "creating $output" 8032f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8033f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Preserve any variables that may affect compiler behavior 8034f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for var in $variables_saved_for_relink; do 8035f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if eval test -z \"\${$var+set}\"; then 8036f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 8037f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif eval var_value=\$$var; test -z "$var_value"; then 8038f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$var=; export $var; $relink_command" 8039f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8040f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_quote_for_eval "$var_value" 8041f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 8042f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8043f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8044f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Quote the link command for shipping. 8045f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 8046f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 8047f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$hardcode_automatic" = yes ; then 8048f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 8049f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8050f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8051f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only create the output if not a dry run. 8052f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_dry_run || { 8053f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for installed in no yes; do 8054f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$installed" = yes; then 8055f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -z "$install_libdir"; then 8056f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels break 8057f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8058f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels output="$output_objdir/$outputname"i 8059f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Replace all uninstalled libtool libraries with the installed ones 8060f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs= 8061f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for deplib in $dependency_libs; do 8062f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $deplib in 8063f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 8064f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$deplib" 8065f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 8066f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 8067f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libdir" && \ 8068f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$deplib' is not a valid libtool archive" 8069f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdependency_libs="$newdependency_libs $libdir/$name" 8070f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8071f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) newdependency_libs="$newdependency_libs $deplib" ;; 8072f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8073f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8074f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dependency_libs="$newdependency_libs" 8075f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles= 8076f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8077f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $dlfiles; do 8078f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $lib in 8079f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 8080f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$lib" 8081f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 8082f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8083f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libdir" && \ 8084f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$lib' is not a valid libtool archive" 8085f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles="$newdlfiles $libdir/$name" 8086f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8087f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) newdlfiles="$newdlfiles $lib" ;; 8088f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8089f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8090f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$newdlfiles" 8091f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles= 8092f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $dlprefiles; do 8093f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $lib in 8094f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 8095f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Only pass preopened files to the pseudo-archive (for 8096f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # eventual linking with the app. that links it) if we 8097f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # didn't already link the preopened objects directly into 8098f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # the library: 8099f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$lib" 8100f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 8101f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8102f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$libdir" && \ 8103f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_error "\`$lib' is not a valid libtool archive" 8104f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $libdir/$name" 8105f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8106f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8107f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8108f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$newdlprefiles" 8109f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8110f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles= 8111f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $dlfiles; do 8112f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $lib in 8113f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8114f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) abs=`pwd`"/$lib" ;; 8115f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8116f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlfiles="$newdlfiles $abs" 8117f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8118f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlfiles="$newdlfiles" 8119f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles= 8120f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for lib in $dlprefiles; do 8121f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $lib in 8122f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8123f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) abs=`pwd`"/$lib" ;; 8124f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8125f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels newdlprefiles="$newdlprefiles $abs" 8126f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8127f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dlprefiles="$newdlprefiles" 8128f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8129f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $RM $output 8130f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # place dlname in correct position for cygwin 8131f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels tdlname=$dlname 8132f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $host,$output,$installed,$module,$dlname in 8133f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 8134f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8135f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO > $output "\ 8136f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# $outputname - a libtool library file 8137f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 8138f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# 8139f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Please DO NOT delete this file! 8140f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# It is necessary for linking the library. 8141f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8142f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The name that we can dlopen(3). 8143f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdlname='$tdlname' 8144f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8145f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Names of this library. 8146f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslibrary_names='$library_names' 8147f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8148f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The name of the static archive. 8149f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsold_library='$old_library' 8150f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8151f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Linker flags that can not go in dependency_libs. 8152f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsinherited_linker_flags='$new_inherited_linker_flags' 8153f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8154f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Libraries that this one depends upon. 8155f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdependency_libs='$dependency_libs' 8156f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8157f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Names of additional weak libraries provided by this library 8158f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsweak_library_names='$weak_libs' 8159f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8160f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Version information for $libname. 8161f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelscurrent=$current 8162f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsage=$age 8163f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrevision=$revision 8164f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8165f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Is this an already installed library? 8166f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsinstalled=$installed 8167f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8168f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Should we warn about portability when linking against -modules? 8169f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsshouldnotlink=$module 8170f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8171f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Files to dlopen/dlpreopen 8172f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdlopen='$dlfiles' 8173f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsdlpreopen='$dlprefiles' 8174f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8175f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Directory that this library needs to be installed in: 8176f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelslibdir='$install_libdir'" 8177f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$installed" = no && test "$need_relink" = yes; then 8178f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $ECHO >> $output "\ 8179f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsrelink_command=\"$relink_command\"" 8180f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8181f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8182f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels } 8183f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8184f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do a symbolic link so that the libtool archive can be found in 8185f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # LD_LIBRARY_PATH before the program is installed. 8186f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 8187f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8188f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8189f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_SUCCESS 8190f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 8191f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8192f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ test "$mode" = link || test "$mode" = relink; } && 8193f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mode_link ${1+"$@"} 8194f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8195f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8196f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# func_mode_uninstall arg... 8197f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfunc_mode_uninstall () 8198f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ 8199f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels $opt_debug 8200f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels RM="$nonopt" 8201f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels files= 8202f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmforce= 8203f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit_status=0 8204f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8205f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # This variable tells wrapper scripts just to set variables rather 8206f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # than running their programs. 8207f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels libtool_install_magic="$magic" 8208f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8209f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for arg 8210f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels do 8211f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $arg in 8212f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -f) RM="$RM $arg"; rmforce=yes ;; 8213f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels -*) RM="$RM $arg" ;; 8214f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) files="$files $arg" ;; 8215f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8216f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8217f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8218f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -z "$RM" && \ 8219f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify an RM program" 8220f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8221f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmdirs= 8222f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8223f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels origobjdir="$objdir" 8224f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for file in $files; do 8225f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_dirname "$file" "" "." 8226f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels dir="$func_dirname_result" 8227f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$dir" = X.; then 8228f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objdir="$origobjdir" 8229f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8230f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objdir="$dir/$origobjdir" 8231f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8232f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_basename "$file" 8233f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels name="$func_basename_result" 8234f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$mode" = uninstall && objdir="$dir" 8235f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8236f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Remember objdir for removal later, being careful to avoid duplicates 8237f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = clean; then 8238f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $rmdirs " in 8239f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $objdir "*) ;; 8240f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) rmdirs="$rmdirs $objdir" ;; 8241f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8242f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8243f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8244f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Don't error if the file doesn't exist and rm -f was used. 8245f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if { test -L "$file"; } >/dev/null 2>&1 || 8246f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels { test -h "$file"; } >/dev/null 2>&1 || 8247f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -f "$file"; then 8248f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels : 8249f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test -d "$file"; then 8250f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit_status=1 8251f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 8252f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels elif test "$rmforce" = yes; then 8253f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels continue 8254f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8255f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8256f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$file" 8257f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8258f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $name in 8259f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.la) 8260f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Possibly a libtool archive, so verify it. 8261f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_lalib_p "$file"; then 8262f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source $dir/$name 8263f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8264f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Delete the libtool libraries and symlinks. 8265f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for n in $library_names; do 8266f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $objdir/$n" 8267f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8268f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 8269f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8270f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case "$mode" in 8271f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels clean) 8272f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case " $library_names " in 8273f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # " " in the beginning catches empty $dlname 8274f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *" $dlname "*) ;; 8275f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) rmfiles="$rmfiles $objdir/$dlname" ;; 8276f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8277f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 8278f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8279f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels uninstall) 8280f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$library_names"; then 8281f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the postuninstall commands. 8282f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8283f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8284f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8285f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$old_library"; then 8286f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do each command in the old_postuninstall commands. 8287f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8288f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8289f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # FIXME: should reinstall the best remaining shared library. 8290f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8291f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8292f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8293f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8294f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8295f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.lo) 8296f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Possibly a libtool object, so verify it. 8297f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_lalib_p "$file"; then 8298f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8299f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Read the .lo file 8300f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source $dir/$name 8301f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8302f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add PIC object to the list of files to remove. 8303f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$pic_object" && 8304f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$pic_object" != none; then 8305f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $dir/$pic_object" 8306f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8307f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8308f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Add non-PIC object to the list of files to remove. 8309f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -n "$non_pic_object" && 8310f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels test "$non_pic_object" != none; then 8311f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $dir/$non_pic_object" 8312f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8313f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8314f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8315f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8316f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *) 8317f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$mode" = clean ; then 8318f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels noexename=$name 8319f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels case $file in 8320f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels *.exe) 8321f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$file" 8322f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels file=$func_stripname_result 8323f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_stripname '' '.exe' "$name" 8324f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels noexename=$func_stripname_result 8325f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # $file with .exe has already been added to rmfiles, 8326f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # add $file without .exe 8327f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $file" 8328f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8329f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8330f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Do a test to see if this is a libtool program. 8331f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_p "$file"; then 8332f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if func_ltwrapper_executable_p "$file"; then 8333f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_ltwrapper_scriptname "$file" 8334f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 8335f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source $func_ltwrapper_scriptname_result 8336f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 8337f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels else 8338f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels relink_command= 8339f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_source $dir/$noexename 8340f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8341f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8342f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # note $name still contains .exe if it was in $file originally 8343f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # as does the version of $file that was added into $rmfiles 8344f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 8345f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "$fast_install" = yes && test -n "$relink_command"; then 8346f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $objdir/lt-$name" 8347f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8348f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test "X$noexename" != "X$name" ; then 8349f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels rmfiles="$rmfiles $objdir/lt-${noexename}.c" 8350f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8351f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8352f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8353f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels ;; 8354f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels esac 8355f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "$RM $rmfiles" 'exit_status=1' 8356f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8357f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels objdir="$origobjdir" 8358f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8359f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels # Try to remove the ${objdir}s in the directories where we deleted files 8360f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels for dir in $rmdirs; do 8361f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels if test -d "$dir"; then 8362f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_show_eval "rmdir $dir >/dev/null 2>&1" 8363f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels fi 8364f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels done 8365f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8366f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $exit_status 8367f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 8368f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8369f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels{ test "$mode" = uninstall || test "$mode" = clean; } && 8370f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_mode_uninstall ${1+"$@"} 8371f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8372f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest -z "$mode" && { 8373f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels help="$generic_help" 8374f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "you must specify a MODE" 8375f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels} 8376f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8377f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelstest -z "$exec_cmd" && \ 8378f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels func_fatal_help "invalid operation mode \`$mode'" 8379f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8380f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsif test -n "$exec_cmd"; then 8381f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels eval exec "$exec_cmd" 8382f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels exit $EXIT_FAILURE 8383f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsfi 8384f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8385f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsexit $exit_status 8386f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8387f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8388f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# The TAGs below are defined such that we never get into a situation 8389f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# in which we disable both kinds of libraries. Given conflicting 8390f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# choices, we go for a static library, that is the most portable, 8391f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# since we can't tell whether shared libraries were disabled because 8392f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# the user asked for that or because the platform doesn't support 8393f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# them. This is particularly important on AIX, because we don't 8394f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# support having both static and shared libraries enabled at the same 8395f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# time on that platform, so we default to a shared-only configuration. 8396f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# If a disable-shared tag is given, we'll fallback to a static-only 8397f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# configuration. But we'll never go from static-only to shared-only. 8398f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8399f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 8400f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbuild_libtool_libs=no 8401f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbuild_old_libs=yes 8402f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-shared 8403f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8404f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-static 8405f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckelsbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 8406f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-static 8407f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8408f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# Local Variables: 8409f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# mode:shell-script 8410f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# sh-indentation:2 8411f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# End: 8412f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels# vi:sw=2 8413f869a6f5f794dddc9bee2a9fdddecf41d99035aeLucas Eckels 8414