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